VB2010串口 发送一个字节数据
我想用VB2010编写一个串口调试助手;在发送16进制数据的时候,需要采用字节发送,程序段如下:Fori=0To255SerialPort1.Write(Chr(i))N...
我想用VB2010编写一个串口调试助手;
在发送16进制数据的时候,需要采用字节发送,程序段如下:
For i = 0 To 255
SerialPort1.Write(Chr(i))
Next
我的预期接收16进制数据会是:00~FF;
但事实上是:00~7F(后面的所有字节都显示3F)
请高手求解,谢谢 展开
在发送16进制数据的时候,需要采用字节发送,程序段如下:
For i = 0 To 255
SerialPort1.Write(Chr(i))
Next
我的预期接收16进制数据会是:00~FF;
但事实上是:00~7F(后面的所有字节都显示3F)
请高手求解,谢谢 展开
1个回答
展开全部
1)问题的原因:你用的发送方法有问题。
由于SerialPort.Encoding默认值为System.Text.ASCIIEncoding,即发送和接收都按ASCII码处理,而方法 SerialPort.Write(String strData)发送的字符串中的每个字符都被当成ASCII码处理了。ASCII是一种七位的编码,所以你收到的值 00~7F。
2)解决方法:
使用SerialPort.Write(Byte[], Int32, Int32)发送数据;
使用SerialPort.Read Method (Byte[], Int32, Int32) 或者 ReadByte() 接收数据
由于SerialPort.Encoding默认值为System.Text.ASCIIEncoding,即发送和接收都按ASCII码处理,而方法 SerialPort.Write(String strData)发送的字符串中的每个字符都被当成ASCII码处理了。ASCII是一种七位的编码,所以你收到的值 00~7F。
2)解决方法:
使用SerialPort.Write(Byte[], Int32, Int32)发送数据;
使用SerialPort.Read Method (Byte[], Int32, Int32) 或者 ReadByte() 接收数据
追问
接收是正常的,但是发送数据没弄出来,能否举个例子我试试?
SerialPort.Write(Byte[], Int32, Int32)
我试了几种串口调试助手都收不到数据。
追答
发送过程
Dim i As Byte
Dim d(0 to 255) As Byte
'初始化待发送数据
For i=0 To 255
d(i) = i
Next
'采用二进制发送
serialPort1.Wirte(d, 0, 255)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询