VB读串口问题
来源:百度知道 编辑:UC知道 时间:2024/09/28 06:45:22
Private Sub Command1_Click()
Const COM% = 3
MSComm1.CommPort = 1
MSComm1.Settings = "19200,n,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
MSComm1.RTSEnable = True
End Sub
Private Sub Command2_Click()
Me.Text1 = MSComm1.InBufferCount
Me.Text2 = MSComm1.Input
End Sub
Me.Text1里有1000多个
Me.Text2里只有几个到100多个
另外, 波特率设置没问题。
要是把inputmode改成
MSComm1.InputMode = comInputModeText
那读的时候只有一个字符在input
以上这些情况都是无论间隔多少时间都一样,唯一不同的是MSComm1.InBufferCount 里面的数据,时间越长,数据越多,而用MSComm1.InputMode = comInputModeBinary 这句,input里面的数据就不稳定,有时多有时少。还有电脑串口的流控制怎么改,效果都一样。谢谢那位高手帮忙解决下,谢谢啦!
1、看看你的 PLC 波特率 的 设置,这个是否 与 MSComm1 设置的匹配;
2、你用 MSComm1 的事件 OnComm 来接收数据 试试看;
Good luck
Option Explicit
Dim strData As String
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "19200,n,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 128
MSComm1.PortOpen = True
MSComm1.RTSEnable = True
End Sub
Private Sub MSComm1_OnComm()
Dim buffer() As Byte
Dim i As Integer
Select Case MSComm1.CommEvent
Case 2
buffer = MSComm1.Input
For i = 0 To UBound(buffer)
strData = strData & Right("0" & Hex(buffer(i)), 2)
Debug.Print buffer(i)
Next
If Len(strData) = 256 Then
Text1 = strData
strData = ""
End If