MSCOMM控件设计通讯程序,请高手们诊断这段代码有什么问题?

wszxue 2004-06-07 12:10:55
XK3105A称重显示控制器 济南金钟电子衡器
信号格式
类型:EIA-RS232C/20mA电流环
格式:波特率:1200、2400、4800、9600
数据位:7位
停止位:1位
校验位:1位
代码: ASCII
下面是程序中用的代码,取不出数据。请大家提出看法,帮忙修改!
有兴趣者可以qq 探讨,34826075
也可发送邮件: wszxue@sohu.com

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.InBufferCount = 0
MSComm1.InputLen = 1
MSComm1.InputMode = comInputModeBinary
MSComm1.Settings = "9600,E,7,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True ' 打开端口

errhandle:
Screen.MousePointer = vbDefault

End Sub

Private Sub MSComm1_OnComm()
Dim Buffer As Variant
Dim strTemp As String
Dim bytTemp(12) As Byte
Dim i As Integer
With MSComm1
Select Case .CommEvent

Case comEvSend
Case comEvReceive

Buffer = .Input
bytTemp(0) = Buffer(0)

If bytTemp(0) = &H2 Then '判断是否为开始标记STX
.RThreshold = 0 '关闭接收事件,接收剩余的重量数据

i = 0
Do
DoEvents
If .InBufferCount > 0 Then
Buffer = .Input
i = i + 1
bytTemp(i) = Buffer(0)

End If
Loop Until i = 12
End If

strTemp = ""
For i = 2 To 12
strTemp = strTemp & Chr(bytTemp(i))
Next i

Select Case Val(bytTemp(1) And &H7)
Case 2
txtRealWeight.Text = Val(strTemp)
Case 3
txtRealWeight.Text = Format(Val(strTemp) / 10, "#0.0")
Case 4
txtRealWeight.Text = Format(Val(strTemp) / 100, "#0.00")
Case 5
txtRealWeight.Text = Format(Val(strTemp) / 1000, "#0.000")
End Select


.RThreshold = 1

Case comEvCTS '3 Clear To Send 线的状态发生变化。
Case comEvDSR '4 Data Set Ready 线的状态发生变化。该事件只在 DST 从 1 变到 0 时才发生。
Case comEvCD '5 Carrier Detect 线的状态发生变化。
Case comEvRing '6 检测到振铃信号。一些 UART(通用异步接收— 传输)可能不支持该事件。
Case comEvEOF '7 收到文件结束(ASCII 字符为 26)字符。


'下面是处理串口错误
Case comEventBreak '1001 接收到一个中断信号。
Case comEventCTSTO '1002 Clear To Send 超时。在系统规定时间内传输一个字符时,Clear To Send 线为低电平。
Case comEventDSRTO '1003 Data Set Ready 超时。在系统规定时间内传输一个字符时,Data Set Ready 线为低电平。
Case comEventFrame '1004 帧错误。硬件检测到一帧错误。
Case comEventOverrun '1006 端口超速。没有在下一个字符到达之前从硬件读取字符,该字符丢失。
Case comEventCDTO '1007 载波检测超时。在系统规定时间内传输一个字符时,Carrier Detect 线为低电平。CarrierDetect 也称为 Receive Line Signal Detect (RLSD)。
Case comEventRxOver '1008 接受缓冲区溢出。接收缓冲区没有空间。
Case comEventRxParity '1009 奇偶校验。硬件检测到奇偶校验错误
Case comEventTxFull '1010 传输缓冲区已满。传输字符时传输缓冲区已满
Case comEventDCB '1011 检索端口的设备控制块 (DCB) 时的意外错误
Case Else
End Select
End With
End Sub
...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
danielpan 2004-06-07
  • 打赏
  • 举报
回复
&H是16进制的前缀,字符串有这个前缀就可以用toint函数转换的.
wszxue 2004-06-07
  • 打赏
  • 举报
回复
有人愿意解释:&H2 、&H7 什么含义吗
dongge2000 2004-06-07
  • 打赏
  • 举报
回复
很难吧

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧