Новое в Linux: C ++ открытие и закрытие проблем USB-порта

Новый разработчик, Linux, C ++, USB — последовательный адаптер.

Я закончил программу, где я могу записать на USB-порт. Однако, если я изменю свой код, сделаю, войду снова как root и попытаюсь снова записать в порт, он не пройдет. Это будет работать только в том случае, если я отсоединю USB-кабель от компьютера и переустановлю его, прежде чем пытаться отправить данные снова. Если вам нужно больше информации, дайте мне знать.

Я на двух разных компьютерах и не могу копировать и вставлять, но вот суть того, что я делаю.

int fd = 0;
int iOut = 0;
char *ComPort = "/dev/ttyUSB0";

fd=open(ComPort, O_CREAT | O_RDWR | O_NOCTTY | O_NDELAY);

if(fd == -1)
cout << "unable to open" << endl;

// blah blah getting data ready to be sent
// create a block of 50 hex characters to be sent : DB

iOut = write(fd, $DB, sizeof(DB));

// blah blah error checking

close(fd);
return(0);

1

Решение

@Surt @alexfarber Я поговорил с коллегой по этому вопросу, и мы пришли к выводу, что это, скорее всего, аппаратная проблема с моим дисплеем или адаптером usb-to-serial. Я полагаю, что единственный способ, которым это может работать с этим конкретным адаптером, состоит в том, чтобы отключить питание и включить его снова, чтобы отразить то, что он будет видеть при удалении и повторной установке вручную. Я не верю, что это возможно, но я начну другую ветку со всего, с чем я могу столкнуться. Я ценю, что вы все нашли время, чтобы помочь с этим, я узнал много других вещей, которые я не знал заранее, так что это все еще было очень полезно. Еще раз, спасибо.

2

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

Взгляните на главу 3.2 здесь http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/x115.html
сначала добавьте некоторые проверки ошибок, чтобы вы могли увидеть, где произойдет сбой. Линия perror поможет там.

if (fd <0) {perror(ComPort ); exit(-1); } // note the exit which your code doesn't have.

Это должно теперь сказать вам немного больше информации и добавить

if (errno) {perror(ComPort ); exit(-1); }

после всех операций, читать, писать и устанавливать вещи на FD.

Теперь добавьте часть 3.2 в вашу программу на случай, если какое-то рукопожатие не удалось. Вы должны изменить его, чтобы он соответствовал дисплею.

Окончательная версия вашей программы может быть больше похожа на 3.3.

1

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