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。
我正在 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。