当前位置: 技术问答>linux和unix
Linux 串口读取问题---急--------急--------急--------急------
来源: 互联网 发布时间:2016-09-01
本文导语: 是 用Qt 做一个 在linux下 和 51 通讯的 界面。网上看 qt要第三方类。或者标准.读取 。。在网上看了.这是C代码。。但是读取有问题。。read()每次都反会-1 。。各位大侠帮帮忙。问题出在哪里.?该怎么解决。麻...
是 用Qt 做一个 在linux下 和 51 通讯的 界面。网上看 qt要第三方类。或者标准.读取
。。在网上看了.这是C代码。。但是读取有问题。。read()每次都反会-1 。。各位大侠帮帮忙。问题出在哪里.?该怎么解决。麻烦大侠个改一改。。
。。在网上看了.这是C代码。。但是读取有问题。。read()每次都反会-1 。。各位大侠帮帮忙。问题出在哪里.?该怎么解决。麻烦大侠个改一改。。
#include /*标准输入输出定义*/
#include /*标准函数库定义*/
#include /*Unix标准函数定义*/
#include /**/
#include /**/
#include /*文件控制定义*/
#include /*PPSIX终端控制定义*/
#include /*错误号定义*/
#include
#define BAUDRATE B9600
#define DEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1
#define FALSE 0
#define TRUE 1
/***@brief 设置串口通信速率
*@param fd 类型 int 打开串口的文件句柄
*@param speed 类型 int 串口速度
*@return void*/
int speed_arr[] = {B38400, B19200, B9600, B4800, B2400, B1200, B300,
B38400, B19200, B9600, B4800, B2400, B1200, B300,};
int name_arr[] = {38400, 115200, 9600, 4800, 2400, 1200, 300,
38400, 115200, 9600, 4800, 2400, 1200, 300,};
void set_speed(int fd, int speed) {
int i;
int status;
struct termios Opt;
tcgetattr(fd, &Opt);
for (i = 0; i 0) {
printfCharArr(cbuf);
}
printf("n等待1sn");
sleep(1); //等待1秒
//等待接收返回信息
printf("n等待结束n");
while(1){
printf("返回值:%dn",nread);
while ((nread = read(fd, buff, 8)) > 0) {
int i;
for (i = 0; i