Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Com порт |
Автор: study 1.8.2005, 12:03 |
Привет всем!!! Помогите решить такую задачу. К компьютеру под ОС Linux к Com порту подключен датчик. Мне надо написать прораммку, которая бы посылала бы в Com порт значение и считывала результать, а результат записывать в текстовый файл. Можете помочь... Заранее спасибо... |
Автор: chaos 1.8.2005, 12:28 | ||
вот тебе не большой пример:
|
Автор: study 1.8.2005, 13:09 |
Спасибо chaos, а можешь пояснить, /dev/cua0 - это имя com порта? |
Автор: chaos 1.8.2005, 13:39 | ||
да, но это у меня, у себя ты должен подставить своё имя |
Автор: study 1.8.2005, 13:57 |
Хорошо, а вот я читал, что в com порт надо устанавливать скорость, биты данных, четность и стоповые биты, где здесь эти параметры задавать? |
Автор: chaos 1.8.2005, 13:58 |
тютю ![]() |
Автор: study 1.8.2005, 14:11 |
Я сам точно не знаю, просто смотрел какой-то класс для Visual C++, а там эти данные вводились... Так нужны эти данные или нет? ![]() |
Автор: chaos 1.8.2005, 14:18 |
нет, так все будет нормально работать, во всяком случае я всегда так делаю! Добавлено @ 14:19 если не получиться пиши |
Автор: study 1.8.2005, 14:24 |
Хорошо, спасибо большое, попробую, надеюсь получиться? ![]() |
Автор: Airanius 24.12.2005, 09:55 | ||
И всё-таки... Как читать/писать в порт я разобрался и сам! Подскажите плиз начинаюшему, как изменить параметры порта (скорость, контроль чётность, таймауты, etc.) заранее спасибо |
Автор: scapig 24.12.2005, 15:31 |
Да.. мне тоже интересно, как это все проделывать в линухе, т.к. в винде это делается элементарно... ![]() Это понятно, что работать будет нормально, но как быть если надо , чтобы данные передавались с определенной скоростью...., а не от балды... Как конфигурить??? |
Автор: GrayCardinal 24.12.2005, 17:30 | ||
Я сегодня добрый, минусовать не буду. Но просьба больше не упоминать в Линуховском разделе это нехорошее слово да и еще в таком виде ![]() $ man tcsetattr |
Автор: Бонифаций 25.12.2005, 12:01 |
man stty |
Автор: Airanius 5.1.2006, 23:10 |
Serial Programming Guide for POSIX Operating Systems.pdf - полное и подробное описание работы с Последовательным портом(ищите поисковиками) |
Автор: Guest 12.1.2006, 02:58 |
http://www.opennet.ru/docs/RUS/serial_guide/ http://www.opennet.ru/base/dev/rs232_prog.txt.html |
Автор: mik19 20.6.2008, 17:52 |
Доброго всем дня, у меня тоже возникла подобная задача, но мне не просто считать данные нужно, а немного посложнее мне нужно его мониторить, и в случае изменений, послать команду в шел (при определенных условиях). Другими словами мне нужен демон, который будет постоянно мониторить СОМ порт, и при поступлении данных, скажем, посылать в шел ансишный код буквы F. |
Автор: chaos 23.6.2008, 12:54 |
самый простой вариант настроить таймаут на чтение и в отдельно потоке постоянно пытаться проичтать из порта |
Автор: MAKCim 23.6.2008, 13:23 |
select()/poll()/epoll() |
Автор: Tiffany 7.7.2008, 08:17 | ||
Вот тут нашла в своей проге кусочек, вроде то, что ты просил (если я прально поняла). Тока он на QT, но не страшно - переделать недолго =)
После этих манипуляций в "buf" будут данные с порта, делай с ними что хошь. А ваще читай man select и man termios (настройки порта) |
Автор: nworm 27.9.2008, 00:39 |
Тут возникла задача. При возникновении прерыванию от lpt порта передавать данные на com-порт прям из драйвера lpt-шного прерывания. Копаюсь в разных примерах драйверов. ![]() Можно в этом случае безнаказанно stdio.h подключить к драйверу прерывания от lpt? |
Автор: MAKCim 27.9.2008, 10:48 | ||
нет |
Автор: nworm 27.9.2008, 11:56 |
А может что-нибудь ещё посоветуете? |
Автор: nworm 3.10.2008, 00:23 | ||
Что-то я нашёл.
В ответ на последнюю строку (unsigned int ccflag = *(tty->termios->c_cflag);) мне выдаётся сообщение: /home/man/model2_my/lpt_interrupt/skeleton.c: In function ‘skeleton_kernel_initport’: /home/man/model2_my/lpt_interrupt/skeleton.c:63: error: dereferencing pointer to incomplete type Никто не знает, что с этим делать? |