|
本帖最后由 fanyundemuzi 于 2013-3-3 17:39 编辑
fd = open("/dev/tq2440_serial1", O_RDWR|O_NOCTTY|O_NDELAY //TQ2440开发板+TTL串口拓展模块
串口初始化:
struct termios options;
tcgetattr(fd, &options); //得到当前串口参数
options.c_cflag |= (CLOCAL | CREAD); //使能接收、使能本地状态
options.c_cflag &= ~CRTSCTS; //取消硬件流控制
options.c_cflag &= ~CSIZE; //设置字符大小
options.c_cflag |= CS8; //数据为8位
options.c_cflag &= ~CSTOPB; //一个停止位
options.c_cflag |= IGNPAR; //忽略奇偶校验错误
options.c_oflag = 0; //指定终端控制信息
options.c_lflag = 0; //本地模式设置
cfsetispeed(&options, B9600); //设置输入波特率为9600
cfsetospeed(&options, B9600); //设置输出波特率为9600
tcsetattr(fd, TCSANOW, &options); //激活新配置
往串口里写入数据:
unsigned char temp[LEN]; //假设temp[]大于4160的数组
nwrite = write(fd, temp, sizeof(temp)); //往串口里面写入temp[]数据
printf ("nwrite:%d\n"); //为什么输出始终都是显示“nwrite:4160”,如果temp[]数组的长度3160(小于4160),nwrite就显示3160(显示正常)
是不是因为tq2440_serial1驱动问题,限制了缓冲区的大小?具体怎么改?怎么解决?
|
|