我正在尝试设置两个处理小工具串行设备的过程" ttyGS0"。我正在使用" C"和/或" C ++"。出于各种原因,我想这样做:
"接受"和"传输"进程通过消息队列进行通信。
在这两种情况下,调控器进程都会传递从" open"操作到"发送"并且"收到"使用管道的过程。
现在,由于某种原因,接收过程正常。它从父级接收设备句柄,并且能够使用" read"使用该句柄接收从通过USB串行连接连接的PC发送的数据。
然而,当我尝试使用"写"从使用相同设备句柄的传输过程中,我收到错误9代码"无效句柄"。
有关为什么它可以用于读取过程而不是写入过程的任何想法?
" ttyGS0"被用作二进制串行端口。我将在此处包含代码,显示我如何从"州长"中打开设备。过程:
// --------------------------------------------------------------
// We will also open up the USB Serial Port (aka: "ttyGS0")
// Open the USB-Serial device for reading and writing
fUSBDev = open(USB_SERIAL_DEVICE_NAME, O_RDONLY | O_NOCTTY);
if (fUSBDev == -1)
{
fprintf(stderr, "Device open failed\n");
exit(EXIT_FAILURE);
}
rc = tcgetattr(fUSBDev, &tty);
if (rc < 0)
{
fprintf(stderr, "Failed to read device attributes.\n";
exit(EXIT_FAILURE);
}
spd = B115200;
cfsetospeed(&tty, (speed_t)spd);
cfsetispeed(&tty, (speed_t)spd);
cfmakeraw(&tty);
rc = tcsetattr(fUSBDev, TCSANOW, &tty);
if (rc < 0)
{
fprintf(stderr, "Failed to update device attributes.\n");
exit(EXIT_FAILURE);
}
fprintf(stderr, "ttyGS0 opened.\n");
谢谢你, 标记