C#串口接收大量数据,事件触发设置
(2014-07-10 17:28:10)
标签:
it |
分类: JAVA/C#/Cpp/C语言/Python |
http://bbs.csdn.net/topics/390547909
串口的数据是以20hz频率发送形如#HEADINGA,COM1,0,19.5,FINESTEERING,1751,41243.050,00000000,9722,10985;SOL_COMPUTED,NARROW_INT,4.269080639,247.762725830,2.489746809,0.0,0.068533905,0.116395399,"AAAA",14,14,14,13,0,01,0,33*1788d10a
的数据,末尾自带换行符,可是接收数据时却是分段接受的,因为每一次触发事件我都额外加了换行符,得到的显示结果是分为好几段,并且末尾会空出一行。请问怎样设置才能保证每次触发事件接收的是完整的一条数据呢?是不是要设置threshold?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
void comm_DataReceived( object sender,
{
int n //先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte [] new byte [n]; //声明一个临时数组存储当前来的串口数据
received_count //增加接收计数
comm.Read(buf, //读取缓冲数据
builder.Clear(); //清除字符串构造器的内容
//因为要访问ui资源,所以需要使用invoke方式同步ui。
this .Invoke((EventHandler)( delegate
{
//直接按ASCII规则转换成字符串
builder.Append(Encoding.ASCII.GetString(buf));
//追加的形式添加到文本框末端,并滚动到最后。
this .txGet.AppendText(builder.ToString());
this .txGet.AppendText(“\n”);
//修改接收计数
labelGetCount.Text "Get:" +
}));
} |
串口的数据是以20hz频率发送形如#HEADINGA,COM1,0,19.5,FINESTEERING,1751,41243.050,00000000,9722,10985;SOL_COMPUTED,NARROW_INT,4.269080639,247.762725830,2.489746809,0.0,0.068533905,0.116395399,"AAAA",14,14,14,13,0,01,0,33*1788d10a
的数据,末尾自带换行符,可是接收数据时却是分段接受的,因为每一次触发事件我都额外加了换行符,得到的显示结果是分为好几段,并且末尾会空出一行。请问怎样设置才能保证每次触发事件接收的是完整的一条数据呢?是不是要设置threshold?
回复于: 2013-08-14
14:18:08