大家一定要帮我,linux下串口通讯问题
solly 2003-12-23 10:59:48 我在linux下串口通讯是碰到如下问题。我用两台机器来实现串口通讯问题。但在接收是出现如下问题:
我发送了四组数据
第一组:abcdefghijklmnopqrstuvwxyz
第二组:ABCDEFGHIJKLMNOPQRSTUVWXYZ
第三组:abcdefghijklm
第四组:ABCDEFGHIJKLM
接收到的数据
第一组:abcdefghijklmnopqrstuvwxyz
第二组:ABCDEFGHIJKLMNOPQRSTUVWXYZ
第三组:abcdefghijklmNOPQRSTUVWXYZ
第四组:ABCDEFGHIJKLMabcdefghijklm
我的程序代码如下
串口初始化
int FskAgent::InitCom(char *cCom)
{
fd = open(cCom, O_RDWR | O_NOCTTY);
if (fd < 0)
{
return 0;
}
fcntl(fd,F_SETFL,FASYNC);
tcgetattr(fd, &oldtio);
//newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_cflag = B38400 | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VMIN] = 1;
newtio.c_cc[VTIME] = 0;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);
tcgetattr(0, &oldstdtio);
tcgetattr(0, &newstdtio);
newstdtio.c_lflag &= ~(ICANON | ECHO);
tcsetattr(0, TCSANOW, &newstdtio);
return 1;
}
读取数据
void FskAgent::ReadCom(char *cInceptMsg)
{
int i = 0;
read(fd, cInceptMsg, 1000);
cInceptMsg[strlen(cInceptMsg)] = 0x00;
printf(" Buf length is : %d \n",strlen(Buf));
for(i = 0 ; i < 44 ; i++)
printf("[#0x%2x]\n",Buf[i]);
}
各位,请仔细帮我分析一下,看看是初始化是出现了问题还是在我读取串口数据时出现了问题。我一定高分相送。