Доброго времени суток. Камраден, пост о программирование СОМ-портов в linux!
Ваяем тут одну железяку с кучей СОМ-портов, работающую под линем. И для отладки драйверов и железа ваяю программу тестирования СОМ-портов. Чтобы не изобретать велосипед за основу была взята программа
linux-serial-test (рекомендую программулинку заценить нуждающимся
(
Read more... )
Comments 35
Reply
Но по теме, искал долго, и пока единственное, что мне удалось найти - это вот это http://www.groupsrv.com/linux/about57282.html
Там это делается примерно так:
void serial_ack()
{
write(fd, "a", 1);
#if TEST_OUTPUT_FLUSH
tcflush(fd, TCOFLUSH);
#endif
}
Но, не даёт ответа на вопрос - как менять размер внутренних буферов.
Reply
На самом деле, сколько не писал никогда таких проблем не видел. Правда, я всегда использовал RAW режим (тот, который не дожидается перевода строки). Но беглый осмотр референсного кода говорит о том, что и там оно...
А размер буферов - скорее всего никак. Надо поковырять ядерный код, но там скорее всего ничего путнего не будет. Ибо последовательный порт и Linux это не просто символьное устройство, а еще и termios.
Reply
Reply
Более риалтаймовое программирование компорта по идее должно учитывать то, что фифо-буферов в каждом направлении как минимум три: аппаратный и два софтварных, меняющихся при каждом прерывании. Гемор ещё тот, подозреваю.
Reply
Ценный коммент, спасибо! Осталось теперь посмотреть её исходники и поглядеть как же она это делает :))0
Reply
// block for up till 128 characters
newtio.c_cc[VMIN] = 128;
// 0.5 seconds read timeout
newtio.c_cc[VTIME] = 5;
А так же рискну порекомендовать http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/
Reply
http://en.wikibooks.org/wiki/Serial_Programming/termios эта ссылка более полная.
Reply
PS Да, а зачем Вам C для этой задачи? А то какой-нибудь tcl имеет более простые встроенные средства для простого контроля COM-порта.
Reply
>>PS Да, а зачем Вам C для этой задачи? А то какой-нибудь tcl имеет более простые встроенные средства для простого контроля COM-порта.
Для порта может быть,а для теста единовременной работы 16 СОМ-портов?
Reply
Reply
Reply
Leave a comment