串口通信,如果read函数返回值是-1,可能是因为? -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

串口通信,如果read函数返回值是-1,可能是因为?

2016-07-08 16:46:36 5291 1

1、用open函数打开串口时候返回值不是-1.可见正常打开了
2、让ARM(上位)与8051(下位)通信,协议是9600,8N1(经常搞通信的都懂的)
3、51单片机大概每秒就向ARM发送一个byte,8位。
4、结果qtopia的terminal上一直打印“Read Error”
5、关掉terminal,打开qtipia自带的串口助手,竟然也接收不到信号!
6、把8051电源关掉,让通信不可能存在,ARM上READ得到返回值也不是0,依然是-1!

下面添加主函数代码。不久将放程序清单。

int main(void)
 {
 int fd;
 int nread;
 char buff[2];
 char *dev ="/dev/ttySAC0"; 
 fd = OpenDev(dev); 
 if (fd>0)
 set_speed(fd,9600); //打开后设置波特率9600
 else
 { 
 printf("Can't Open Serial Port!\n");
 exit(0);
 }
 if (set_Parity(fd,8,1,'N')== FALSE) //设置8,1,n 注意,这里和上面要和下位机相符才可能通信
{
printf("Set Parity Error\n");
 exit(1);
 }
 fcntl(fd,F_SETFL,FNDELAY);//UNBLOCK 
 while(1)
 {
 if(read(fd,buff,1) while((nread = read(fd,buff,1))>0)
 {
 printf("\nLen %d\n",nread);
 buff[nread+1]='\0';
 printf(" Ken %s",buff);
 tcflush(fd, TCIOFLUSH);//读完再度清洗
}
 }
取消 提交回答
全部回答(1)
  • 杨冬芳
    2019-07-17 19:53:40

    看看/dev/ttySAC0的设备权限?

    0 0
相关问答

1

回答

微信小程序wxml模版中都有哪些共同属性?

2022-08-17 07:57:45 106浏览量 回答数 1

1

回答

Java HashMap replace() 方法的返回值是什么?

2021-11-19 18:35:06 117浏览量 回答数 1

1

回答

请问nacos注册中心要怎样做多环境部署

2021-02-01 19:49:41 504浏览量 回答数 1

1

回答

#React displayName类属性的用途是什么?

2020-05-08 10:55:56 1501浏览量 回答数 1

1

回答

随机/固定hashcode()值对密钥的影响是什么?

2020-04-26 09:50:59 345浏览量 回答数 1

1

回答

hbase region预分片数量如何定?

2018-11-30 00:19:28 3680浏览量 回答数 1

0

回答

请问一下在lamp6.1.0下面怎么升级gcc到5.0以上版本?

2018-08-28 18:57:41 1055浏览量 回答数 0

1

回答

邮箱子账户误删除,删除账号为昨天下午4点多删除的,删除后在5点多新建立的账号

2018-02-19 01:45:34 674浏览量 回答数 1

0

回答

切换appKey后初始化返回“找不到路由”的错误怎么解决?

2017-10-24 09:45:08 993浏览量 回答数 0

1

回答

请问怎么删除json中的某个变量key?

2016-03-05 13:21:14 2871浏览量 回答数 1
+关注
杨冬芳
IT从业
1
文章
9167
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载