Lik*_*n M 1 c serial-port vxworks baud-rate
我正在编写一个vxworks任务,涉及通过串口发送数据.打开串口成功.但是当我尝试使用ioctl()系统调用设置端口的波特率时,它会失败.我在下面给出代码.任何人都可以对此有所了解吗?第二个功能总是失败......
int f, status;
if (f = open("/tyCo/1", O_RDWR, 0) == ERROR)
{
    printf("error opening serial port; exiting...");
    return 1;
}
if (status = ioctl(f, FIOBAUDRATE, 2400) == ERROR)
{
    printf("ioctl error; exiting...");
    return 1;
}
小智 5
也许有点太晚了,但上面的代码看起来像是错误的.作为比较运算符,赋值运算符的优先级较低,因此您应该编写如下代码:
if((f = open("/tyCo/1", O_RDWR, 0)) == ERROR)
{
    printf("error opening serial port; exiting...");
    return 1;
}
if((status = ioctl(f, FIOBAUDRATE, 2400)) == ERROR)
{
    printf("ioctl error; exiting...");
    return 1;
}
这样它在VxWorks中完美运行.你编写代码的方法是给f分配0或1(在这种情况下为0,因为你可以打开串口),然后尝试设置文件描述符0的波特率(我猜是stdout id).您分配的状态为0或1(在这种情况下为1,因为您无法设置波特率,因此ioctl返回-1)
| 归档时间: | 
 | 
| 查看次数: | 2895 次 | 
| 最近记录: |