gFinger 손끝으로 만드는 세상

 

봉신 로드셀 인디게이터의 Data를 rs232 통신으로 읽어서 화면에 출력 하는 예제이다.

 

주요 코드를 소개 하면 …

 

<port open>

If comWeigher.PortOpen = True Then comWeigher.PortOpen = False
comWeigher.CommPort = 1
comWeigher.Settings = "9600,N,8,1"
comWeigher.PortOpen = True  '현재 포트를 연다.

 

<Weigher에서 오는 데이터를 분석 필터링한다>

Do
   DoEvents
   ComBuffer = ComBuffer & comWeigher.Input
   Position = InStr(1, ComBuffer, "#000", vbBinaryCompare)
   If Position > 0 Then
      ComBuffer = Mid(ComBuffer, Position)
      If InStr(1, ComBuffer, "Kg", vbBinaryCompare) Then
         Result1 = Mid$(ComBuffer, 10, 8)
         Result = ""
         For i = 1 To Len(Result1)
            If Mid(Result1, i, 1) >= "0" And Mid(Result1, i, 1) <= "9" Then
               Result = Result + Mid(Result1, i, 1)
            End If
         Next i
         Exit Do
      End If
   End If
   Text1.Text = ComBuffer
Loop While (Timer1.Enabled = True) ' 5 sec 이후에는 timer 가 중지 됨

Program Source

 

USB to RS232는 FTDI라는 칩으로 구현한것이기 때문에 FTDI Chip을 만든 제조사에서 드라이버를 받으면 오리지널을 받을 수 있다. 물론 자기가 가지고 있는 O/S와 환경에 맞는 드라이버를 찾아 설치 하면 된다.

 

http://www.ftdichip.com

다음은 중량을 측정하는 저울의 무게를 RS-232 통신으로 일정 시간 마다 읽어 Display하는 소스의 핵심 부분이다.

 

If comWeigher.PortOpen = True Then comWeigher.PortOpen = False
comWeigher.CommPort = 1
comWeigher.Settings = "9600,N,8,1"
comWeigher.PortOpen = True  '현재 포트를 연다.
Text2.Text = comWeigher.PortOpen
Timer1.Enabled = True
Timer1.Interval = 5000 ' 5 sec
buffer$ = ""

Do
   DoEvents
   buffer$ = buffer$ & comWeigher.Input
   Position = InStr(1, buffer$, "#0001    ", vbBinaryCompare)
   If Position > 0 Then
      buffer$ = Mid(buffer$, Position)
      If InStr(1, buffer$, "Kg", vbBinaryCompare) Then
         result1 = Mid$(buffer$, 10, 8)
         result = ""
         For i = 1 To Len(result1)
            If Mid(result1, i, 1) >= "0" And Mid(result1, i, 1) <= "9" Then
               result = result + Mid(result1, i, 1)
            End If
         Next i
         Exit Do
      End If
   End If
   Text1.Text = buffer$
Loop While (Timer1.Enabled = True) ' 5 sec 이후에는 timer 가 중지 됨
comWeigher.PortOpen = False  ' 포트를 닫는다.
Text2.Text = comWeigher.PortOpen
Text1.Text = Val(result)
Timer1.Enabled = False

RS232

전자 이야기2008. 9. 17. 16:14

rs232가 아직도 많이 사용 되고 있다.

참 생명도 오랜 가는 interface 방식 중의 하나다.

처음 사회에 첫발을 내디딘후 1년 정도 지나서 부터 RS232를 접했고 그게 20여년이 넘었으니....

가끔씩 RS232에 대한 자료가 필요 할때가 있어 찾아 보기도 하는데 잘 정리된 사이트 중 하나를 소개 한다.


http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html