求助串口编程(VB) 点击:682 | 回复:2



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于: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



hardly

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2005年8月24日
发表于:2005-08-24 15:55:00
1楼
为什么读出这么多来呢?通信协议就是这样吗?

hz568

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 33回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2004年3月21日
发表于:2005-09-10 12:37:00
2楼
不要按缓冲区数来算,先将所有数据读入变量,然后依次将变量中的'='字符取其位置,再来算.

热门招聘
相关主题

官方公众号

智造工程师