Добрый день! Подскажите пожалуйста, возникла следующая проблема. Есть компьютер и есть микропроцессорный модуль на линукс. Так же есть FTDI преобразователь uart-usb. Когда по данному преобразователю подключал uart процессорного модуля к usb компьютера - данные шли туда и обратно без каких либо проблем, все четко (писал на си). Затем встала задача сделать петлю - подключить через преобразователь uart-usb uart процессорного модуля к его же usb. В итоге когда отправляю или принимаю данные через /dev/ttyO0 (uart) - все работает. Когда принимаю по /dev/ttyUSB0 (usb) - тоже. А вот когда отправляю по /dev/ttyUSB0, то данные доходят до адресата, но то что отправил тут же возвращается и приходит и на сам /dev/ttyUSB0. Если просто отправлять данные, при этом не принимать их с другой стороны - такой проблемы не возникает. Подскажите пожалуйста, с чем это может быть связано. Выложу кусок кода, который отвечает за передачу (в отдельном потоке)
int res_send;
while (1){
if (send1 == 1){
res_send = write(fd, buf_send, PACKAGE + 1 );
}
usleep(10000);
}
и прием/ответ с другой стороны
fd_set myDescriptors;
struct timeval tv;
tv.tv_sec = 2;
tv.tv_usec = 0;
int sel;
while (1)
{
FD_ZERO(&myDescriptors);
FD_SET(fd, &myDescriptors);
sel = select(fp+1, &myDescriptors, 0, 0, &tv);
if (sel < 1)
usleep(3000);
else{
res = read(fd,buf,256);
sum = sum + res;
if ((res > 3)&&(buf[0] == 0x35)){// без этого условия все что я отправляю тут же возвращается,
на это следует ответ, который так же возвращается и тд без остановки. 0x35 это код символа массив
из которого посылаю сюда, отвечаю уже другим символом
buf_send[res-1] = 0xA;
res_send = write(fd, buf_send, res );
sumSend = sumSend + res;
}
}
}