Есть такая программка, которая читает данные из 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 порт символы, в какой момент времени-я не знаю и эти символы читаются этой программкой. Меня в ней не устраивает то, что на экран символы выводятся только после того как от устройства придет символ перевода строки.
Как сделать так чтобы программа сразу же выводила полученный символ, а не ждала когда придет символ перевода строки?
В перспективе мне нужно выводить не на экран а обрабатывать полученные данные в программе.
Если можно рабочий пример.