Ситауция следующая: имеем программу, программа открывает /dev/ttyUSB0
с флагом O_RDWR - можно как записывать, так и читать. В программе два параллельных потока - один раз в 3 секунды записывать текстовыю строку
в открытый дескриптор, другой считывает оттуда присланную строку
ПОБАЙТО внешним устройством тогда, когда сможет и выводит на экран. Проблема в том, что во входные данные попадает часть того, что пишется
в дескриптор, причем независимо от времени.
входные данные попадает часть того, что пишется в дескриптор,
причем независимо от времени.
Возможно, там где-то написано, что операции с сериальным /dev/ttyUSB
не thread-safe. А что тебе мешает в потоке номер 1 просто сделать slect()/poll()/epoll() на выбор и пиши/читай, и делай после этого что
тебе надо.
Возможно, там где-то написано, что операции с сериальным
/dev/ttyUSB не thread-safe. А что тебе мешает в потоке номер 1
просто сделать slect()/poll()/epoll() на выбор и пиши/читай, и
делай после этого что тебе надо.
Мешает отсутствие должной полноты знаний по IO в *NIX. Посмотрел маны
на указанные вызовы - любопытно, спасибо! Буду копать в эту сторону. Завтра я не на работе, так что проверить смогу только послезавтра наверное... Будет время по RTFMмить ))
Дык, юниксы, они такие, там треды завезли только сильно после форков.
Sysop: | Angel Ripoll |
---|---|
Location: | Madrid, Spain |
Users: | 11 |
Nodes: | 8 (0 / 8) |
Uptime: | 53:53:28 |
Calls: | 303 |
Files: | 2,759 |
Messages: | 61,495 |