我在从以下方式打开的串口读取一些数据时遇到了一些麻烦.我已经多次使用这个代码实例并且一切正常,但现在,由于某些原因我无法弄清楚,我完全无法从串口读取任何内容.

我能够在另一端写入并正确接收所有内容,但是从未收到回复(正确发送)(不,电缆都可以;))

我用来打开串口的代码如下:

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

if (fd == -1)

{

Aviso("Unable to open port");

return (fd);

}

else

{

//Get the current options for the port...

bzero(&options, sizeof(options)); /* clear struct for new port settings */

tcgetattr(fd, &options);

/*-- Set baud rate -------------------------------------------------------*/

if (cfsetispeed(&options, SerialBaudInterp(BaudRate))==-1)

perror("On cfsetispeed:");

if (cfsetospeed(&options, SerialBaudInterp(BaudRate))==-1)

perror("On cfsetospeed:");

//Enable the receiver and set local mode...

options.c_cflag |= (CLOCAL | CREAD);

options.c_cflag &= ~PARENB; /* Parity disabled */

options.c_cflag &= ~CSTOPB;

options.c_cflag &= ~CSIZE; /* Mask the character size bits */

options.c_cflag |= SerialDataBitsInterp(8); /* CS8 - Selects 8 data bits */

options.c_cflag &= ~CRTSCTS; // disable hardware flow control

options.c_iflag &= ~(IXON | IXOFF | IXANY); // disable XON XOFF (for transmit and receive)

options.c_cflag |= CRTSCTS; /* enable hardware flow control */

options.c_cc[VMIN] = 0; //min carachters to be read

options.c_cc[VTIME] = 0; //Time to wait for data (tenths of seconds)

//Set the new options for the port...

tcflush(fd, TCIFLUSH);

if (tcsetattr(fd, TCSANOW, &options)==-1)

{

perror("On tcsetattr:");

}

PortOpen[ComPort] = fd;

}

return PortOpen[ComPort];

初始化端口后,我通过简单的写命令写一些东西给它…

int nc = write(hCom, txchar, n);

其中hCom是文件描述符(并且没关系),并且(正如我所说)这是有效的.但是……当我事后阅读时,我从errno得到一个“暂时不可用的资源”错误.

我测试了选择以查看文件描述符何时读取…但它总是超时!

我读了这样的数据:

ret = read(hCom, rxchar, n);

我总是得到一个EAGAIN,我不知道为什么.

更新:

硬件工作正常!我可以看到串口上有入站数据,因为我已经制作了一条调试电缆来读取在另一个终端上发生的事情.所以…

我知道非阻塞应该做什么.我的问题是……为什么不读任何东西!相同的设置在Windows上工作正常,所以所有硬件都工作正常…

这让我疯了!我确定这很简单!我甚至试图摆脱O_NONBLOCK,看看我什么时候收到东西……但没有……

解决方法:

EAGAIN Non-blocking I/O has been

selected using O_NONBLOCK and no data

was immediately available for reading.

标签:c-3,linux,serial-port

来源: https://codeday.me/bug/20191001/1839072.html

linux串口返回条件,c – Linux – 串口读取返回EAGAIN相关推荐

  1. linux内核竞争条件漏洞,Linux内核竞争条件漏洞-导致远程代码执行

    原标题: Linux内核竞争条件漏洞-导致远程代码执行 导读*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 运行了Linux发行版 ...

  2. Linux先发送条件变量,linux 条件变量 浅谈Linux条件变量的使用

    想了解浅谈Linux条件变量的使用的相关内容吗,在本文为您仔细讲解linux 条件变量的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:linux,条件变量,下面大家一起来学习吧. Linu ...

  3. linux 多个条件查询,linux中怎么条件查询

    在linux中可以通过"find"命令实现条件查询,其语法如"find / -name file",用于指定目录搜索,参数"-name"表目 ...

  4. linux下串口通信程序,关于Linux下串口通信的一点心得

    1. 打开串口 与其他的关于设备编程的方法一样,在 Linux 下,操作.控制串口也是通过操作起设备文件进行的.在 Linux 下,串口的设备文件是 /dev/ttyS0 或 /dev/ttyS1 等 ...

  5. 【嵌入式Linux】嵌入式Linux应用开发基础知识之串口应用编程

    文章目录 前言 1.ARM芯片是如何使用串口发送/接收数据的 2. TTY体系中设备节点的差别 做个小实验 3.TTY驱动程序框架 4.在STM32MP157上做串口实验的准备工作 4.1.使能设备树 ...

  6. linux两个进程同时打开串口,linux串口操作及设置详解

    串口操作需要的头文件 #include /*标准输入输出定义*/ #include /*标准函数库定义*/ #include /*Unix标准函数定义*/ #include #include #inc ...

  7. .NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯

    1,前言 开发环境:在 Visual Studio 2017,.NET Core 2.x 串口通讯用于设备之间,传递数据,物联网设备中广泛使用串口方式连接通讯,物联网通讯协议 :Modbus 协议 A ...

  8. 命令及串口命令_嵌入式Linux系列第7篇:使用串口

    1.引言 串口是我们实际工作中经常使用的一个接口,比如我们在Linux下使用的debug串口,它用来登录Linux系统,输出log.另外我们也会使用串口和外部的一些模块通信,比如GPS模块.RS485 ...

  9. Linux环境下2410开发板串口读写关键代码

    今天偶然整理原来的项目开发文档,找到了曾经在2410开发板上做的串口读写程序的代码. 现在贴出来供大家参考. #include <qtopia/qpeapplication.h> /*** ...

最新文章

  1. R语言ggplot2可视化创建堆叠的柱状图(stacked barplot)并且每个堆叠的柱状图都缩放到总和为100%实战:最后所有的堆叠的柱子都一样高、Y轴以百分比的形式来显示
  2. 9550电机_电机转矩与性能的关系
  3. 正则 -12至+14 闭区间,小数位只能是(0.25,0.5,0.50,0.75,0.0,0.00) 前面的正负符号可选...
  4. python性能测试模块_python模块介绍- multi-mechanize 通用的性能测试工具
  5. PHP添加mcrypt扩展模块(亲测)
  6. Spring Boot教程(7) – 直观地理解Spring容器
  7. VisualStudio安装
  8. Attention is all you need注意力机制代码解析
  9. CCF201909-2 小明种苹果(续)(100分)【序列处理】
  10. Win10搭建python3环境
  11. python 爬虫性能_python-爬虫性能相关
  12. centos7安装lnmp
  13. 【原创】flv文件的三种下载方法
  14. 基于QT开发的线性代数初学者的矩阵计算器设计
  15. SolidWorks导入3DSource零件库的模型方法介绍
  16. 纯CSS3绘制的小猫笑脸动画
  17. JavaScript 全栈工程师培训教程(React.js + Node.js)
  18. ME525+ 刷机工具及设置中心号码
  19. My blog has been migrated to GitHub.
  20. java 编写线程公共类_Java实现线程间通信方式

热门文章

  1. 比teamviewer更屌的远程软件,程序员莫错过
  2. 朝鲜APT组织RedEye(Reaper)||ISIS持续进行 OpTheWorld行动
  3. How to identify – and avoid – travel photo ‘porn’
  4. 百度推手机操作系统靠谱吗?--手机操作系统+移动广告分发平台
  5. Linux下两种增加/tmp文件的方法
  6. 口罩形势下的医院财务管理
  7. 硅光电池采集用于植物叶片农残检测
  8. 请输入要搜索的内容 搜索 13 转发 微博 Qzone 微信 看完这篇HTTP,跟面试官扯皮就没问题了
  9. python 中文注释
  10. PostFX v2 –惊人的视觉效果,已升级