LINUX.ORG.RU

Сообщения Narsil

 

Ubuntu 10.10 на Viliv x70, тачскрин

Доброго времени суток! Дали мне этот девайс с установленной убунтой 10.10 и виндой, и просьбой поставить дрова на убунту.

Возникли проблемы с тачскрином. На винде работает нормально, в about к приложению для калибровке есть линк на hantouch.com, на котором лежат дрова для linux. Драйвер носит название egalax.

Нашёл последнюю версию дров, но там дрова только для Xorg 1.8.0 и ниже, а на убунте 1.9.0.

Собственно вопрос, как быть? Есть может какие-то другие драйверы? На том, что было в убунте по дефолту не уедешь никуда - тачскрин ужасно себя ведёт.

Или единственный вариант - downgrade к 1.8.0?

Заранее спасибо за ответы.

Narsil
()

Работа с com-port. Странная буферизация

Доброго времени суток. Уж не знаю, к кому обратиться. Решил к вам.

Есть задача. Некий девайс шлёт по com-порту какие-то команды на комп. Необходимо вклинится в этот процесс передачи и логировать все команды. То есть ком-кабель разветвляется, подсединяется ко второму компу, на котором стоит linux и там ведётся лог.

Основная сложность состоит в том, что мне необходимо чётко разделять границы команд так, как их шлёт устройство. То есть к протоколу привязываться нельзя (потому что возможны ошибки в программной части устройства, которые собственно моя прога и должна заметить).

Собственно, идея такая. Ждём пока придёт байт. Ждём следующий. Если следующий пришёл за время, превышающее некоторое пороговое значение, то это новая команда - выводим в лог старую команду, новый байт заносим в буфер. Если нет - добавляем этот байт в наш буфер.

В теории довольно просто. На практике - не очень

Приходящие команды длиной больше 8 байт разбиваются на части по 8 байт. Разница по времени между этими командами по таймеру составляет около 4 милисекунд. Однако, это совсем не соответствует действительности - по осциллографу видно, что команда передаётся целиком, время передачи одного байта порядка 200 мкс.

Пытался время засекать и через select, и через gettimeofday. Делал read с засечением времени, и ioctl(fd, FIONREAD, &bytes) чтобы смотерть, сколько данных в буфере. Одно и то же - всегда эти 8 байт вылезают.

Может, проблема в какой-нибудь странной буферизации в драйвере ком-порта?

Собственно, что делать? Куда копать? В инете все мануалы по работе с ком-портом написаны в терминах read\write. Может, надо попытаться залезть на уровень пониже?

ЗЫЖ Была бы возможность - можно было бы это сделать всё на микроконтроллере, но сказали надо на linux.

ЗЗЫЖ Сейчас всё тестирую на OSADL LiveCD. Это Knoppix с 2.6.23.1 vanilla kernel. Если найду решение, буду ставить rt ядро в дебиан.

Заранее спасибо за ответы

Narsil
()

RSS подписка на новые темы