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字节)
{

}
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
什么叫必须的延时一下才能正确执行?

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧