реклама на сайте
подробности

 
 
> Обмен через COM-порт в Windows XP (командная строка)
koluna
сообщение Apr 28 2016, 10:26
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Всем привет!

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

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


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Apr 28 2016, 16:49
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(koluna @ Apr 28 2016, 14:26) *
Можно ли этот таймаут настроить т. о., чтобы данные ожидались, скажем, не дольше 1 секунды?

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

Имя ком-порта в copy/type пишется с двоеточием. "Type com1: >filename" при незаданном таймауте и отключенным управлением потоком вообще будет работать бесконечно. То есть командную строку с клавиатуры будет не прервать. У меня получалось только принудительно закрыть виндовс-процесс. Конец файла при этом в файле отсутствовал. Обычно менее 512-байтного сектора. Буферизация записи.

Сообщение отредактировал GetSmart - Apr 28 2016, 17:15


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
koluna
сообщение Apr 28 2016, 19:01
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(GetSmart @ Apr 28 2016, 20:49) *
Есть же команда mode для настройки ком-порта. Может через неё задаётся таймаут?


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

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


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

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


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

Получается, что надо таймаут включить и выставить небольшое значение.
Ну или как-то считать содержимое буфера принудительно и завершить процесс...
Вопрос в том, как это сделать sm.gif


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Apr 30 2016, 16:22
Сообщение #4


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



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

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

Упд.
Корректировать реестр из батника - не очень удачная затея.

Сообщение отредактировал GetSmart - Apr 30 2016, 16:55


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 12:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016