LINUX.ORG.RU

FTDI преобразователь uart-usb отзеркаливает данные

 ,


0

1

Добрый день! Подскажите пожалуйста, возникла следующая проблема. Есть компьютер и есть микропроцессорный модуль на линукс. Так же есть 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;
         }
    }
} 

ECHO отключил при настройке порта? см. c_lflag.

И, если честно, вообще не понял ничего: какая петля, что и куда подсоединяется.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)

Можешь попробовать быстро проверить - запусти

$ stty -F /dev/ttyUSB0 -echo -echoe

проверка

$ stty --all -F /dev/ttyUSB0

должно в списке появиться -echo и -echoe. По умолчанию они включены.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.