Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - управление сигналом DTR на COM порте - реализация bat\cmd или vbs (а лучше c++)

Ответить
Настройки темы
CMD/BAT - управление сигналом DTR на COM порте - реализация bat\cmd или vbs (а лучше c++)

Новый участник


Сообщения: 8
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: anatolysn
Дата: 18-09-2017
управление сигналом DTR на COM1 (Аппаратный перезапуск модемов (Watchdog таймер) iRZ MC52iT, MC52iWDT и iRZ MC52PU)
http://faq.radiofid.ru/topics/36-app...-i-irz-mc52pu/
Функция реализуется путём восьмикратного поднятия-опускания сигнала DTR в течение заданного времени. Рекомендуемые значения: 0.5 сек импульс, 0.5 сек пауза

Помогите, нужно реализовать на CMD(приоритет с использованием sleep.exe)/vbs, можно WMI а лучше на C++ (скомпилированный exe)
через CMD я так понимаю нельзя заблокировать порт (handle)


это не работает:
Скрытый текст
@ echo on
mode com1 dtr=off
mode com1
sleep 2
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep -m 500
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep -m 500
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep -m 500
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep -m 500
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep -m 500
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep -m 500
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep -m 500
mode com1 dtr=on
sleep -m 500
mode com1 dtr=off
sleep 2
pause
exit

и этот
Скрытый текст
@ echo on

echo %time%
echo Wait 500 ms (n*0.01sec)...
for /l %%i in (1,1,8) do (
mode com1 dtr=on > nul
call :sleep 50
mode com1 dtr=off > nul
call :sleep 50
)
echo %time%
pause
exit /b

:sleep
:: пауза в сотых долях сек
setlocal
call :gettick
set /a finish=%errorlevel%+%1
if %finish% geq 8640000 set finish=0
:slplabel
call :gettick
if %errorlevel% lss %finish% goto slplabel
endlocal & exit /b

:gettick
:: долей сек, прошедших с начала дня
setlocal
set t=%time: =0%
set /a tick=1%t:~9,2%-100+(1%t:~6,2%-100)*100+(1%t:~3,2%-100)*6000+(1%t:~0,2%-100)*360000
pause
endlocal & exit /b %tick%


есть на vbs через OLE DynamicWrapperX - не работает
Скрытый текст
"SETDTR = 5 ' Set DTR high
CLRDTR = 6 ' Set DTR low
' открываем нужный нам порт COM1
hFile = Wrap.CreateFile("COM1", GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
' опускаем DTR
s = Wrap.EscapeCommFunction(hFile, 6)

cnt=1
' запускаем цикл до 8
Do While cnt<9
WScript.Sleep 500 'кол-во мc
s = Wrap.EscapeCommFunction(hFile, SETDTR)
WScript.Sleep 500 'кол-во мc
s = Wrap.EscapeCommFunction(hFile, CLRDTR)
cnt=cnt+1
Loop
Wrap.CloseHandle(hFile)"


Скрипт на perl и python :
Скрытый текст
Для Linux можно использовать следующий Perl-скрипт:
---------------------------DTR8X.pl----------------------------------------
#!/usr/bin/perl -w
# yum install perl-Device-SerialPort # Fedora
# apt-get install libdevice-serialport-perl # Debian
# ./DTR8X.pl /dev/ttyUSB0 # syntax
use Device::SerialPort;
my $device = '/dev/ttyS0'; # default device
my $milliseconds = 500; # 0.5s delay
my $count = 8;
$device = $ARGV[0] if ($#ARGV == 0); # get device from command line
my $port=new Device::SerialPort($device) || die "new($device): $! ";
for (my $i = 0; $i <= $count; $i++) { $port->pulse_dtr_off($milliseconds); }

Для обоих операционных систем подойдет скрипт на Python:
import serial
import time

s = serial.Serial()
s.port = 'com2'
s.timeout = 2
s.open()
s.setDTR(False)

for i in range(8):
s.setDTR(True)
time.sleep(0.5)
s.setDTR(False)

Отправлено: 23:47, 17-09-2017

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата anatolysn:
это не работает: »
ответ детсад

что конкретно не работает, как не работает
Код: Выделить весь код
mode com1
pause
эта команда что выдает?

Отправлено: 00:21, 18-09-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


anatolysn, AFAIK mode и не должен давать результат, т.к. он только настраивает порт, а сигналы шлются при его использовании.

Отправлено: 09:28, 18-09-2017 | #3


Новый участник


Сообщения: 8
Благодарности: 1

Профиль | Отправить PM | Цитировать


модем не перезагружается.

А через CMD послать сигнал можно вообще DTR длительностью 0,5 сек?

-------
Я не программист :(


Отправлено: 19:09, 18-09-2017 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


anatolysn,
если в модеме (или не важно в чем) есть такая команда и поддерживается режим командной строки, то конечно можно.
Вы поймите, cmd не всемогущий, как раз наоборот. Это как сервисный центр с небольшим набором штатных инструментов и никто не запрещает принести новый продвинутый инструмент и починить им, только в таком случае чаще и сервисный центр меняют на тот где именно эти инструменты штатные.

Отправлено: 09:20, 19-09-2017 | #5


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата anatolysn:
(Аппаратный перезапуск модемов (Watchdog таймер) »
watchdog работает наоборот - перезагружает, когда нет специального сигнала

если вам нужен скомпилированный exe - какая разница на каком языке он был написан, и чем не устраивает расположенный по вашей ссылке?

Отправлено: 10:03, 19-09-2017 | #6


Новый участник


Сообщения: 8
Благодарности: 1

Профиль | Отправить PM | Цитировать


не устраивает потому что окно само не закрываеться

-------
Я не программист :(


Отправлено: 20:46, 26-09-2017 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - управление сигналом DTR на COM порте - реализация bat\cmd или vbs (а лучше c++)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Управление региональными настройками через cmd - BAT denshik Скриптовые языки администрирования Windows 1 14-03-2017 14:09
Любой язык - [решено] CMD/BAT+VBS завершение процессов dinis.grek Скриптовые языки администрирования Windows 6 14-07-2014 07:25
Любой язык - Написать на bat или vbs собирателя любого текста вводимого с клавиатуры THEDOGG Скриптовые языки администрирования Windows 3 10-06-2014 22:20
CMD/BAT - [решено] открытие диалога выбора файла без mshta.exe (на cmd или js,vbs) AUTO-NEK Скриптовые языки администрирования Windows 14 23-05-2011 12:48
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов 0bject Скриптовые языки администрирования Windows 614 19-01-2009 21:58




 
Переход