# 请问VB通讯传送与接收binary data的问题

Posted by Zive on April 01, 1999 at 09:05:27:

请问各位VB高手：
( VB 4.0/5.0 专业版 Win95)
VB在4.0中的Mscomm control对于hex 80H 以上的字元无法正确的传送与接
收而在讨论区中经常见到有人提到VB 5.0以上已经修正此一Bug但经小弟测
试VB 5.0的Mscomm control对于hex 80H 以上的字元依然无法正确的接收请问
该Bug是否已经真正的修正? 现在的VB 6.0是否也有相同的问题?或者有其他
我不知道的方法可解决此一问题?
小弟目前想购买VB 6.0升级版解决此一问题但却担心此一Bug在VB 6.0依
然存在,请各位高手能为小弟澄清此一问题
以下附上小弟的一段小小的测试程式

Dim FileData(10) As Byte

Private Sub Command1_Click()
FileData(1) = 254
MSComm1.Output = Chr$(FileData(1))
End Sub

Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub

Private Sub MSComm1_OnComm()
Dim TmpStr As String
Dim StrLen As Long, I As Long
While MSComm1.InBufferCount > 0
TmpStr = MSComm1.Input
StrLen = Len(TmpStr)
For I = 1 To StrLen
FileData(I) = CByte(Asc(Mid(TmpStr, I, 1)))
Next I
TmpStr = ""
Wend
End Sub
'在
'Private Sub Command1_Click()
' FileData(1) = 254
' MSComm1.Output = Chr$(FileData(1))
'End Sub
'当中 FileData(1) 小于 128 以下时传送及接收皆正常
'但是当 FileData(1) 大于等于 128 以上时某些特定 Code 传送正常
'但接收却为空字元 "" ,如上例: 当 FileData(1) = 254
'Private Sub MSComm1_OnComm() 程式执行结果如下:
' MSComm1.InBufferCount > 0 为 Ture
' 当 TmpStr = MSComm1.Input 后
' StrLen = Len(TmpStr) 时 StrLen = 0
'即 MSComm1.InBufferCount > 0 但 TmpStr = MSComm1.Input 却为空字元 ""
'注:以上测试方式为通讯埠2,3脚短路下所测得的结果

Follow Ups:

- Re: 请问VB通讯传送与接收binary data的问题 大头 09:45:34 4/01/99 (1)
  - Re: 请问VB通讯传送与接收binary data的问题 dar 18:07:31 4/07/99 (0)