![]() |
Работа с COM-портом из консоли
Доброго времени суток!
Решил поработать с COM-портом из консоли и столкнулся со следующей проблемой. Есть два порта: COM1 и COM2 с нуль-модемным соединением. Если начать отправлять данные в любой из портов при помощи команд type или echo, то на второй порт данные приходят не сразу, а с запозданием в 512 байт. Т.е. где-то есть какой-то 512-байтный буфер, который пока не заполнится, данные не отправятся. И как следсвие, данные на второй порт пересылаются строго 512-байтными блоками, поэтому если объём пересылаемых данных не кратен 512 байтам, то часть данных попросту не дойдёт, осев в том самом буфере. Вопрос: как это можно исправить, чтобы, отправляя 1 байт, он тут же пересылался? Первая консоль: Код:
echo Hello! > COM1 Код:
type COM2 P.S. Перед пересылкой данных я, понятное дело, отключил тайм-аут для порта COM2 (т.е. включил режим монитора). Код:
mode COM2 to=off |
Решил проверить, на чьей стороне проблема. Оказалось, проблема не на передающей, а на принимающей стороне.
Так, подключившись к COM2 порту терминалом, обнаружил, что все посылаемые в COM1 байты тут же выводятся безо всяких проблем. Значит, дело в буфере (размере блока) команды type. Получается, type выводит инфу блоками по 512 байт... Вопрос: можно ли это как-нибудь обойти? |
|
Angry Demon, к сожалению, от этого команда type не перестаёт читать и/или писать 512-байтными блоками...
В общем, штатными средствами винды решить это пока что не удалось. Пришлось прибегнуть к помощи сторонней утилиты dd и выставить в ней размер блока в 1 байт: Консоль 1: Код:
echo Ё > COM1 Код:
dd bs=1 if=COM2 of=CON Но, конечно, хотелось бы решить этот вопрос штатными средствами винды. |
Время: 23:47. |
Время: 23:47.
© OSzone.net 2001-