|
|
- 问点串口方面的问题
作者:tearring 时间:2008-3-28 22:37:13
现在有个设备是USB转串口的
驱动是在vxworks提供的unsupported的usbAcm类驱动基础上完成的
目前应用上有需要连续写较大容量数据的要求
现在是把待发数据分批连续write(fd,buff,nBytes)
有几个问题:
1、write调用tyWrite是会阻塞的吧?阻塞的原因是rng环形缓冲区满而导致的吧?
2、write失败的话返回实际写的字节数 不等于 指定要写的字节数
这一般是在什么情况下会发生?
3、常用select的读文件描述符集来监听设备,但我自己没用过写描述符集,想问一下select能用在串口发送数据上吗?
4、连续写串口,每次写串口缓冲区大小的数据,有什么防错机制吗?我不是很懂啊
比如2发生了,我改如何处理?
5、ioctl的FIONWRITE是什么意思呢?
问了这么多,就是想请大大给个连续写串口的考虑周全的思路啊
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
作者:tearring 时间:2008-3-31 12:15:00
do 循环里面加个延时比较好
总得让出点时间给写操作吧
谢谢BZ
[em01]-------------------------------------------------------------------------------------------------------------------------------------------------------------------
作者:MyForever 时间:2008-3-31 8:48:33
do 循环里面加个延时比较好
总得让出点时间给写操作吧
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
作者:tearring 时间:2008-3-29 20:48:52
vxworks的demo理有个这个文件pkLib.c
/* wait for i/o to complete */
if (call == 0)
{
do
{
taskDelay (sysClkRateGet() / 4);
(void) ioctl (loopFd, FIONWRITE, (int) (&mule)); /* wait for out */
} while (mule != 0);
我能这样处理吗?
for()
{
write(fd,buff,len);
do{
ioctl(fd,FIONWRITE,(int)&m);
}while(m!=0);
}
不知这样可行不啊?
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|