RU.UNIX------------------ < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 29 из 56
 От   : Denis Sovkov                        2:5020/570.77     29 ноя 23 22:02:08
 К    : All                                                   29 ноя 23 22:10:02
 Тема : Непонятки с read и write
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 2:5020/570.77 65678bae
@CHRS: CP866 2
@TZUTC: 0300
@TID: hpt/lnx 1.4.0-sta 16-02-06

   Hello everybody!


  Ситауция следующая: имеем программу, программа открывает /dev/ttyUSB0
с флагом O_RDWR - можно как записывать, так и читать. В программе два
параллельных потока - один раз в 3 секунды записывать текстовыю строку в
открытый дескриптор, другой считывает оттуда присланную строку ПОБАЙТНО внешним
устройством тогда, когда сможет и выводит на экран. Проблема в том, что во
входные данные попадает часть того, что пишется в дескриптор, причем
независимо от времени. Пробовал защищать дескриптор мютексом - не помогло,
мусорные данные все равно попадают на вход (кстати, нужные данные при этом
тоже считываются). Пробовал ставить флаг O_DSYNC - тоже не помогло.
Мозможно, нужно очищать буфер (какой и как?) сразу после отправки строки. В
потоках буферы используются разные - для каждого потока свой. Имею ввиду
очистку выходного буфера, который пишет write. ЧЯДНТ? Куда копать?


Denis


--- GoldED+/LNX 1.1.5-b20180707
 * Origin:  ----> Default GoldED Origin <----  (2:5020/570.77)
SEEN-BY: 469/122 4500/1 5010/352 5019/40 5020/290
545 556 570 715 837 848 921
SEEN-BY: 5020/1042 2992 4441 12000 5022/2 128
5023/24 5030/500 1081 5034/13
SEEN-BY: 5055/73 5057/19 5061/15 5075/128 6056/1
@PATH: 5020/570 715 4441



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

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