Linux USB2Serial 的 IOCTL

Linux IOCTLs for USB2Serial

我正在 Linux 上用 C++ 开发一个程序,它与 USB2Serial 适配器交互以从远程终端获取一些信息。我可以使用以下代码在 windows 上设置 IOCTL:

 #define IOCTL_SERIAL_XOFF_COUNTER       CTL_CODE(FILE_DEVICE_SERIAL_PORT,28,METHOD_BUFFERED,FILE_ANY_ACCESS)

unsigned char xoff_counter[] = {0xd0,0x07,0x00,0x00,0x05,0x00,0x00,0x00,0x13,0x00,0x00,0x00};

        bool result = DeviceIoControl(file,IOCTL_SERIAL_XOFF_COUNTER,
                                        &xoff_counter, sizeof(xoff_counter),
                                        NULL,0,
                                        &junk,
                                        &o);

我尝试使用以下代码在 Linux 上执行相同操作:

#define SERIAL_XOFF_COUNTER 28

unsigned char xoff_counter[] = {0xd0,0x07,0x00,0x00,0x05,0x00,0x00,0x00,0x13,0x00,0x00,0x00};

int retVal = ioctl(fd,SERIAL_XOFF_COUNTER,xoff_counter);
            if(retVal < 0){
                cout << "Error while setting ioctl:"<<strerror(errno)<<endl;
            }

当我 运行 程序时出现错误:

Error while setting ioctl:Inappropriate ioctl for device

如果有人以前使用过这些 ioctl,请告诉我这个标志的 Linux 等价物是什么。
TIA!

linux 中没有串行 ioctl。该 ioctl 特定于 windows 串行驱动程序。 XON/XOFF 协议没有定义计数器,所以我无法想象这是用来做什么的。 (也许Windows正在计算接收到的XOFF字符数,但只是推测)

请参阅 termios(3) linux 的手册页以查看为 rs232 终端控制定义的 ioctl。