The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Чтение из Com порта под linux"
Отправлено nkly, 22-Фев-07 12:15 
Есть такая программка, которая читает данные из com порта и выводит данные в std.
Вот ее код
#include <fcntl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <iostream>
#include <unistd.h>

int open_port(void);

int main(void)
{
    fd_set rfds;
    struct timeval tv;
    int retval, fd, k, p, bufsize;
    int buf_size = 10;
    char buf[buf_size];
        
    /* Следим ввели ли что-либо. */
    fd=open_port();
    FD_ZERO(&rfds);
    FD_SET(fd, &rfds);
    
    tv.tv_sec = 15;/* Сколько секунд ждем. */
    tv.tv_usec = 0;
    
    retval = select(fd+1, &rfds, NULL, NULL, &tv);
    /* На значение tv в данный момент полагаться нельзя! */

    if (retval)
        {
        printf("Данные доступны.\n");
    /* FD_ISSET(0, &rfds) will be true. */
            k= read(fd,buf,buf_size);
        if (k>0)
            {    std::cout<<"Полезные символы ";
                for (int j=0; j<k ;j++)
                    {
                    std::cout<<buf[j];
                    }
            }
        }
    else
        {printf("Нет данных в течение 15 секунд.\n");}
close(fd);
}

int  open_port(void)
    {
      int fd; /* файловый дескриптор для порта */
    fd=open("/dev/ttyS0",O_RDWR | O_NONBLOCK);
    if (fd == -1)
      {
       /*
    * Could not open the port.
    * Если порт не открывается.
    */

    perror("open_port: Unable to open /dev/ttyS0 - ");
      }
     else
    return (fd);

    }

У меня к com порту подсоединено устройство которое присылает в мой com порт символы, в какой момент времени-я не знаю и эти символы читаются этой программкой. Меня в ней не устраивает то, что на экран символы выводятся только после того как  от устройства придет символ перевода строки.
Как сделать так чтобы программа сразу же выводила полученный символ, а не ждала когда придет символ перевода строки?
В перспективе мне нужно выводить не на экран а обрабатывать полученные данные в программе.
Если можно рабочий пример.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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