Здравствуйте!
Сразу скажу - образование биологическое :))
А занимаюсь сейчас тем, что пытаюсь написать программу на Perl для контроля электронных весов Sartorius. Есть такая нужда.
Весы имеют интерфейс к RS-232, однако пришлось немного перепаять пины под DB25S, как было указано в мануале весов (если понадобится, я всю распайку представлю).
по мануалу, весы всю информацию скидывают в ком-порт. И это действительно так. Скидывают,когда на них кнопочку "принт" нажмешь и я их скриптом забираю и пишу в файл. Но также по мануалу, весы должны управляться командами, посылаемыми с компьютера.
Команды в ASCII и имеют следующий формат: Esc ! CR LF, где ! - есть буква команды какого-либо конкретного действия. Таким образом для вывода показаний весов в ком-порт, им нужно выслать команду Esc P CR LF.
И вот тут проблема.
Эту команду я вывожу в порт и вот так:
print DEV '\033\120\015\012';
и так
my $coma = printf ("%c%c\r\n",27,80);
и так
my $coma = pack "c*",$esc,$char,$CR,$LF;
и по всякому, но весы не слышат команды.
А когда я просто написал такой скрипт:
#!/usr/bin/perl
# co.pl
print '\033\120\015\012';
а потом сделал :
perl co.pl >> goggy
, то потом в cat goggy получил только перевод строки, но без символа P.
когда же \033 (Esc) убираешь, то символ выдается.
Отсюда, хотелось бы знать, а что вообще означает Esc в начале строки?Возможно вопрос не совсем адекватный, но простите новичка в таких вопросах.
Если подскажете, что почитать, буду очень признателен.
это у тебя терминал скушал символ после esc (решил что это ему ескейп-последовательность передают)
ты делай не cat goggy
а hexdump -C goggyprint DEV '\033\120\015\012';
тут нужны двойные скобкиperl -e 'print "\033\120\015\012";'|hexdump -C
00000000 1b 50 0d 0a |.P..|можно даже так
echo -en "\033\120\015\012"|hexdump -C
00000000 1b 50 0d 0a |.P..|
>print DEV '\033\120\015\012';
>тут нужны двойные скобки
имелось ввиду не скобки, а кавычки, конечно....
>
>>print DEV '\033\120\015\012';
>>тут нужны двойные скобки
>имелось ввиду не скобки, а кавычки, конечно....
Ага, спасибо :) Учту.
А про hexdump просто сам забыл.
А всетаки, вас ист дас "искейп-последовательность" для терминала? О чем эта последовательность терминалу говорит?
Я, собснно, это узнать хотел, ну или где читать?
>А всетаки, вас ист дас "искейп-последовательность" для терминала? О чем эта последовательность
>терминалу говорит?ну например xterm-у можно сказать что в хаголовке окна показывать...
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'в общем, для управления свойствами терминала
насчет где почитать - вот быстро гуглом нашел
http://rtfm.etla.org/xterm/ctlseq.html
>насчет где почитать - вот быстро гуглом нашел
>http://rtfm.etla.org/xterm/ctlseq.html
Спасибо большое :)
Почитал и все втюхал.
Все, кроме одного - отчего мои весы не принимают команды, но это уже, видимо, из другой оперы.
>>насчет где почитать - вот быстро гуглом нашел
>>http://rtfm.etla.org/xterm/ctlseq.html
>Спасибо большое :)
>Почитал и все втюхал.
>Все, кроме одного - отчего мои весы не принимают команды, но это
>уже, видимо, из другой оперы.не похоже, но возможно что то с настройками порта..
можно попробовать вручную подцепиться к весам терминалкой (minicom /dev/ttyS0 в линух, или cu -l /dev/cuaa0 для freebsd)
и проверить правильно ли идет отчет (правильные ли настройки порта), и после этого дать команды вручную (прямо так и набирать, Escape,P,ENTER)
Век живи - век учись :))
Никогда не знал, что в никсах такая фича есть (это я про minicom).
Теперь знаю и даже ХАУТУ прочитал :))
Спасибо.
А кстати, может мой вопрос и твои ответы в ФАК порекомендовать?
Что думаешь?
>Век живи - век учись :))
>Никогда не знал, что в никсах такая фича есть (это я про
>minicom).
>Теперь знаю и даже ХАУТУ прочитал :))
>Спасибо.
>А кстати, может мой вопрос и твои ответы в ФАК порекомендовать?
>Что думаешь?а чё тут думать :) ежли считаешь что надо - рекомендуй =)
УЖе :)
>>Век живи - век учись :))
>>Никогда не знал, что в никсах такая фича есть (это я про
>>minicom).
>>Теперь знаю и даже ХАУТУ прочитал :))
>>Спасибо.
>>А кстати, может мой вопрос и твои ответы в ФАК порекомендовать?
>>Что думаешь?
>
> а чё тут думать :) ежли считаешь что надо - рекомендуй
>=)
вылезь в аську оффтопик пообсуждать,а? :)
>вылезь в аську оффтопик пообсуждать,а? :)ладно пофиг, это неважо :)
Так как все-таки забирать показания весов? Решен ли вопрос...?
Я понял что, Вы подсоеденили к компорту Ваши весы и пытаетесь софтом считать вес,.... В сетапе весов есть понятие длина слова 16 бит или 24 если я правильно помню... Возможно надо поиграться здесь... Хотелось бы получить распайку:)
>Так как все-таки забирать показания весов? Решен ли вопрос...?
>Я понял что, Вы подсоеденили к компорту Ваши весы и пытаетесь софтом
>считать вес,.... В сетапе весов есть понятие длина слова 16 бит
>или 24 если я правильно помню... Возможно надо поиграться здесь... Хотелось
>бы получить распайку:)Да все получилось! Сегодня!
Распайку выложу, могу и мануал в ПДФ где лежит сказать (надо гуглю сказать YDO01BL и первую сцылку брать) :)) Там тоже вся распайка есть.
И движок взятия - командования могу выложить :)
Все могу :))
По этому Сарториусу все :))
Добавлю
>>считать вес,.... В сетапе весов есть понятие длина слова 16 бит
>>или 24 если я правильно помню... Возможно надо поиграться здесь...
Это совершенно никакой рояли не играет. Это просто еще одна фича, которую также можно с подключенного девайса (компьютера в данном случае) менять.
>>бы получить распайку:)Если действительно есть такая же нужда, то могу описать ВСЕ, до мельчайших подробностей.
В общем пишите :)zlinuxan ака Злой Татарин