Garbage data from serial port.

Posted by sasayins on Stack Overflow See other posts from Stack Overflow or by sasayins
Published on 2010-06-07T03:10:08Z Indexed on 2010/06/07 3:22 UTC
Read the original article Hit count: 222

Filed under:
|

Hi

I wrote a code in Linux platform that read the data in serial port, my code below:

int fd;
char *rbuff=NULL;
struct termios new_opt, old_opt;
int ret;

fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY);
if( fd == -1 )
{
   printf("Can't open file: %s\n", strerror(errno));
   return -1;
}
tcgetattr(fd, &old_opt);
new_opt.c_cflag = B115200 | CS8 | CLOCAL | CREAD;
new_opt.c_iflag = IGNPAR /*| ICRNL*/;
new_opt.c_oflag = 0;
new_opt.c_lflag = ICANON;

tcsetattr(fd, TCSANOW, &new_opt);
rbuff = malloc(NBUFF);
printf("reading..\n");
memset(rbuff,0x00,NBUFF);
ret = read(fd, rbuff, NBUFF);
printf("value:%s",rbuff);
if(ret == -1)
{
   printf("Read error:%s\n",strerror(errno));
   return -1;
}
tcsetattr(fd, TCSANOW, &old_opt);
close(fd);

My problem is the code above doesn't read the first data that was transmitted, then the second transmission the data is garbage, then the third is the normal data.

Did I missed a setting in the serial port?

Thanks.

© Stack Overflow or respective owner

Related posts about c

    Related posts about linux