1、用在PC到PC之间的简单串口通信,想实现发送多少,就一次接收多少,接收不任意截断。而使用
serialport.Read(buf,0,n);然而该函数一直是截断为多次接收的。后来发现有个serialport.ReadLine()函数。
采用如下的发送和接收模式,实现了一次发送多少,就一次接收多少。
send:serialport.WriteLine(string text) ;
read:string received=serialport.ReadLine();
上面是伪代码的形式,相信懂得该语言的人,立刻明白的。
2、后来读取byte[]类型的数据。在接收的时候,加个
public void sp_DataReceived(object sender,*** e)
{
if(sp.isopen)
{
system.threading.thread.sleep(200);//sleep 200ms
int arrivalNum=sp.BytesToRead;
if(arrivalNum>=needBytesNum)//如果现在到达的超过或等于对方传输的数据,接收
{
byte[] buf=new byte[needBytesNum];sp.read(buf,0,needBytesNum);
}
else
{
//sleep,
sp_dataRecieved(null,null);
}
}
}
依旧是伪代码的形式,大家可以稍作改动,就可以运行了。