|
|
  |
Обмен через COM-порт в Windows XP (командная строка) |
|
|
|
Apr 28 2016, 10:26
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Всем привет!
Необходимо в bat-файле с помощью стандартных команд отправить данные в порт, потом сразу считать данные из порта и вывести на экран. Могу реализовать на Си, могу на Питоне, но надо именно с помощью стандартных команд в командной строке... Отправить данные - не проблема. А вот принять - не очень-то просто.
С помощью команд "copy /B com1 con" и "type com1" данные принимаются и выводятся на экран, но данные я вижу на экране спустя 1-2 минуты (точно не измерял, долго ждать, одним словом). Видимо, есть какой-то таймаут, скорее всего в драйвере (ожидается ^-z, но его не будет). Можно ли этот таймаут настроить т. о., чтобы данные ожидались, скажем, не дольше 1 секунды?
--------------------
Благодарю заранее!
|
|
|
|
|
Apr 28 2016, 19:01
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(GetSmart @ Apr 28 2016, 20:49)  Есть же команда mode для настройки ком-порта. Может через неё задаётся таймаут? Нет, не через нее. Через нее можно таймаут отключить или включить. Цитата Имя ком-порта в copy/type пишется с двоеточием. "Type com1: >filename" Насколько я знаю, двоеточие необязательно, в справке написано. Цитата при незаданном таймауте и отключенным управлением потоком вообще будет работать бесконечно. Ну впринципе, так и есть, параметр "to=on|off" команды "mode". Получается, что надо таймаут включить и выставить небольшое значение. Ну или как-то считать содержимое буфера принудительно и завершить процесс... Вопрос в том, как это сделать
--------------------
Благодарю заранее!
|
|
|
|
|
Apr 28 2016, 20:39
|
Местный
  
Группа: Свой
Сообщений: 237
Регистрация: 14-08-07
Из: Москва
Пользователь №: 29 791

|
Цитата(koluna @ Apr 28 2016, 13:26)  ... есть какой-то таймаут, скорее всего в драйвере (ожидается ^-z, но его не будет)... Помню смутно, но по-моему при работе из командной строки под СОМ-портом подразумевается терминальный протокол, соответственно действуют его настройки. Можно, конечно, поковыряться и поискать, чего там можно настроить, но проще протокол соблюдать, и не говорить категорично " ^-z, но его не будет", а подумать, как в источнике после данных данных выдать символ конца передачи.
|
|
|
|
|
Apr 29 2016, 05:31
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(r_dot @ Apr 29 2016, 00:39)  Помню смутно, но по-моему при работе из командной строки под СОМ-портом подразумевается терминальный протокол, соответственно действуют его настройки. Можно, конечно, поковыряться и поискать, чего там можно настроить, но проще протокол соблюдать, и не говорить категорично "^-z, но его не будет", а подумать, как в источнике после данных данных выдать символ конца передачи. Протокол менять никто не будет, он чужой. Цитата(V_G @ Apr 29 2016, 01:17)  Это что - учебная задача, почему с помощью стандартных команд? Кто мешает написать программу на Си и запускать ее из bat-файла? Не учебная. Требуется элементарный алгоритм: 10 байт отправить, 100 байт принять и отобразить. Условно. Думал, что с помощью стандартных команд из командной строки это можно сделать просто и быстро, с наскока. Но вот ошибся... Написать на Си никто не мешает, видимо, придется так сделать.
--------------------
Благодарю заранее!
|
|
|
|
|
Apr 30 2016, 16:22
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(koluna @ Apr 28 2016, 23:01)  Нет, не через нее. Через нее можно таймаут отключить или включить. Что зашито именно в драйвере, - слабо верится. В диспетчере устройств таймаут тоже не задаётся. Более логично, если это задаётся в реестре. Реестр можно корректировать прямо из батника, если права админские. Упд. Корректировать реестр из батника - не очень удачная затея.
Сообщение отредактировал GetSmart - Apr 30 2016, 16:55
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|