Название: работа с com портом проблема чтения данных Отправлено: BuRn от Ноябрь 01, 2011, 00:52 Проблема такая, что порт открывается, пишу в него команду, относительно устройства, write(fd,"\x05",1); 05h это запрос на устройство, после он должен мне прислать подтверждение 06h с таймаутом в пол секунды, но почему-то этого не происходит, делаю так
write(fd,"\x05",1) // успешно, возвращает 1 char buf[255]; sleep(0.5); read(fd,buf,255); // вот тут возвращает -1; т.е. данные не читаются Название: Re: работа с com портом проблема чтения данных Отправлено: Bepec от Ноябрь 01, 2011, 07:15 Проблема проста помоему(мб я и ошибаюсь), но прога у тебя считает подтверждение, если синхронизация с устройством будет ровно полсекунды, и ни миллисекундой меньше/больше.
Наводка - считывание раз в 20/60 миллисекунд. Подводка - использовать цикл. Ужастик - НЕ нужно использовать слип. Название: Re: работа с com портом проблема чтения данных Отправлено: ddrtn от Ноябрь 01, 2011, 07:41 НЕ нужно использовать слип. Если мне не изменяет склероз - sleep принимает параметр int. поэтому sleep(0.5) то же, что и sleep(0). Название: Re: работа с com портом проблема чтения данных Отправлено: BuRn от Ноябрь 01, 2011, 14:24 а не ругнулся ли он бы тогда на типы, что я передаю даубл а принимает он инт ?
Название: Re: работа с com портом проблема чтения данных Отправлено: Bepec от Ноябрь 02, 2011, 07:27 Ему то что, он простые типы преобразовывает на ходу, чтоб ты не задумывался :)
Повторюсь - слип тут не решение :) Название: Re: работа с com портом проблема чтения данных Отправлено: Странник от Ноябрь 02, 2011, 09:42 попробуйте просто ожидать событие прихода данных с таймаутом 500 мс (waitForReadyRead, waitForSingleObject или на чем вы там пишете).
Название: Re: работа с com портом проблема чтения данных Отправлено: BuRn от Ноябрь 04, 2011, 17:25 проблема решена, была в настройке порта, + таймауты ставлю через селект, т.е. ожидаю данных в течении нескольких секунд
|