|
小弟最近在做一个通过串口收发短信的程序。目前遇到一个问题是,当通过串口向GSM模块发送
AT指令时,AT指令的回复有时能读到完整的回复,有时不能。比如读取一条短信时,AT+CMGR=<index>,GSM模块回复的短信通过串口只能读到前几个字节就返回了,而剩下的问题部分数据,在下次读取串口时才能返回。不知道是不是因为我的串口设置出了问题。串口设置代码如下,希望大家能帮帮忙。
int set_termio2(int fd)
{
struct termios term_attr;
tcgetattr(fd, &term_attr) ;
// 9600bps, 8bit, no parity check, 1 stopbit
term_attr.c_iflag &= ~(IXON|IXOFF|IXANY|INLCR|IGNCR|ICRNL|ISTRIP);
term_attr.c_lflag &= ~(ISIG|ECHO|ICANON|NOFLSH);
term_attr.c_cflag &= ~CBAUD;
term_attr.c_cflag |= B9600;
term_attr.c_oflag &= ~(OPOST|ONLCR|OCRNL);
tcflush(fd, TCIOFLUSH) ;
tcsetattr(fd, TCSANOW, &term_attr) ;
return 0;
} |
|