суббота, 18 февраля 2012 г.

настройка /dev/ttyUSB0 в raw режим

как то однажды на переустановленном линухе мое устройство на ATTiny24 отказалось общаться с компом через конвертер USB-COM на базе микрухи FT232RL. Проверив в программе Terminal из под windows, я убедился, что само устройство в порядке, значит дело в настройке порта под никсами. Смотрим, что там на данный момент
stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

скорость подходящая, значит не хватает каких то опций. ответ искать пришлось недолго.

итак, настройка виртуального com-порта  под linux (обычно определяется как /dev/ttyUSB0) в raw-режим:
stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
UPD: кстати о настройке таймаута чтения из COM-порта
параметр min задает число байт, после которого таймаут активируется, параметр time задает таймаут с шагом 100мс.
Итого, чтобы задать таймаут 1.5сек без оглядки на число принятых байт, делаем так:
stty -F /dev/ttyUSB0 min 0 time 15