Помогите наладить общий язык с последовательным USB-устройством. [SOLVED]
Приобрёл недавно датчик линейных перемещений в СКБ ИС и к нему интерфейсный модуль RS485 и переходник RS485->USB И вот не получается наладить общение с интерфейсным модулем. Драйверы мне дали только под виндоус и только 32-разрядные, так что мне и под виндой не попробовать (потому что у меня из виндоус только ХР64-битная) Но тем не менее, исхожу из того что наверное всё работает и пытаюсь наладить общение и ничего не получается. Может какие идеи будут, что я не правильно делаю. Делаю так:
Во-первых, модуль ЛИР-967 с помощью команды lsusb -v виден следующим образом:
Далее, в ядре включил поддержку генерик сериал драйвер
Device Drivers ---> [*] USB Support <M> USB Serial Converter Support ---> [*] USB Generic Serial Driver
Далее, создаю устройство /dev/ttyUSB0
modprobe usbserial vendor=0x10c4 product=0xea60
Далее, в одной консоли запускаю tail -f /dev/ttyUSB0, а из другой пытаюсь отправить на него команду программирования
printf "%b%b%b%b%b%b%b" "\x23\x70\x23\x01\x00\x07\x11" > /dev/ttyUSB0
и ничего, тишина. Где у меня может быть прокол? Питание подключил :)
- Для комментирования войдите или зарегистрируйтесь
для проверки лучше
для проверки лучше использовать cat и echo. Чтобы узнать что не так, стрясите с производителя протокол управления и обмена информацией.
?
А скорость, четность, битность, наличие управляющих символов?
Там всего две конечных точки:
Там всего две конечных точки: боюсь, это всё либо не настраивается, либо реализовано каким-нибудь хитрым образом.
stty для этого
stty для этого.
То есть автору топика необходимо точно знать эти параметры для устройства и поставить их с помощью stty
Также возможно устройство отправляет вам в ответ что-нибудь вроде 0x00, но tail этого просто не отображает, потому что символ не печатаемый. Стоит конвертировать все символы в читаемый вид, например с помощью hexdump.
я бы для начала убедился, что
я бы для начала убедился, что все работает хотя бы под виндой, поставить 32 бит винду в virtualbox и попробовать там дело часа, двух(вместе с добыванием винды)
<M> USB Serial Converter
Включи __все__ модули в разделе модулями :), потом ненужный отключишь. Или грепай ядро на свой vendor ID.
P.S мне это напоминает ржачную статью на опеннете по включению profolik - автора совершрнно заслуженно заминусовали
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Спасибо большое всем
Спасибо большое всем откликнувшимся! Получилось добиться ответа, с подсказкой от производителя и вашими. Напишу здесь, может кому понадобится.
После включения этих опций на моей системе (Генту 2.6.34-r11) при подсоединении кабеля автоматически подключается нужный драйвер и появляется устройство /dev/ttyUSB0, при отсоединении драйвер выгружается и устройство пропадает.
Чтобы добиться ответа от модуля понадобилось ещё дать команду
После этого, если в одной консоли запустить
cat /dev/ttyUSB0
а в другой дать команду на программирование модуля ЛИР-915
printf "%b%b%b%b%b%b%b" "\x23\x70\x23\x01\x00\x07\x11" > /dev/ttyUSB0
в первой консоли, можно увидеть, что модуль отвечает.
[offtopic] По роду своей
[offtopic]
По роду своей деятельность мне также приходится иметь дела с usb-serial переходниками. В частности итспользуются переходники на чипе pl2303. Так вот возникла проблема. Если в приложении открыть соотвествующее устройство и, пока оно открыто, выдернуть переходник из USB, то получаю страшный дамп в /var/log/messages. После этого не то, что переходники не работают, но и вся подсистема USB. Помогает только перезагрузка.
Отсюда вопрос. Это так только с чипами pl2303 или с любыми? И есть ли какой-либо способ это пофиксить?
P.S. К сожалению дампа не сохранилось, но было выяснено, что падает в момент, когда пытается сделать hangup.
[/offtopic]
У меня страшного дампа нет.
У меня страшного дампа нет. Несколько строчек только, процитировать по памяти не могу, но ничего что обращало бы на себя внимание.
Вы проверяли выдергивание
Вы проверяли выдергивание шнура при открытом файле? Проблема именно при открытом файле, обычное выдергивание просто убирает устройство из /dev/ как и должно.
Проверю ещё раз в
Проверю ещё раз в понедельник, вроде и при открытом файле (с висящим cat /dev/ttyUSB0) тоже в лог заглядывал.
> Помогает только перезагрузка.
Мойшет помойшет
:)
Да, вполне может помочь.
Да, вполне может помочь. Только тут есть одна проблема. В переходник втыкаются gsm-модемы. Система работает 24/7. И если понадобится сменить какой-то модем и отвественный человек забудет, что нельзя выдергивать переходник, то все отвалится нафиг. а эту команду еще кто-то запустить должен.
Но все равно спасибо за подсказку :)
Есть у меня такие
Есть у меня такие "переходники". Выдёргивал их, когда открыты (minicom). В /var/log/messages не заглядывал, но единственные проблемы что имел, так это minicom ругался на на недействительный дескриптор устройства. После перезапуска всё нормально.
Ах да, бывали случаи, когда менялся номер устройства после этого. ttyUSB0 -> ttyUSB1. Это максимальные последствия до перезагрузки.
Хм. С миникомом у меня тоже
Хм. С миникомом у меня тоже все нормально. Да и проверка на тестовой версии приложения не показала ошибок. Видимо в одном из новых ядер эту ошибку устранили. Все равно спасибо за участие.