今天直接通过adb shell 的echo往串口里写AT数据,明明写echo AT+B TEST > /dev/ttyS1进去了,但是3g模块却没有响应,这到底是怎么回事?我用显波器量了,好像了有数据,但模块收到后就是正常的响应,到现在都不知道是怎么回事,超级的郁闷啊!各位大虾看看是怎么回事?
1.先将串口的初始化贴出来:
void SetCommAttr(int rate){
printf(" Enter SetDefaultCommAttr \r\n");
struct termios ios;
unsigned long i;
if( m_hdev == 0 || m_hdev == -1){
printf("m_hdev error");
return;
}
if (tcgetattr(m_hdev, &ios) == -1) {
printf("tcgetattr \r\n");
return;
}
cfmakeraw(&ios);
printf("baud rate is %d\r\n", rate);
i = B115200;
cfsetispeed(&ios, i);
cfsetospeed(&ios, i);
ios.c_cflag |= (CLOCAL | CREAD);
ios.c_cflag &= ~CSIZE;
/*stop bits setting*/
ios.c_cflag &= ~CSTOPB;
/*byte size setting*/
ios.c_cflag |= CS8;
/*flow control setting*/
ios.c_cflag &= ~CRTSCTS;
ios.c_lflag &= ~(ICANON | IEXTEN | ISIG | ECHO);
ios.c_oflag &= ~OPOST;
ios.c_iflag &= ~(ICRNL | INPCK | ISTRIP | IXON | BRKINT );
ios.c_cc[VMIN] = 1;
ios.c_cc[VTIME] = 0;
if (tcsetattr(m_hdev, TCSANOW, &ios) == -1) {
printf("tcsetattr 2 \r\n");
return;
}
tcflush(m_hdev, TCIOFLUSH);
printf("Leave SetDefaultCommAttr\r\n");
}
感觉这个没有问题,因为该串口收数据是OK的。