嗨,亲爱的朋友们:
下午好
我这边serialPort 缓冲区 接收到了一些16进制数据,但是我不知道这些是什么数据,需要借助于serialPort的相关方法把这些数据给读出来。亲爱的朋友们,是不是用read()方法?
代码应该怎么写呢?因为我不知道接收到的是几组16进制数据,可能是0X20 ,0X21,也可能是0X20,0X30,0X34,0X45 等等。肯定有数据到serialPOrt, 我想知道都接收到了什么数据,想通过TextBOx,把这些数据显示出来,代码应该怎么写呢?
亲爱的朋友们,进来讨论讨论吧,最好把完整的代码给写出来,我好做个参考。
勇哥,读取数据一定要用到委托吗?一定要用到虚拟串口连接吗?
@绿绿山水: 只是给你参考
@dudu: 勇哥:你看他写的:
SerialPort spSend; //spSend,spReceive用虚拟串口连接,它们之间可以相互传输数据。spSend发送数据
SerialPort spReceive; //spReceive接受数据
spSend , spReceive 这都是什么东西啊?既不是Serialport的属性,也不是Serialport的名字,真不知道他是什么意思,这代码看得我郁闷。
@dudu:
勇哥:
我写了一段代码测试,但是报错了,提示操作超时,我是写在Serialport 事件里去的,只要有数据过来,就会触发,但是为什么会操作超时呢?怎么回事?应该如何修改呢?
@绿绿山水: 参考 c#中确保数据接收完整的串口处理程序 中的代码:
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//接收数据
string str = "";
do
{
int count = serialPort.BytesToRead;
if (count <= 0)
break;
byte[] readBuffer = new byte[count];
Application.DoEvents();
serialPort.Read(readBuffer, 0, count);
str += System.Text.Encoding.Default.GetString(readBuffer);
} while (serialPort.BytesToRead > 0);
listBox1.Items.Add(str);
}
@dudu: 谢谢你,勇哥。