我编了一个串口通信的程序。用串口线连接到一块开发板上,首先运行我的程序,然后再启动开发板。接着就会出现"帧错误"(comFrame)或“中断”(comBreak)的事件。
我的程序如下,请各位帮我看看,究竟是什么原因?不胜感激!Private Sub Form_Load()
With MSComm1 '初始化串口
.CommPort = 1 '使用Com1口
.Settings = "19200,N,8,1" '设置通讯参数
.RThreshold = 1
.SThreshold = 1
.Handshaking = comXOnXoff
.InBufferSize = 1024 '设置MSComm1接收缓冲区为40字节
.OutBufferSize = 512 '设置MSComm1发送缓冲区为2字节
.InputMode = 1 '设置接收数据模式为二进制形式
.PortOpen = True '打开串口
End withEnd Sub
Private Sub MSComm1_OnComm() Dim Indata As Variant '接收原始数据
Dim Data As String '转换后的数据
Select Case MSComm1.CommEvent Case comEvReceive '有接收事件发生
Indata = MSComm1.Input
Data = StrConv(Indata, vbUnicode) ShowData txtTerm, (StrConv(Indata, vbUnicode)) '这一句是将收到的串口信息显示在文本框中
' Error messages.
Case comBreak
ERMsg$ = "收到中断"
Case comCDTO
ERMsg$ = "运输检测超时"
Case comCTSTO
ERMsg$ = "CTS 超时"
Case comDCB
ERMsg$ = "检索 DCB 错误"
Case comDSRTO
ERMsg$ = "DSR 超时"
Case comFrame
ERMsg$ = "帧错误"
Case comOverrun
ERMsg$ = "超限错误"
Case comRxOver
ERMsg$ = "接收缓冲区溢出"
Case comRxParity
ERMsg$ = "奇偶校验错"
Case comTxFull
ERMsg$ = "传送缓冲区满"
Case Else
ERMsg$ = "未知的错误或事件"
End Select
If Len(ERMsg$) Then
Ret = MsgBox(ERMsg$, 1, "单击“取消”退出,单击“确定”忽略。")
End If
End Sub
我的程序如下,请各位帮我看看,究竟是什么原因?不胜感激!Private Sub Form_Load()
With MSComm1 '初始化串口
.CommPort = 1 '使用Com1口
.Settings = "19200,N,8,1" '设置通讯参数
.RThreshold = 1
.SThreshold = 1
.Handshaking = comXOnXoff
.InBufferSize = 1024 '设置MSComm1接收缓冲区为40字节
.OutBufferSize = 512 '设置MSComm1发送缓冲区为2字节
.InputMode = 1 '设置接收数据模式为二进制形式
.PortOpen = True '打开串口
End withEnd Sub
Private Sub MSComm1_OnComm() Dim Indata As Variant '接收原始数据
Dim Data As String '转换后的数据
Select Case MSComm1.CommEvent Case comEvReceive '有接收事件发生
Indata = MSComm1.Input
Data = StrConv(Indata, vbUnicode) ShowData txtTerm, (StrConv(Indata, vbUnicode)) '这一句是将收到的串口信息显示在文本框中
' Error messages.
Case comBreak
ERMsg$ = "收到中断"
Case comCDTO
ERMsg$ = "运输检测超时"
Case comCTSTO
ERMsg$ = "CTS 超时"
Case comDCB
ERMsg$ = "检索 DCB 错误"
Case comDSRTO
ERMsg$ = "DSR 超时"
Case comFrame
ERMsg$ = "帧错误"
Case comOverrun
ERMsg$ = "超限错误"
Case comRxOver
ERMsg$ = "接收缓冲区溢出"
Case comRxParity
ERMsg$ = "奇偶校验错"
Case comTxFull
ERMsg$ = "传送缓冲区满"
Case Else
ERMsg$ = "未知的错误或事件"
End Select
If Len(ERMsg$) Then
Ret = MsgBox(ERMsg$, 1, "单击“取消”退出,单击“确定”忽略。")
End If
End Sub
用超级终端或串口调试助手试试