C#串口接收数据

wl0326 2013-05-17 11:24:14
给位高手,我在C#中用串口接收数据时,必须的延时一下才能正确执行,现在我也找不出原因所在,串口号和波特率都对,请各位高手指点一下,下面是我的串口接收处理函数的一部分
void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(1);
try
{
buffer.Clear();
int n = comm.BytesToRead;
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
comm.Read(buf, 0, n);//读取缓冲数据
//<协议解析>
buffer.AddRange(buf);
bool data_1_catched = false;//缓存记录数据是否捕获到
//2.完整性判断
if (buffer.Count >= 6)//至少要包含头(2字节)+命令(1字节)+长度(1字节)+数据(1字节)+校验(1字节)
{

}
...全文
158 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wl0326 2013-05-21
高手,我没有找到那个帖子啊,你能不能给我传一份,谢谢。
回复
本拉灯 2013-05-21
引用 5 楼 wl0326 的回复:
高手,我没有找到那个帖子啊,你能不能给我传一份,谢谢。
http://bbs.csdn.net/topics/390316188
回复
本拉灯 2013-05-18
引用 楼主 wl0326 的回复:
给位高手,我在C#中用串口接收数据时,必须的延时一下才能正确执行,现在我也找不出原因所在,串口号和波特率都对,请各位高手指点一下,下面是我的串口接收处理函数的一部分 void comm_DataReceived(object sender, SerialDataReceivedEventArgs e) { Thread.Sleep(1); try { buffer.Clear(); int n = comm.BytesToRead; byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据 comm.Read(buf, 0, n);//读取缓冲数据 //<协议解析> buffer.AddRange(buf); bool data_1_catched = false;//缓存记录数据是否捕获到 //2.完整性判断 if (buffer.Count >= 6)//至少要包含头(2字节)+命令(1字节)+长度(1字节)+数据(1字节)+校验(1字节) { }
找找我以前给一个妹子回的贴子,就是专门处理这个的,还写了个环型缓冲池
回复
k哥哥0_0 2013-05-18
应该看msdn有关DataReceived事件的说明,确定这个事件的触发是基于什么条件。 reference: http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived(v=vs.100).aspx
回复
wl0326 2013-05-18
ghksj aoojo
回复
冰冰九公主 2013-05-18
什么叫必须的延时一下才能正确执行?
回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2013-05-17 11:24
社区公告

让您成为最强悍的C#开发者