我有以下C程序:

#include

#include

#include

int main()

{

int fd = open("/dev/ttyS0",O_RDWR | O_NOCTTY | O_NONBLOCK);

if(fd < 0)

{

perror("Could not open device");

}

printf("Device opened\n");

struct termios options;

tcgetattr(fd,&options);

cfmakeraw(&options);

cfsetispeed(&options,B19200);

cfsetospeed(&options,B19200);

tcsetattr(fd,TCSANOW,&options);

char txpacket[] = {0x23,0x06,0x00,0xdd,0xf9};

ssize_t written = write(fd,txpacket,sizeof(txpacket));

printf("Written %d bytes\n",written);

printf("Starting to wait for target to respond\n");

while(1)

{

fd_set readset;

FD_ZERO(&readset);

FD_SET(fd,&readset);

int nCount = select(fd + 1,&readset,NULL,NULL);

if(nCount > 0)

{

if(FD_ISSET(fd,&readset))

{

int i;

char buffer[128];

ssize_t bytesread = read(fd,buffer,sizeof(buffer));

printf("Received %d bytes\n",bytesread);

for(i = 0; i < bytesread; i++)

{

printf(" %02x",buffer[i]);

}

}

}

}

}

该程序打开串行设备/ dev / ttyS0,向其写入一系列数据并开始监听响应.我得到以下输出:

Device opened

Written 6 bytes

Starting to wait for target to respond

Received 0 bytes

Received 0 bytes

Received 0 bytes

Received 0 bytes

Received 0 bytes

Received 0 bytes

...

并且该应用程序消耗100%的cpu.即使目标硬件实际传输它,我也无法接收任何数据.

怎么了?

linux获取打开串口失败的原因,linux – 从串口读取失败相关推荐

  1. linux中打开pdf文件_在Linux中减少PDF文件大小

    linux中打开pdf文件 In our Linux system, If we have a large PDF file, we may want to reduce it's size. We ...

  2. linux获取java环境变量的值,linux获取java环境变量的值

    linux获取java环境变量的值 [2021-02-11 00:17:01]  简介: 服务器 这篇文章主要为大家展示了linux环境下怎么配置环境变量,内容简而易懂,希望大家可以学习一下,学习完之 ...

  3. arcgis构建金字塔失败什么原因_天猫入驻为什么失败?知舟集团给出失败原因和解决办法...

    市场是有限的,竞争是无限的,前有京东.唯品会.拼多多.苏宁易购等多个平台争先恐后,后有云集.极有家等多个新平台如雨后春笋般起,但是在众多电商平台中,天猫依然独占鳌头,保持市场份额第一的趋势,这也是无数 ...

  4. 信用社服务器获取安装文件失败是怎么回事,安装驱动器读取失败是怎么回事

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 安装驱动器读取失败的原因有: 1.光驱连接不当造成 光驱安装后,开机自检,如不能检测到光驱,则要认真检查光驱排线的连接是否正确.牢 ...

  5. linux tomcat启动失败的原因,Linux平台Tomcat启动失败问题排查

    部署在 Linux 服务器上边的 Tomcat服务通常在项目更新的时候需要重新启动,但是会由于各种原因,导致 Tomcat 启动失败,本文将以Linux 发行版 centOS 7 系统为例介绍两种 T ...

  6. linux添加失败的原因,linux下execvp失败设置errno=7的原因是什么?

    看下面的代码 int main(int c,char** v) { v[c-1] = NULL; execvp("ls",v); perror("execvp" ...

  7. linux 获取和释放信号量_学习Linux(39)信号量

    进程信号量基本概念 信号量与已经介绍过的 管道.FIFO以及消息列队不同,它本质上是一个计数器,用于多进程间对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源( ...

  8. linux 获取文件夹下文件信息,linux下获取文件夹下子文件列表

    linux下获取文件夹下子文件列表 预置条件: 1.只遍历当前目前,不遍历当前目录的子文件夹 2.根据用户提供的开始时间戳以及持续时间,返回在这个时间区间内被修改过的文件列表. 相关知识: 1.str ...

  9. linux获取网卡的ip,Windows和Linux系统下获取多网卡的ip地址

    在Windows或者Linux操作系统中,获取多网卡信息,可通过执行命令方式获取,具体如下: public Vector getServerIps() { Vector address = new V ...

最新文章

  1. 聊聊flink的Tumbling Window
  2. 初识ES-安装kibana
  3. JAVA笔记14__多线程共享数据(同步)/ 线程死锁 / 生产者与消费者应用案例 / 线程池...
  4. Minimum Ternary String CodeForces - 1009B(思维)
  5. Android 4.X 系统加载 so 失败的原因分析
  6. 38岁超任模拟器设计者自杀!死前留下真名与神秘自拍照,最后一刻开源higan
  7. 有零基础开始学习python的小伙伴吗?学起来难吗?
  8. 阿里实名认证Java版(详细教程)
  9. jquery打印网页当前页
  10. hive表分区上传数据出现的一个问题及解决思路
  11. SpringBoot启动流程简要
  12. java中系统托盘的实现
  13. [LeetCode] 871. Minimum Number of Refueling Stops
  14. shell-判断是不是文件夹
  15. 【Verifying transaction: failed】
  16. 攀爬Spring珠穆拉玛峰:Spring的启动流程
  17. 条码软件如何实现扫描二维码显示汉字
  18. 一个简单的购物车加减按钮
  19. SQL Server从入门到精通(转)
  20. GitLab+Shell用户周期性数据统计分析工具(自动生成HTML格式)

热门文章

  1. IE11不支持Selenium 2.0的解决方法
  2. 解决小程序背景图片在真机上不能查看的问题
  3. layui报错 “Layui hint: 模块名 xxx 已被占用“ 的问题解决方案
  4. 静态类型和动态类型的语言有什么区别?
  5. win7旗舰版系统如何重装系统win10
  6. java jdbc mysql util_Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC
  7. ubuntu 分区_系统小技巧:迁移通过Wubi方式安装的Ubuntu系统
  8. 手机logging什么意思_手机三轴稳定器的“三轴”是什么意思?
  9. 利用函数求两个数的最大值
  10. 盒子模型之外边距margin(HTML、CSS)