ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
1057294 Топик полностью
fk0, легенда (02.12.2020 01:28, просмотров: 230) ответил POV_ на Пока отбой. Нашёл мелкий косяк. Но в целом он не мешает наличию проблемы....
Х.З. что такое obj.SendByte, но винда абсолютно нормально всё посылает не по байтику, а пачками по 16 байтиков как минимум (размер fifo) и вряд ли между ними есть существенные промежутки. Идея вместо BREAK посылать 0 на более низкой скорости интересна, но отсутствия задержек не гарантирует: что спрашивается делать драйверу, когда его просят сменить скорость? В виндовом API, увы, детали не оговариваются. Документация микрософта традиционно низкого качества. В Unix есть 

три варианта: TCSANOW, TCSADRAIN, TCSAFLUSH -- применить настройки прямо сейчас, после передачи того, что есть в буфере, или откинуть непереданное содержимое и применить настройки. В виндах работает какой-то один из вариантов, и я догадываюсь, что TCSANOW. Но тогда, получается, твой код не корректный. Ты дожлен ждать опустошения буфера. Я кажется догадываюсь, почему работает: дельфийская прослойка в SendByte() дожидается за тебя конца передачи. Отсюда и паузы между байтами.


Это Delphi? Прекращай это дурное дело (Delphi) и освой Win32 API напрямую или .NET и C#. Для решения задач прикладного уровня C# вполне ок. Не для всяких конечно, но в среднем он достаточно хорош и перспективен (с рынка не пропадет еще долго, работает в Linux).

[ZX]