LINUX.ORG.RU

История изменений

Исправление anymouze, (текущая версия) :

KERNEL==«rfcomm0», SUBSYSTEM==«tty», ATTR{address}==«00:20:E0:7F:43:0A», ATTR{ch annel}==«1», SYMLINK+=«ttyS5», RUN+=«/etc/bluetooth/stty_SF51.sh»

да, примерно так оно и должно выглядеть. разве что, я бы добавил ACTION=="add"

KERNEL=="rfcomm0", SUBSYSTEM=="tty", ATTR{address}=="00:20:E0:7F:43:0A", ATTR{ch
annel}=="1",  ACTION=="add", SYMLINK+="ttyS5", RUN+="/etc/bluetooth/stty_SF51.sh"
(и если в скрипте только одна команда её можно прямо в атрибут RUN записать с полным путём — но это «косметика» :)

Не срабатывает скорее всего потому, что на момент выполнения команды порт ещё не связан с симлинком — т.е. нет устройства /dev/ttyS5. Я уже обращал твоё внимание, что команда должна применяться после появления устройства в /dev/ttyS5. Или добавить ACTION=="add" в правило или модифицировать скрипт. Например, как ты поставить задержку или вот так как-то

#!/bin/sh
while [ "$RES" != "0" ]
do
  if [ "$ACTION" == "add" ]
  then RES=`stty -icrnl -echo -F /dev/ttyS5`
 fi
done
но это уже переусложнение (и я не проверял работоспособность этого «кода»)

Причем если сканер находится в энергосберегающем режиме то вообще ничего не получается. И к тому же происходит активация сканера и он пищит. Может все таки можно как то более красиво сделать?

Всё дело в том, что американцы программы «тупые». Сканер и так скорее всего находиться в требуемом режиме, но stty делает ему принудительную настройку, причём при каждом его появлении в системе. Хотя нам этого как бы и не нужно. По умолчанию последовательный порт в линукс имеет установки отличающиеся от настроек в сканере (коряво сказал) — тебе бы только «принимающий» интерфейс настроить, а там мы настраиваем всю цепочку. Вот не знаю можно ли такое сделать. Точнее сказать: не знаю как это сделать.

P.S. Ты же взаимодействуешь со сканером через какие-то компоненты 1С? Там нет конфигов для настройки портов/устройств?

Исправление anymouze, :

KERNEL==«rfcomm0», SUBSYSTEM==«tty», ATTR{address}==«00:20:E0:7F:43:0A», ATTR{ch annel}==«1», SYMLINK+=«ttyS5», RUN+=«/etc/bluetooth/stty_SF51.sh»

да, примерно так оно и должно выглядеть. разве что, я бы добавил ACTION=="add"

KERNEL=="rfcomm0", SUBSYSTEM=="tty", ATTR{address}=="00:20:E0:7F:43:0A", ATTR{ch
annel}=="1",  ACTION=="add", SYMLINK+="ttyS5", RUN+="/etc/bluetooth/stty_SF51.sh"
(и если в скрипте только одна команда её можно прямо в атрибут RUN записать с полным путём — но это «косметика» :)

Не срабатывает скорее всего потому, что на момент выполнения команды порт ещё не связан с симлинком — т.е. нет устройства /dev/ttyS5. Я уже обращал твоё внимание, что команда должна применяться после появления устройства в /dev/ttyS5. Или добавить ACTION=="add" в правило или модифицировать скрипт. Например, как ты поставить задержку или вот так как-то

#!/bin/sh
while [ "$RES" != "0" ]
do
  if [ "$ACTION" == "add" ]
  then RES=`stty -icrnl -echo -F /dev/ttyS5`
 fi
done
но это уже переусложнение (и я не проверял работоспособность этого «кода»)

Причем если сканер находится в энергосберегающем режиме то вообще ничего не получается. И к тому же происходит активация сканера и он пищит. Может все таки можно как то более красиво сделать?

Всё дело в том, что американцы программы «тупые». Сканер и так скорее всего находиться в требуемом режиме, но stty делает ему принудительную настройку, причём при каждом его появлении в системе. Хотя нам этого как бы и не нужно. По умолчанию последовательный порт в линукс имеет установки отличающиеся от настроек в сканере (коряво сказал) — тебе бы только «принимающий» интерфейс настроить, а там мы настраиваем всю цепочку. Вот не знаю можно ли такое сделать. Точнее сказать: не знаю как это сделать.

Исходная версия anymouze, :

KERNEL==«rfcomm0», SUBSYSTEM==«tty», ATTR{address}==«00:20:E0:7F:43:0A», ATTR{ch annel}==«1», SYMLINK+=«ttyS5», RUN+=«/etc/bluetooth/stty_SF51.sh»

да, примерно так оно и должно выглядеть. разве что, я бы добавил ACTION=="add"

KERNEL=="rfcomm0", SUBSYSTEM=="tty", ATTR{address}=="00:20:E0:7F:43:0A", ATTR{ch
annel}=="1",  ACTION=="add", SYMLINK+="ttyS5", RUN+="/etc/bluetooth/stty_SF51.sh"
(и если в скрипте только одна команда её можно прямо в атрибут RUN записать с полным путём — но это «косметика» :)

Не срабатывает скорее всего потому, что на момент выполнения команды порт ещё не связан с симлинком — т.е. нет устройства /dev/ttyS5. Я уже обращал твоё внимание, что команда должна применяться после появления устройства в /dev/ttyS5. Или добавить ACTION=="add" в правило или модифицировать скрипт. Например, как ты поставить задержку или вот так как-то

#!/bin/sh
while [ "$RES" != "0" ]
do
  if [ "$ACTION" == "add" ]
  then RES=`stty -icrnl -echo -F /dev/ttyS5`
 fi
done
но это уже переусложнение (и я не проверял работоспособность этого «кода»)

Причем если сканер находится в энергосберегающем режиме то вообще ничего не получается. И к тому же происходит активация сканера и он пищит. Может все таки можно как то более красиво сделать?

Всё дело в том, что американцы программы «тупые». Сканер и так скорее всего находиться в требуемом режиме, но stty делает ему принудительную настройку, причём при каждом его появлении в системе. Хотя нам этого как бы и не нужно. По умолчанию последовательный порт в линукс имеет установки отличающиеся от настроек в сканере (коряво сказал) — тебе бы только «принимающий» интерфейс настроить, а там мы настраиваем всю цепочку. Вот не знаю можно ли такое сделать. Точнее сказать как это сделать.