RU.UNIX------------------ < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 30 из 56
 От   : Sergei Podstrigailo                 2:5000/28         30 ноя 23 10:03:22
 К    : Denis Sovkov                                          30 ноя 23 06:11:02
 Тема : Непонятки с read и write
----------------------------------------------------------------------------------
                                                                                 
@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



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх