首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于MSComm控件的帧异常和中断异常

2012-09-10 
关于MSComm控件的帧错误和中断错误一不知道接口参数的设备,使用下面程序(未列出的都是默认值)能接收到看起

关于MSComm控件的帧错误和中断错误
一不知道接口参数的设备,使用下面程序(未列出的都是默认值)能接收到看起来是正确的数据,但数据到达之前会产生一个“帧错误”和两个“中断错误”,网上搜索,多数文章认为帧错误需要更改波特率,可改为其它波特率后接收到的是乱码,有那位高手知道的言语一声呀,先谢谢了!

程序:
Dim TotalStr As String '接收到的信息串

Private Sub Form_Load()
  MSComm1.RTSEnable = True
  MSComm1.RThreshold = 1
  MSComm1.SThreshold = 1
  MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
  Dim EVMsg$
  Dim ERMsg$
  Dim i As Long
  Dim tmp As String
  
  Select Case MSComm1.CommEvent
  Case comEvReceive 
  Dim Buffer As String
  Buffer = MSComm1.Input
  TotalStr = TotalStr + Buffer
   
  Case comEvSend
  EVMsg$ = "comEvSend"
  Case comEvCTS
  EVMsg$ = "被检测的 CTS 改变"
  Case comEvDSR
  EVMsg$ = "被检测的 DSR 改变"
  Case comEvCD
  EVMsg$ = "被检测的 CD 改变"
  Case comEvRing
  EVMsg$ = "电话铃响起"
  Case comEvEOF
  EVMsg$ = "被检测的文件结尾"
  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 EVMsg$ <> "" Then
  Debug.Print Now; "->"; EVMsg$
  End If
  If ERMsg$ <> "" Then
  Debug.Print Now; "->"; ERMsg$
  End If
End Sub


[解决办法]
把示波器架上,把波形存起来,慢慢看

有帧错误只能说协议还是没有完全对,只是对了大部分

热点排行