안녕하세요...`~^ ^
공부하다가 또 막히는 부분이 있어서 이렇게 질문합니다.....
일반산업용 바코드리더기가 있습니다...그바코드 리더기로부터 DATA값을 읽어오려고합니다.
처음에 하이퍼 터미널을 이용해서 DATA를 수신한결과 아주..매우.....잘됩니다..;;;
아하하..그래서 아주 쉽게 생각하고 ..VB에서 텍스트박스한개놓고 TEST 를 해보았습니다.
Imports System.Threading
Imports System.Text
Imports System.IO.Ports
Public Class Form1
Private WithEvents ComPort As New System.IO.Ports.SerialPort
Dim Therad_Receive As Thread
Dim DataRead As String
Dim dataRead1 As String
Dim Read_Flag As Boolean = True
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
With ComPort
.PortName = "COM1" '통신포트 기본설정
.BaudRate = 9600
.Parity = Parity.None
.DataBits = 8
.StopBits = StopBits.One
End With
If ComPort.IsOpen = True Then
MsgBox(ComPort.PortName & "은 열려 있는 상태입니다")
End If
CheckForIllegalCrossThreadCalls = False
ComPort.Open()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
'ComPort의 DataReceived 이벤트가 발생했을경우의 처리
Private Sub ComPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles ComPort.DataReceived
Try
If Read_Flag = True Then
DataRead = ComPort.ReadExisting '포트를 읽어옵니다...(날아오는 DATA가 어떤형태인지몰라서;;)
TextBox1.Text = DataRead.ToString '읽어온 내용을 텍스트 박스에 출력합니다..
DataRead = ""
dataRead1 = ""
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
--------------------------
위와 같은 방법으로 코딩을 해서 결과를 확인한결과.....바코드를 읽을때마다 어떤경우에는 정확한 데이타가다들어오고..
어떤경우는 뒷부분만 잘려서 나오고,, 또 어떤경우는 앞부분만 나옵니다..;;;
이렇게되는 이유가 제생각으로는 그 데이트를 한바이트에 못읽어와서 나눠서 읽어오기때문에 뒤에 부분만 나온다고
생각햇는데...그게 앞부분만 나오는 경우도 있어서;;;;
어떻게 바코드의 끝이라는 것을 확인할방법이 따로 있는지 궁금합니다...;; 하이퍼터미널은 잘되는데..;;
원하는 모든데이터가 찍을때마다 탁탁...ㅋㅋ ;; 쓰다보니또 말이 길어졌습니다.;;;; 하하...죄송....답변좀부탁드립니다;;
첫댓글 시리얼 중간에서 먹어버리는것 같은데요. 바코드기야 그냥 찍으면 넘어오는 것이자나요. 종결문자는 여러키의 조합인 아스키문자 넘어왔던것 같네요. 시리얼 통신부분을 봐보세요 ^^ 제가 바코드기가 없어서 ㅡ.ㅡ
돌도끼님 답변감사 드립니다^^ 하하....이문제를 고민하면서 영어공부를 해야겠다는 생각을 많이했습니다... 하하.....어떻게 영어 쉽게 배우는법없을까여?ㅎㅎㅎㅎㅎ