The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как послушать com-порт?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 17-Дек-02, 15:44  (MSK)
Здравствуйте.
Не подскажет ли кто каким образом можно послушать com порт
я тут поискал но нашел примерчик тока на perl'e а надо на
на с++.
если знает кто подскажите или скажите в какую сторону посмотреть.
Тут возникла мысля привязать поток вывода к устройству но вот как это сделать и какой поток ???? вот тут загвоздочка:(
Заранее благодарен.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Как послушать com-порт?"
Сообщение от Hadash Искать по авторуВ закладки on 17-Дек-02, 21:04  (MSK)
poprobui inb(comport)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 18-Дек-02, 09:42  (MSK)
>poprobui inb(comport)

че то я в манах глянул нет там не inb не comport
и вродебы сом порт(1) в *nix называется cuaa0
или я не прав?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Как послушать com-порт?"
Сообщение от NL Искать по авторуВ закладки on 18-Дек-02, 13:25  (MSK)
inb самая что нинаесть низкоуровневая функция и в манах про нее ничего нет
пользуется ей так
var = inb(port);
port это порт твоего ком порта например 0х278
в var записывается текущее значение твоего порта port
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 18-Дек-02, 14:29  (MSK)
>inb самая что нинаесть низкоуровневая функция и в манах про нее ничего
>нет
>пользуется ей так
>var = inb(port);
>port это порт твоего ком порта например 0х278
>в var записывается текущее значение твоего порта port

а если попробовать читать через файловый дескриптор?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Как послушать com-порт?"
Сообщение от NL Искать по авторуВ закладки on 18-Дек-02, 16:00  (MSK)
>а если попробовать читать через файловый дескриптор?

вот это самое верное решение! :) почитай по этому поводу man ioctl
какие ioctl используются под ком-порт я точно не помню, в манах все есть.
значит откраваешь файл устройства и вперед. чтобы что то сделать с самим ком-портом используешь ioctl. по-моему на эту тему уже где то было обсуждение, поищи по форуму

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 18-Дек-02, 16:47  (MSK)
>вот это самое верное решение! :) почитай по этому поводу man ioctl
>
>какие ioctl используются под ком-порт я точно не помню, в манах все
>есть.
>значит откраваешь файл устройства и вперед. чтобы что то сделать с самим
>ком-портом используешь ioctl. по-моему на эту тему уже где то было
>обсуждение, поищи по форуму

В общем я так сделал
//открытие и проверка сом порта
int fd; // Файловый дескриптор для порта
  fd = open("/dev/cuaa0", O_RDWR | O_NOCTTY | O_NDELAY);
  if(fd==-1)
    cout << "Error!!!  Cant open port!!";
     else
   cout << fd << endl;
//привязываем выходной поток
ifstream is("/dev/cuaa0");
char ch;
//берем все символы из потока и кидаем их на консоль
while (is.get(ch))
  cout << ch;

но эта падла висит на while и все нет ни какой информации :(
а она должна быть так как слушаю цифровую АТС а с нее логи на сом порт идут постоянно.... под виндой проверял по гипер терминалу логи есть а вот как под фрей проверить не знаю :(
и еще одна загвоздка  соединение д б на скорости 9600 а как ее выставить?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: Как послушать com-порт?"
Сообщение от vnp emailИскать по авторуВ закладки on 19-Дек-02, 10:13  (MSK)
>  fd = open("/dev/cuaa0", O_RDWR | O_NOCTTY | O_NDELAY);

В имени устройства вы уверены?

>while (is.get(ch))
>  cout << ch;
>
>но эта падла висит на while и все нет ни какой информации

Не понял, как O_NDELAY может висеть...

>под виндой проверял по гипертерминалу логи есть а вот как под
>фрей проверить не знаю

minicom

>и еще одна загвоздка  соединение д б на скорости 9600 а
>как ее выставить?

man termios

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 19-Дек-02, 10:57  (MSK)
>>  fd = open("/dev/cuaa0", O_RDWR | O_NOCTTY | O_NDELAY);
>В имени устройства вы уверены?
Да уверен

>>while (is.get(ch))
>>  cout << ch;
>>но эта падла висит на while и все нет ни какой информации
>Не понял, как O_NDELAY может висеть...
Может убрать его?
Ну может и не на while но тогда где?
У меня сделана проверка: после открытия файла выдать его дескриптор
так она его выдает и дальше все.....и не выходит и инфу не пишет...
есть еще одна задумка сделать не while а do чтоб хоть раз цикл пройти

>>под виндой проверял по гипертерминалу логи есть а вот как под
>>фрей проверить не знаю
>
>minicom
спасибо ща попробуем

>>и еще одна загвоздка  соединение д б на скорости 9600 а
>>как ее выставить?
>man termios
еще раз спасибо посмотрим

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "RE: Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 19-Дек-02, 11:29  (MSK)
>>  fd = open("/dev/cuaa0", O_RDWR | O_NOCTTY | O_NDELAY);
>
>В имени устройства вы уверены?

сорри за предидущий ответ ...
я тут в ядро глянул там ком порт на девайсе cio0 а вот в папке /dev его нет
но есть cuaa0 .... я в тупике :((((

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 19-Дек-02, 10:07  (MSK)
>вот это самое верное решение! :) почитай по этому поводу man ioctl
>
>какие ioctl используются под ком-порт я точно не помню, в манах все
>есть.
>значит откраваешь файл устройства и вперед. чтобы что то сделать с самим
>ком-портом используешь ioctl. по-моему на эту тему уже где то было
>обсуждение, поищи по форуму

В общем почитал я маны к ioctl и чего то я там не нашел нефига про сом порт . Понял что надо прописать дескриптор файла , а потом какието опции но вот где глянуть эти опции для сом порта??????
ман cuaa0 и подобные ничего не дали :((((
кто знает подскажите плиз, очень надо !!!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "RE: Как послушать com-порт?"
Сообщение от NL Искать по авторуВ закладки on 19-Дек-02, 11:47  (MSK)
>кто знает подскажите плиз, очень надо !!!

http://linuxland.itam.nsc.ru/misc/other19/index.html

почитай, очень доходчиво все описано, как раз по твоей теме.сделаю лишь маленькую оговорку. там при  прослушивании компорта (точнее дескриптора компорта) ипользуется функция select, я бы ее заменнил на poll, они по своему назначению эдентичны, но poll мне кажется удобней.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "RE: Как послушать com-порт?"
Сообщение от AlexT emailИскать по авторуВ закладки on 19-Дек-02, 12:26  (MSK)
>http://linuxland.itam.nsc.ru/misc/other19/index.html
>
>почитай, очень доходчиво все описано, как раз по твоей теме.сделаю лишь маленькую
>оговорку. там при  прослушивании компорта (точнее дескриптора компорта) ипользуется функция
>select, я бы ее заменнил на poll, они по своему назначению
>эдентичны, но poll мне кажется удобней.

блин!!!
я эту статью сто раз перечитывал и до ioctl так и не дошел(лох)
но вот щас нашел :)
спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Всем спасибо!!!!!!!!!!!!"
Сообщение от AlexT emailИскать по авторуВ закладки on 19-Дек-02, 14:45  (MSK)
Все всем спасибо зав помощь!
Все заработало оказывается еще вчера просто я не дождался логов :)))
Или запустил корявую весию и потом не убил она висела в памяти и мешала:)
Короче все хорошо !!!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "RE: Всем спасибо!!!!!!!!!!!!"
Сообщение от NL Искать по авторуВ закладки on 19-Дек-02, 15:42  (MSK)
вот и чудненько :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "RE: Всем спасибо!!!!!!!!!!!!"
Сообщение от AlexT emailИскать по авторуВ закладки on 20-Дек-02, 14:28  (MSK)
>вот и чудненько :)
ели хотите могу подкинуть еще задачку :)
Теперь все эти логи на лить в базу mysql :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру