小弟在vxworks下先用select()等待数据,再用read()接受数据,
read()前如果不加延时,每次缓冲区只能收到一个数据就继续执行程序,
不能等一桢报文收完后再继续执行,
初始化ioctl(typFd,0,19200);
报文每镇/40ms,
请高手指点,不能在不加延时的情况下,接受到整镇报文吗(需要什么设置?)
不胜感激。
楼上的大哥,就是说,没加延时每次受到一个字符是正确的,至于受到多少字节组成一个报文完全由自己的程序来判?
根据发送周期在READ()前加适当的延时,使在发送周期内受到一个完整的报文再读出,应该不会有什么问题吧
有数据来了,发送一个消息给另外一个任务,然后用这一个任务来循环读取,程序判断头尾即可.
也可以直接挂中断实现.
看看bootConfig.c文件中的autoboot函数即可知道。
其实就是下面的代码:
(void) ioctl (consoleFd, FIONREAD, (int) &bytesRead); if (bytesRead == 0)
{
...... } else { read (consoleFd, &key, 1); }