Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обмен через COM-порт в Windows XP (командная строка)
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
koluna
Всем привет!

Необходимо в bat-файле с помощью стандартных команд отправить данные в порт, потом сразу считать данные из порта и вывести на экран.
Могу реализовать на Си, могу на Питоне, но надо именно с помощью стандартных команд в командной строке...
Отправить данные - не проблема.
А вот принять - не очень-то просто.

С помощью команд "copy /B com1 con" и "type com1" данные принимаются и выводятся на экран, но данные я вижу на экране спустя 1-2 минуты (точно не измерял, долго ждать, одним словом). Видимо, есть какой-то таймаут, скорее всего в драйвере (ожидается ^-z, но его не будет).
Можно ли этот таймаут настроить т. о., чтобы данные ожидались, скажем, не дольше 1 секунды?
GetSmart
Цитата(koluna @ Apr 28 2016, 14:26) *
Можно ли этот таймаут настроить т. о., чтобы данные ожидались, скажем, не дольше 1 секунды?

Есть же команда mode для настройки ком-порта. Может через неё задаётся таймаут?

Имя ком-порта в copy/type пишется с двоеточием. "Type com1: >filename" при незаданном таймауте и отключенным управлением потоком вообще будет работать бесконечно. То есть командную строку с клавиатуры будет не прервать. У меня получалось только принудительно закрыть виндовс-процесс. Конец файла при этом в файле отсутствовал. Обычно менее 512-байтного сектора. Буферизация записи.
koluna
Цитата(GetSmart @ Apr 28 2016, 20:49) *
Есть же команда mode для настройки ком-порта. Может через неё задаётся таймаут?


Нет, не через нее. Через нее можно таймаут отключить или включить.

Цитата
Имя ком-порта в copy/type пишется с двоеточием. "Type com1: >filename"


Насколько я знаю, двоеточие необязательно, в справке написано.

Цитата
при незаданном таймауте и отключенным управлением потоком вообще будет работать бесконечно.


Ну впринципе, так и есть, параметр "to=on|off" команды "mode".

Получается, что надо таймаут включить и выставить небольшое значение.
Ну или как-то считать содержимое буфера принудительно и завершить процесс...
Вопрос в том, как это сделать sm.gif
r_dot
Цитата(koluna @ Apr 28 2016, 13:26) *
... есть какой-то таймаут, скорее всего в драйвере (ожидается ^-z, но его не будет)...

Помню смутно, но по-моему при работе из командной строки под СОМ-портом подразумевается терминальный протокол, соответственно действуют его настройки. Можно, конечно, поковыряться и поискать, чего там можно настроить, но проще протокол соблюдать, и не говорить категорично "^-z, но его не будет", а подумать, как в источнике после данных данных выдать символ конца передачи.
V_G
Это что - учебная задача, почему с помощью стандартных команд?
Кто мешает написать программу на Си и запускать ее из bat-файла?
koluna
Цитата(r_dot @ Apr 29 2016, 00:39) *
Помню смутно, но по-моему при работе из командной строки под СОМ-портом подразумевается терминальный протокол, соответственно действуют его настройки. Можно, конечно, поковыряться и поискать, чего там можно настроить, но проще протокол соблюдать, и не говорить категорично "^-z, но его не будет", а подумать, как в источнике после данных данных выдать символ конца передачи.


Протокол менять никто не будет, он чужой.

Цитата(V_G @ Apr 29 2016, 01:17) *
Это что - учебная задача, почему с помощью стандартных команд?
Кто мешает написать программу на Си и запускать ее из bat-файла?


Не учебная.
Требуется элементарный алгоритм: 10 байт отправить, 100 байт принять и отобразить. Условно.
Думал, что с помощью стандартных команд из командной строки это можно сделать просто и быстро, с наскока.
Но вот ошибся...

Написать на Си никто не мешает, видимо, придется так сделать.
GetSmart
Цитата(koluna @ Apr 28 2016, 23:01) *
Нет, не через нее. Через нее можно таймаут отключить или включить.

Что зашито именно в драйвере, - слабо верится. В диспетчере устройств таймаут тоже не задаётся. Более логично, если это задаётся в реестре. Реестр можно корректировать прямо из батника, если права админские.

Упд.
Корректировать реестр из батника - не очень удачная затея.
aiwa
Права админа - только начало. Потом вмешается антивирусник.
Состряпать программку выйдет гораздо быстрее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.