|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vassily Kiryanov 2:5054/36 18 Nov 2002 10:16:20 To : Valery A. Frolov Subject : serial port exploring tool -------------------------------------------------------------------------------- 16 Nov 02 18:19, Valery A. Frolov wrote to All: VAF> Предположим есть некоторое устройство (например, принтер), который VAF> цепляется к COM-порту компьютера (именно к COM, это важно). И вот VAF> есть VAF> сильное желание "поиграться" с этим устройством: послать команды, VAF> посмотреть ответы, манипулировать DTR/RTS, смотреть на DSR/CTS/DCD/RI VAF> и т.п. VAF> Итак вопрос: кто чем бы такое делал? Писал когда-то такую прожку на паскале под ДОС. Даже с некоторой интерактивностью ... Когда потребовалось под униксы, написал на шелловском языке. А вызывается она уже хоть откуда, можно и из перла. Вот, держи, как пример для усугубления. (Да простит меня модератор...) Пример вызова: ./com_manipulate компорт действие сигнал [длительность] компорт = COM1 или COM2 или /dev/tty0? действие = up или down или up_down или down_up сигнал = rts или RTS или dtr или DTR или all или ALL длительность = число секунд паузы Если действие = up или down , то четвёртый параметр не нужен. Если сигнал = all или ALL , то программа дёргает и DTR и RTS. Там внизу пара строк внутри case не влезла в 80 символов, сам расправь. === Cut === #!/bin/sh # if [ x$1 = x ] then echo Error: TTY name not specified exit 1 else ttyname=$1 echo ttyname="'"$ttyname"'" fi if [ x$2 = x ] then echo Error: type of manipulation not specified exit 2 else echo manipulation="'"$2"'" fi if [ x$2 != xup -a x$2 != xdown -a x$2 != xup_down -a x$2 != xdown_up ] then echo Error: unknown type of manipulation specified exit 20 fi if [ x$3 = x ] then echo Error: signal line name not specified exit 3 else linename_u=$3 linename_d=-$3 echo line="'"$linename_u"'" fi if [ x$2 = xup_down -o x$2 = xdown_up ] then echo impulse requested, it''s time required ... if [ x$4 = x ] then echo Error: ... but not specified! exit 4 else echo time="'"$4"'" fi fi if [ x$1 = xCOM1 -o x$1 = xcom1 ] then ttyname=/dev/tty00 echo ttyname="'"$ttyname"'" fi if [ x$1 = xCOM2 -o x$1 = xcom2 ] then ttyname=/dev/tty01 echo ttyname="'"$ttyname"'" fi if [ x$3 = xall -o x$3 = xALL ] then linename_u='dtr rts' linename_d='-dtr -rts' echo linename="'"$linename_u"'" fi if [ x$3 = xRTS ] then linename_u=rts linename_d=-rts echo line="'"$linename_u"'" fi if [ x$3 = xDTR ] then linename_u=dtr linename_d=-dtr echo line="'"$linename_u"'" fi case $2 in up) stty -f $ttyname $linename_u ;; down) stty -f $ttyname $linename_d ;; down_up) stty -f $ttyname $linename_d ; sleep $4 ; stty -f $ttyname $linename_u ;; up_down) stty -f $ttyname $linename_u ; sleep $4 ; stty -f $ttyname $linename_d ;; *) echo Error: this type of manipulation is not implemented ;; esac exit === Cut === Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго. Vassily --- * Origin: И бъется против геноцида Вася, и против Васи геноцид. (2:5054/36) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/18513dd8b3df.html, оценка из 5, голосов 10
|