c# 串口通信问题,高分求解
我使用的是serialport类写的一个串口通信程序,在本机上使用虚拟串口,通信正常,接收都正确。
但是在我用其与下位机(DSP)进行通信的时候,发现接收的总是最后5个字符,不知道为什么,下位机一共向PC机发送1000多个字节,最后以"*****"结束。循环按字节进行发送,一次发送一个字节。但是我在PC机上接收的时候,发现问题了,当datareceiverd事件触发时,我使用messageBox.show(serialport.databyread)操作,发现对话框只出现一次,而且显示的是5,我就很纳闷为什么会这样?
我的接受代码是这样的,不在实验室啊,源码不能copy,只能手写了。
void datareceivered(....)
{
string rs="";
int k = serialPort1.byteToRead;
byte data ;
//messagebox.show(serialport1.bytetoread);
try{
data = serialport1.read(data,0,k);
rs += Encoding.ASCII.GetString(data);
}
catch(Exception ex)
{
messagebox.show(ex.message);
}
//然后是异步处理显示在textbox中 textbox.text += rs;
}
我郁闷,每次都是只能接受最后的5个字符,也就是“*****”。
希望大家做过这方面东西的,能帮我解释一下,在本机上使用虚拟串口,用串口调试精灵和自己通信,一切正常。
是不是我程序哪里有问题呢?DSP发送的数据2个电机的速度+‘#’。比如 电机1速度 电机2速度 #,一次类推,速度都是2个字节,#是1个字节。最后以5个‘*’作为结束符。再数据传输过程中,是怎么回事呢?怎么每次只能读5个字节的数据,而且是最后5个字节数据,是不是我前面读的数据被覆盖呢?我搞不明白了,希望大家能帮帮我,高分求解,一定结贴。