void serial_init(int fd)options.c_cflag |= ( CLOCAL | CREAD ); options.c_cflag &= ~CSIZE;
{
struct termios options;
tcgetattr(fd, &options);
options.c_cflag &= ~CRTSCTS;要点2:读取数据的时候要注意,因为节点发送数据的时候,控制中心的ZigBee已经收到数据,而我们还未 做好准备,当ZigBee往串口写数据写到一半的时候,我们才做好准备收,这时候只能收到后半部分的数据,
options.c_cflag |= CS8; // 8位数据
options.c_cflag &= ~CSTOPB; //停止位
options.c_iflag |= IGNPAR; // 忽略校验错误
options.c_oflag = 0; // 无输出模式
options.c_lflag = 0; //本地模式禁用
options.c_cc[VTIME] = 10; // 表示 read() 超时值 50 表示 5秒后仍没有数据则返回
options.c_cc[VMIN] = 1; // 表示读到多少个字节就返回 5 表示读完5个字节就返回
cfsetispeed(&options, B115200); // 设置波特率
cfsetospeed(&options, B115200);
tcsetattr(fd,TCSANOW,&options);
}
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |