1

我需要通过 vxworks 中的串行端口发送数据。我正在使用以下代码。但它不起作用。谁能指出出了什么问题?

int f;

if(f=open("/tyCo/1",O_RDWR,0)<0)
{
    printf("Error opening serial port.");
    return 1;
}

write(f,"hello",5);

运行此代码后,没有数据通过串行端口传输,而是通过终端(Tornado shell)传输。系统有两个串行设备/tyCo/1 和/tyCo/0。我都试过了,但问题仍然存在。

提前感谢 Likhin。

4

3 回答 3

1

你有设置波特率吗?

if (iocl(m_fd, FIOBAUDRATE, rate )) == ERROR )
{
    //throw error
}
于 2012-02-10T21:02:59.737 回答
0

如果我没记错的话,“open”命令的第三个参数是模式。除了与 UNIX 的代码可比性外,我并不真正了解 vxworks 中需要什么。简而言之 - 尝试给出一些值,例如 0644 或 0666。我认为这会有所帮助。

于 2015-03-06T19:34:14.047 回答
0

您可能使用了错误的设备名称,并且 Tornado Shell 设置为您的默认设备。来自vxdev.com

如果找不到匹配的设备名称,则 I/O 功能将指向默认设备。您可以将此默认设备设置为系统中的任何设备,包括根本没有设备,在这种情况下,无法匹配设备名称会返回错误。您可以使用 ioDefPathGet( ) 获取当前的默认路径。您可以使用 ioDefPathSet( ) 设置默认路径。

于 2014-10-17T12:30:56.297 回答