Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>Есть ли команды записи в сом порт ? ... но не echo! ... VYR>Просто AT команды многие в 2 этапа — и надо ожидать ответа между частями команд...
Есть expect (он использует язык tcl)
VYR>Есть ли команды записи в сом порт ? ... но не echo!
VYR>Если пользоваться cat то всё хорошо 1 раз порт открывается и когда данные приходят ты их получаешь,
VYR>а вот с VYR>
VYR>echo "строка" > /dev/ttyS1
VYR>
VYR>нехорошо переоткрывать порт !!! Мне нужно подождать между записями и не переоткрывать его. Это возможно???
VYR>Просто AT команды многие в 2 этапа — и надо ожидать ответа между частями команд...
function write_data_to_com_port()
{
echo -n "чё нужно запихать в COM порт"
sleep 5
// Прочитать ответ
printf "%s\n%s\n" "Ну, все" "the end"
} > /dev/ttyS1
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>нехорошо переоткрывать порт !!! Мне нужно подождать между записями и не переоткрывать его. Это возможно???
А обязательно это на шелле делать?
Если да, то можно сказать
exec 3<>/dev/$port ## теперь порт постоянно открыт на fd=3
echo ATZ 1>&3
sleep 2
echo AT 1>&3
ну или что вам там нужно... и дальше общаться с ним.
VYR>Просто AT команды многие в 2 этапа — и надо ожидать ответа между частями команд...
А вообще шелл плохо подходит для такого. Можно самому написать на питоне/etc., можно применить expect...
а что другое чтоб не заморачиваться c установками???
дело в том что мне надо это под OpenVrt ...
сама ось обсолютно глюкавая (пакеты с репозитория даже не устанавливаются)
она под разные версии ARM
есть LUA и можно установить python — но они без библиотек (c COM портом не поработаеш)
на С там писать просто жесть ... make файлами замучаешся
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>дело в том что мне надо это под OpenVrt ... VYR>сама ось обсолютно глюкавая (пакеты с репозитория даже не устанавливаются)
Может, руки?
VYR>на С там писать просто жесть ... make файлами замучаешся
Чтобы писать на C/C++, make-файлы совершенно не обязательны. Даже я, конченный виндузятник, не вижу никаких сложностей в написании прикладного (не ядерного) софта для OpenWRT.
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>не могу найти в man-е ... VYR>может подскажите где прочитать по русски про <> и >& VYR>наверное самый удобный способ ...
Ну например тут.
Это по bash, хотя фича от POSIX в целом. Смотреть по слову "перенаправление".
Ну что exec без параметров не порождает новый процесс, но позволяет менять свойства текущего, это уже просто надо знать этот фокус
например такое :
1) захожу браузером в админ утилиту
2) выбираю System->startup
3) пишу до "exit 0" свои команды
4) делаю submit
5) перезагружаю (мои команды не выполнились)
6) захажу в System->startup — а там тока половина от того что я написал и "exit 0" нету
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>6) захажу в System->startup — а там тока половина от того что я написал и "exit 0" нету VYR>как так понимать!!! и это 100% такое повторяется!
В первую очередь — проверить в другой сборке и/или версии.
Здравствуйте, netch80, Вы писали:
N>Ну например тут. N>Это по bash, хотя фича от POSIX в целом. Смотреть по слову "перенаправление". N>Ну что exec без параметров не порождает новый процесс, но позволяет менять свойства текущего, это уже просто надо знать этот фокус
вот тока перенаправление везде без <> расказывают ... тока >
а закрывать не надо?
а если я отправляю команды в консоль через LUA скрипт 3 дескриптор тоже не будет занят (они друг другу не помешают?)?
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>Здравствуйте, netch80, Вы писали:
N>>Ну например тут. N>>Это по bash, хотя фича от POSIX в целом. Смотреть по слову "перенаправление". N>>Ну что exec без параметров не порождает новый процесс, но позволяет менять свойства текущего, это уже просто надо знать этот фокус
VYR>вот тока перенаправление везде без <> расказывают ... тока >
Эээ?
Открытие дескрипторов файлов для чтения и записи
Оператор перенаправления
[n]<>слово
вызывает открытие файла, имя которого получается в результате подстановок
в слове, для чтения и записи через дескриптор файла n или через дескриптор
файла 0, если n не указано. Если файл не существует, он создается.
VYR>а закрывать не надо?
Само закроется по завершению процесса. Но можно и явно.
VYR>а если я отправляю команды в консоль через LUA скрипт 3 дескриптор тоже не будет занят (они друг другу не помешают?)?
Нет.
VYR>спасибо ! не не злись ... и правда не гуглится
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>нехорошо переоткрывать порт !!! Мне нужно подождать между записями и не переоткрывать его. Это возможно???
Можно создать fifo, см. mkfifo
Потом cat /my/fifo > /dev/mycom & и писать в fifo.
Здравствуйте, scf, Вы писали:
scf>Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>>нехорошо переоткрывать порт !!! Мне нужно подождать между записями и не переоткрывать его. Это возможно???
scf>Можно создать fifo, см. mkfifo
scf>Потом cat /my/fifo > /dev/mycom & и писать в fifo.
Здравствуйте, vvv848165@ya.ru, Вы писали:
N>>хм
VYR>а из за чего на lua не работает?
VYR>[q] VYR> fdw = io.popen('/dev/ttyS'..no) -- Permission denied
VYR> fdw = io.popen('exec 3 <> /dev/ttyS'..no) -- Sh: exec: line 1: 3 not found
Второе в принципе не должно дать ничего полезного, потому что скрипт на Lua не шелл.
Ну и пробелы вокруг <> я бы не ставил.
Первое — почему permission denied, ищите уже по своим правам.
Кстати, если это действительно ttyS*, то его надо открывать с O_NONBLOCK, поднимать флаг CLOCAL и только тогда пытаться работать с реальным портом. Ну и остальные настройки по man termios не забыть, скорее всего нужен полный raw mode.
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>не работает на lua
VYR>fdw = io.popen('/dev/ttyS'..no) -- Permission denied
Таки вы зачем процес запускаете надо просто io.open