发表于:2005-08-19 16:07:00
楼主
首先谢谢大家光临我的帖子。希望大家多多帮助。谢谢~!
串口设备:磅秤显示器
需要从显示器读出数据,转换成正常的INT数据。串口出数格式
2400,N,8,1
如果数据为14160
远程终端读出的为
100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100=0614100
求最严谨的程序。
下面是我个人写的程序,但是有时候会出现错误。有一定的几率。
错误发生在: Commconvert = CStr(CLng(StrReverse(strinput)))
这时候strinput="100=08" 等数据。
会发生类型不匹配。虽然可以一次多读点数据。截取两个=号之间的数据。但是我觉得这样的程序还是不是很严谨。希希望高人指点。
Private Sub Command1_Click()
InitComm
End Sub
Private Sub Command2_Click()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
Label1.Caption = 0
End Sub
Private Function InitComm()
With MSComm1
If .PortOpen = True Then .PortOpen = False
.CommPort = 1 '使用COM1
' .Settings = "4800,N,8,1" '设置通信口参数
.Settings = Text1.Text & Text2.Text & Text3.Text & Text4.Text
.InBufferSize = 40 '设置MSComm1接收缓冲区为40字节
.OutBufferSize = 2 '设置MSComm1发送缓冲区为2字节
.InputLen = 8 '设置Input 一次从接收缓冲读取字节数为1
.SThreshold = 8 '设置Output 一次从发送缓冲读取字节数为1
.RThreshold = 1 '设置接收一个字节产生OnComm事件
On Error Resume Next '改变错误处理的方式。
Err.Clear
.PortOpen = True '打开通信口
If Err Then '错误处理
MsgBox "串口通信无效", vbCritical, "错误"
Exit Function
End If
End With
End Function
Private Function Commconvert() As String
On Error GoTo errorconcert
Dim strinput As String
Do While MSComm1.InBufferCount < 8
DoEvents
Loop
strinput = CStr(MSComm1.Input)
MSComm1.InBufferCount = 0
strinput = Mid(strinput, 2, 7)
Commconvert = CStr(CLng(StrReverse(strinput)))
Exit Function
errorconcert:
Resume Next
End Function
Private Sub MSComm1_OnComm()
ShowNum
End Sub
Private Sub ShowNum()
Label1.Caption = Commconvert
End Sub