Linux IOCTL для USB2Serial

Я разрабатываю программу на C ++ для Linux, которая взаимодействует с адаптером USB2Serial для получения некоторой информации с удаленного терминала. Я был в состоянии установить это 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 для этого флага.
ТИА!

0

Решение

В Linux нет серийного ioctl для этого. Этот ioctl специфичен для последовательного драйвера Windows. Протокол XON / XOFF не имеет определенных счетчиков, поэтому я не могу представить, для чего он используется. (возможно, Windows считает количество полученных символов XOFF, но только предположение)

Увидеть termios (3) Страница руководства Linux, чтобы увидеть ioctls, определенные для управления терминалом rs232.

1

Другие решения


По вопросам рекламы [email protected]