这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请高手指点:vxWorks下串口接受每次只能收到一个数据

共5条 1/1 1 跳转至

请高手指点:vxWorks下串口接受每次只能收到一个数据

菜鸟
2006-05-06 08:21:46     打赏

小弟在vxworks下先用select()等待数据,再用read()接受数据,

read()前如果不加延时,每次缓冲区只能收到一个数据就继续执行程序,

不能等一桢报文收完后再继续执行,

初始化ioctl(typFd,0,19200);

报文每镇/40ms,

请高手指点,不能在不加延时的情况下,接受到整镇报文吗(需要什么设置?)

不胜感激。




关键词: 高手     指点     vxWorks     串口     接受     每次     只能    

菜鸟
2006-05-06 16:54:00     打赏
2楼
请高手现身,不吝赐教。

菜鸟
2006-05-07 05:17:00     打赏
3楼

楼上的大哥,就是说,没加延时每次受到一个字符是正确的,至于受到多少字节组成一个报文完全由自己的程序来判?

根据发送周期在READ()前加适当的延时,使在发送周期内受到一个完整的报文再读出,应该不会有什么问题吧


菜鸟
2006-05-08 05:39:00     打赏
4楼

有数据来了,发送一个消息给另外一个任务,然后用这一个任务来循环读取,程序判断头尾即可.

也可以直接挂中断实现.


菜鸟
2006-05-10 17:35:00     打赏
5楼

看看bootConfig.c文件中的autoboot函数即可知道。

其实就是下面的代码:

(void) ioctl (consoleFd, FIONREAD, (int) &bytesRead);
if (bytesRead == 0)

{

......
}
else
{
read (consoleFd, &key, 1);
}


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]