VB串口调试不通,求高手指导 点击:407 | 回复:1



京春

    
发表于:2012-02-11 14:06:55
楼主
近来用VB调试串口通信,通过MSComm控件,遇到一个奇怪的问题:
在接收到一个字节的时候会触发OnComm事件,但是触发此事件之后不能进入 Case comEvReceive   这个判断接收的程序段里面,
已经排除了通讯错误的可能性,单片机发送的数据也正常,百思不得其解不知道为什么?求高手指导,谢谢
下面为OnComm事件的内容:
Private Sub MSComm1_OnComm()

Dim buffer As String
Dim inbyte() As Byte
Dim num1 As Integer
On Error GoTo Err
Select Case MSComm1.CommEvent
    Case comEvReceive ‘接收数据处理,comevSend为发送数据,comEventRxParity为对奇偶校验错误进行处理
        MSComm1.InputLen = 0 ‘一次性全部读入
        MSComm1.RThreshold = 0 ‘禁止生成事件
        inbyte = MSComm1.Input
        Label8.Caption = 12 ‘检测是否接收到数据
        For num1 = LBound(inbyte) To UBound(inbyte)
            buffer = buffer + Hex(inbyte(num1)) +chr(32)
        Next num1
End Select

‘Label8.Caption = num
‘可能需要将采集到的四位数据整合起来  见调试结果
‘获取十进制测量电压数据
‘If Len(Trim(Mid(buffer, 1, 2))) = 1 Then
‘datatemp(num) = Val("&H" &mid(buffer, 3, 2) & Str("0") &mid(buffer, 1, 2)) * 0.001
‘Else
‘datatemp(num) = Val("&H" &mid(buffer, 3, 2) &mid(buffer, 1, 2)) * 0.001
‘End If
‘显示测量值
collect_time = Label12.Caption
If datatemp(num) >= 0 Then
collect_value = Format$(datatemp(num), "0.000") ‘十进制数字,保留三位小数
num = num + 1
Cells(num + 1, 1) = collect_time ‘将数据写入excel表格
Cells(num + 1, 2) = collect_value
‘Call saveExcel
Label14.Caption = collect_time  ‘显示出当前数据
Label13.Caption = collect_value

End If
‘MSComm1.RThreshold = 1
Err:
End Sub


楼主最近还看过



上海丰盈电子科技有限公司

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 28回
  • 年度积分:0
  • 历史总积分:76
  • 注册:2010年11月04日
发表于:2012-02-16 10:20:54
1楼
本公司提供专业维修:电路板、变频器、触摸屏、人机界面、伺服器、工业电源、PCB制造设备控制电路板(转速卡,CBD,BBD,雷射测针器,X,Y轴伺服驱动器、整流机,超音波清洗机)。各行业设备控制电路板维修。您的满意就是我们的追求!欢迎广大企业、用户和消费者和我们联系。
维修热线:(021)37000273
公司网站:http://www.shdlbwx.com
SSI ļʱ