 |
这是VB的问题。VB的MSComm在中文Windows下(确切地说是在所有DBCS系统下)无法传递二进制数据。你可以参考微软的Knowledge Base的文章:“Q151899 Transmitting and Receiving Binary Data with MSComm Control”,它解释了原因。在QA000051 "VB 5提示错误:"输入超出文件尾""中,我也解释了VB在中文Windows下是怎么处理字符串的。
一种办法是将>128 位的数据放入声明为 Byte数组里发送, 接受端再取出来。如:
接收:
Dim v As Variant
v = MSComm1.Input
For i = 0 To MSComm1.InBufferCount - 1
Debug.Print v(i)
Next
发送:
Dim v(10) As Byte
......
MSComm1.Output = CVar(v)
另一种办法是直接调用API,这里有一篇文章 mscomm.zip可以参考。
相关书籍:
《Visual Basic串口通信与测控应用技术实战详解(附光盘)》
《Visual Basic 串口通信技术与典型实例(附CD-ROM盘一张)》
此问题由lzzww、李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 网络与通信, network, communicate, com, com1, com2。
|