欢迎访问电子工程网!   登录 | 免费注册 ]   

bubifengyun的个人空间 http://www.eechina.com/space-uid-57884.html [收藏] [复制] [分享] [RSS]

博客

关于C# serialport的部分用法

已有 1864 次阅读2012-11-7 23:29 | 关键词: serialport, 串口接收, read, 接收不分段

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);
}
}
}
依旧是伪代码的形式,大家可以稍作改动,就可以运行了。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

回顶部