----------------------------------------------------------------------------------
@MSGID: 2:5000/28 65685e5a
@REPLY: 2:5020/570.77 65678bae
@CHRS: IBMPC 2
Hello Denis!
29 Nov 23 22:02, Denis Sovkov wrote to All:
DS> Hello everybody!
DS> Ситауция следующая: имеем программу, программа открывает /dev/ttyUSB0
DS> с флагом O_RDWR - можно как записывать, так и читать. В программе два
DS> параллельных потока - один раз в 3 секунды записывать текстовыю строку
DS> в открытый дескриптор, другой считывает оттуда присланную строку
DS> ПОБАЙТО внешним устройством тогда, когда сможет и выводит на экран.
DS> Проблема в том, что во входные данные попадает часть того, что пишется
DS> в дескриптор, причем независимо от времени. Пробовал защищать
DS> дескриптор мютексом - не помогло, мусорные данные все равно попадают
DS> на вход (кстати, нужные данные при этом тоже считываются). Пробовал
DS> ставить флаг O_DSYNC - тоже не помогло. Мозможно, нужно очищать буфер
DS> (какой и как?) сразу после отправки строки. В потоках буферы
DS> используются разные - для каждого потока свой. Имею ввиду очистку
DS> выходного буфера, который пишет write. ЧЯДТ? Куда копать?
Лично я открываю так, и у меня всё работает как ожидается:
InputFd=open(SerDevice, O_RDWR | O_NOCTTY | O_SYNC );
Sergei
--- GoldED/W32 3.0.1
* Origin: ua9ov[at]dxsoft.com
http://www.dxsoft.com (2:5000/28)
SEEN-BY: 221/6 250/25 301/1 341/66 463/68 467/888
4500/1 5000/22 28 111 200
SEEN-BY: 5001/100 5005/49 5015/42 46 5019/40
5020/113 545 715 828 830 846 848
SEEN-BY: 5020/1042 2038 2992 4441 12000 5022/128
5030/49 115 500 1081 1474
SEEN-BY: 5049/1 3 5053/51 5054/8 89 5058/104
5061/133 5083/1 444 6090/1
@PATH: 5000/28 111 5020/1042 4441