主题:如何触发读事件? 共有50773人关注过本帖 |
---|
Rite2009 |
1楼 |
![]() |
如何触发读事件? ![]()
我打开了几个串口,其中一个串口调用接收回调函数时,发现DataBuf[]里只有部分数据,也就是触发读事件不对。要如何设置?
也就是说我串口进来多少个字节触发读事件? |
单帖管理 | 引用 | 回复 ![]() |
Rite2009 |
2楼 |
![]() |
![]()
我用从单片机控制AD采集,然后串口发送到模块,模块串口接收。我每次发送的数据为"AT+D=+1.235436+1.235411……",大概80个字节,可是到了接收回调函数里发现DataBuf[]里就有"AT+D=+1.",后面的没了,可是我设置断点后再循环一圈,DataBuf[]里就有两次发送的数据。我用的例子程序的串口类。怎么设置串口类中的数据触发事件?也就是说在接收到多少个字节或者什么标志字符,再触发接收事件?
|
单帖管理 | 引用 | 回复 ![]() |
x10 |
3楼 |
![]() |
![]()
串口驱动程序在收到8个字节后,就会发出RxEvent。客户的应用数据格式的解析是由应用程序来完成的。一般来讲,应用程序应当有以恶搞接收解析线程,负责处理来自串口的数据,并组成应用层的数据帧。这方面可参考http://www.emtronix.com/article/article2009326.html中有关接收DL645规约数据帧的处理方法。
|
单帖管理 | 引用 | 回复 ![]() |
Rite2009 |
4楼 |
![]() |
![]()
那8个字节就触发RxEvent事件,在触发事件后我并不做读处理,然后等到下一个事件触发,甚至下下一个事件触发,直到DataBuf[]中有我的全帧数据我再去读和处理DataBuf[],然后再清空DataBuf[]行不行?
|
单帖管理 | 引用 | 回复 ![]() |
Rite2009 |
5楼 |
![]() |
![]()
貌似解决了。我在接收回调函数里把接收的数据拼接起来,直到接收到我的每一次全部数据,再做相应处理。因为我的数据帧字节数确定,所以这样可以实现,不知道会不会出问题。
另外,我程序在编译运行的时候,偶尔会弹出一个信息对话框,说First-chance   exception   in   SiCh.exe:   0xC0000005:   Access   Violation.  这是个什么问题?我已运行就到了汇编界面,然后找不到出问题的地方,貌似是哪个变量的问题。 |
单帖管理 | 引用 | 回复 ![]() |
zhl |
6楼 |
![]() |
![]()
出现这个提示,应用程序中肯定有指针的问题,需要仔细查查看。
|
单帖管理 | 引用 | 回复 ![]() |