abudaba
11-03-2022, 00:22
Доброго времени суток!
Решил поработать с COM-портом из консоли и столкнулся со следующей проблемой.
Есть два порта: COM1 и COM2 с нуль-модемным соединением. Если начать отправлять данные в любой из портов при помощи команд type или echo, то на второй порт данные приходят не сразу, а с запозданием в 512 байт. Т.е. где-то есть какой-то 512-байтный буфер, который пока не заполнится, данные не отправятся. И как следсвие, данные на второй порт пересылаются строго 512-байтными блоками, поэтому если объём пересылаемых данных не кратен 512 байтам, то часть данных попросту не дойдёт, осев в том самом буфере.
Вопрос: как это можно исправить, чтобы, отправляя 1 байт, он тут же пересылался?
Первая консоль:
echo Hello! > COM1
Вторая консоль:
type COM2
Есть подозрение, что это как-то связано с синхронным/асинхронным режимом работы порта. Но это не точно.
P.S. Перед пересылкой данных я, понятное дело, отключил тайм-аут для порта COM2 (т.е. включил режим монитора).
mode COM2 to=off
Решил поработать с COM-портом из консоли и столкнулся со следующей проблемой.
Есть два порта: COM1 и COM2 с нуль-модемным соединением. Если начать отправлять данные в любой из портов при помощи команд type или echo, то на второй порт данные приходят не сразу, а с запозданием в 512 байт. Т.е. где-то есть какой-то 512-байтный буфер, который пока не заполнится, данные не отправятся. И как следсвие, данные на второй порт пересылаются строго 512-байтными блоками, поэтому если объём пересылаемых данных не кратен 512 байтам, то часть данных попросту не дойдёт, осев в том самом буфере.
Вопрос: как это можно исправить, чтобы, отправляя 1 байт, он тут же пересылался?
Первая консоль:
echo Hello! > COM1
Вторая консоль:
type COM2
Есть подозрение, что это как-то связано с синхронным/асинхронным режимом работы порта. Но это не точно.
P.S. Перед пересылкой данных я, понятное дело, отключил тайм-аут для порта COM2 (т.е. включил режим монитора).
mode COM2 to=off