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.