Linux串口接收程序会将0x0D转换成0x0A的问题记录

串口接收数据错误0D变0A问题 在调试串口软件过程中遇到一个烦人的问题,就是s 阅读详情

最近在调试Linux环境下串口接收代码时发现了一个现象:子串口模块发送的数据0x0D,在ARM板上接收并打印出来时变成了0x0A。

其实这个问题在很久以前就遇到过,一时想不起来了,现在记录如下:

在配置串口时,添加上以下语句:

Newtio.c_iflag &= ~ICRNL;

 

理论依据是:

ICRNL 将输入的回车转化成换行(如果IGNCR未设置的情况下)

0x0D 回车符CR

0x11 ^Q VSTART字符

0x13 ^S VSTOP字符

 

所以在传输0x0D 0x11 0x13等特殊字符的时候都会出现接收异常的情况。

 

终端I/O的工作方式tcsetattr tcgetattr 终端I/O有两种不同的工作方式:规范方式输入处理。在这种方式中,终端输入以行为单位进行处理。对于每个读要求,终端驱动程序最多返回一行。 非规范方式输入处理。输入字符不以行为单位进行装配。 如果不作特殊处理,则默认方式是规范方式。V7和BSD类的终端驱动程序支持三种终端输入方式:精细加工方式(输入装配成行,并对特殊字符进行处理); 原始方式(输入不装配成行,也不对 阅读详情

相关推荐

linux上面使用ftdi芯片模拟485串口详解

linux上面使用ftdi芯片模拟485串口详解 一、设备信息 cpu:AR9344 switch:QCA8337 ftdi:FT4232HL 内核版本:Linux version 2.6.31--LSDK-9.2.0_U11.14 ps:我这里使用FT4232HL芯片模拟485串口的功能 FT4232HL芯片功能介绍,这些都能在ftdi官网找到相关手册 1.单芯片USB到四串行端口与各种配置。 2.整个USB协议由芯片处理,USB不需特定固件...

zengyaowu1988的博客 4890

linux 环境下读取串口, 接收不到0x11, 0x0d, 0x13等数据的解决办法

linux 环境下读取串口, 接收不到0x11, 0x0d, 0x13等数据的解决办法 // add by dern options.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON); 即可解决特殊字符丢失问题。 网上许多流行的linux串口编程的版本中都没对c_iflag(termios成员变量)这个变量进行有效的设置,这样传送ASCII码时没什么问题,但传送二进制数据时遇到0x0d,0x11和0x13...

WXXGoodJob的博客 2565

Ubuntu串口驱动安装及串口权限设置

Ubuntu串口驱动安装及串口权限设置 在作Ubuntu串口调试时候的一些问题总结,供大家参考,也帮助自己记录一下。 一、背景:系统版本Ubuntu18.04 控制板:stm32F103 二、驱动安装,TTL转usb串口,ch340驱动 1.lsmod | grep usbserial命令查看系统是否支持USB转串口 有会提示:usbserial 49152 1 ch34x 2.如果没有就要安装CH340驱动:http://www.wch.cn/download/CH341SER_LI

Yong_24的博客 7213

UNIX环境高级编程 学习笔记 第十八章 终端I/O

20世纪70年代后期,系统Ⅲ(UNIX System III)发展出一套不同于V7( Version 7 Unix)的终端IO例程,使得UNIX终端IO处理分立为两种不同风格:一种是系统Ⅲ风格,它延续到了System V;另一种是V7风格,它成为了BSD派生的系统的标准。和信号一样,POSIX.1在这两种分隔的基础上制定了终端IO的标准,本章介绍POSIX.1终端IO标准。 终端IO之所以复杂,部分原因是人们将其应用到很多地方:终端、计算机之间的直接连接、调制解调器、打印机等。 终端IO有两种工作模式: 1

tus00000的博客 1601

ubuntu内核信息从串口0打印到文件

不想每次都用dmesg来看信息,我们希望把信息打印到串口,可是用没有物理串口,怎么办?   用ubuntu上的虚拟串口。 打开ubuntu的设置,点Add添加一个serial port设备,选Output to file,如到C:\kernel.txt.  a. 设置vmware添加serial port, 使用文件作为串口 然后,启动ubuntu。根据ubuntu serial cons

ymangu的专栏 2730

记录一次pl2303串口驱动解决故障

问题已解决,解决方法,找到正确驱动,修改驱动中的代码差异,编译安装。 dmesg|tail [1273358.599957] usb 2-1.2: new full-speed USB device number 5 using ehci-pci [1273358.687401] usb 2-1.2: New USB device found, idVendor=067b, idProduct=23c3 [1273358.687406] usb 2-1.2: New USB device strin

thebestismin的专栏 3301

串口特殊字符传送接受分析

linux系统中写了个串口接收程序,发送端依次从0x00~0xFF发送字符,但接收端某些字符老接收不到,分析及其解决方法如下: 0x0d 回车符CR 0x11 ^Q VSTART字符 0x13 ^S VSTOP字符 ICRNL 将输入的CR转换为NL IXON 使起动/停止输出控制流起作用 一、只接收到数据: 05 06 07 08 09 0a 解决此问题之前我们先看终端I...

Eraser的博客 1192

Linux下实现串口命令行交互的实战指南

本文还有配套的精品资源,点击获取 简介:在Linux中,串口通信是一个重要且实用的技术,尤其在硬件调试和系统集成中。本实战指南详细介绍了Linux命令行环境下进行串口交互所需的关键知识点,包括命令行基础、串口配置、命令行交互的C/C++程序编写、代码的可移植性、调试与测试方法、示例代码结构,以及安全性和权限的注意事项。通过学习本指南,读者可以创建出一个灵活且可移植的串口命令...

weixin_35751194的博客 2483

linux串口对0X0D、0X0A等特殊字符的处理

摘要:项目中使用STM32与RK3588串口通信传输温湿度数据时,出现CRC8校验失败问题。经排查发现,Linux端会将特殊字符(如0x0D、0x0A等)自动转换,导致接收数据被篡改,CRC校验值错误。解决方案是在Linux串口初始化时清除输入阶段的自动处理标志(IGNBRK、ICRNL等),使数据以原始形式接收。修改后,系统能正确接收特殊字符,CRC校验恢复正常。该问题表面偶现实为必现,关键在于禁用串口的自动转换功能。

沉在嵌入式的鱼的博客 1136

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

4.无限共轭距柯克物镜设计——zemax学习笔记

无限共轭cooker物镜

fly_daerm的博客 1596

Linux 串口编程记录

参考:https://blog.youkuaiyun.com/wangzhen209/article/details/52620906 执笔时间:2019.1.18 一、安装串口驱动 在 /dev/目录中 tty* ttys* 的文件为串口设备的驱动文件,现在的笔记本和台式机很多已经不在自带串口,我用了USB-串口的数据线,此时驱动为ttyUSB*,我用的Ubuntu 18.04 内核中已经自带USB-...

zywvvd的博客 2139

c# U盘禁用---守护进程(插入,拔出,卸载等操作)

一、简介 传统的对U盘禁用,我们多采用修改注册表的方式,详情参考:https://blog.youkuaiyun.com/qq_25372599/article/details/79815407;本文将介绍一种其他的方式–后台守护程序。其原理非常简单:当守护程序检测到U盘的插入信号,我们自动卸载U盘,致使系统无法识别U盘,达到禁用U盘的效果。 二、程序设计 2.1 变量定义 strin...

星星之火燃亮码空 2846

linux下开发串口遇到的问题记录

原文地址:http://www.dotblogs.com.tw/k/archive/2012/07/24/73572.aspx 近日在调试串口的时候发现,另一设备向我ARM板的串口发送0x0d,我接收之后变成了0x0a,这是问题一;另外当对方向我发送一串数据,如果其中有0x11,那么我总是漏收此数,这是问题二。 由于问题莫名其妙,以为是笔记本的USB转232线缆的问题,换,问题依旧。 以为是

keny888999的博客 422

编译原理2024期末复习(面向做题,大题速学)【太原理工大学】

归约-归约”冲突就是在项目集规范族一个状态中两个。

m0_63181421的博客 1万+

SAP CO实战:如何用KKA2/CJ88结果分析码搞定项目收入成本匹配(附真实案例)

本文深入探讨了SAP CO模块中KKA2和CJ88结果分析码在项目收入成本匹配中的高阶应用。通过真实案例解析,详细介绍了这两种分析码在分阶段收入确认和终验法项目中的配置技巧与实战经验,帮助财务人员高效解决复杂业务场景下的财务数据处理难题。

weixin_29230773的博客 167

LINUX串口共享

概述 Linux下共享串口通过在screen中执行minicom来实现。 minicom minicom是一个串口通信工具,就像Windows下的超级终端。可用来与串口设备通信,如调试交换机和Modem等。 安装 yum install minicom 配置 minicom –s 则minicom启动,屏幕出现如下的界面: 使用down箭头选

GodLaughing 3477

基于Simulink的加速度计振动分析:单自由度质量-弹簧-阻尼系统

摘要:基于Simulink的加速度计单自由度振动分析 本文研究了加速度计的单自由度(SDOF)质量-弹簧-阻尼系统模型,通过MATLAB/Simulink平台建立了完整的振动分析仿真系统。文章详细阐述了理论建模过程,推导了系统运动微分方程和传递函数,并提供了Simulink模型搭建的具体步骤和MATLAB实现代码。研究通过正弦扫频、随机振动和冲击响应三种典型输入信号,分析了系统的幅频特性、相频特性及时域响应,验证了加速度计的工作机理。仿真结果表明,该方法能有效模拟加速度计在不同激励条件下的动态特性,为传感器

AI的内部世界的博客 163

Linux启动无串口输出的调试排查记录

实际原因:VirtualBox 虚拟机未勾选 64 位操作系统类型,导致 ONIE 镜像无法识别为 64 位环境,early boot 阶段卡在 long mode 检查。Ubuntu 这类主流发行版镜像能自动适配为 64 位启动,但 ONIE 这类定制镜像无法自动识别,必须手动设置虚拟机为 64 位。解决办法关闭虚拟机。打开 VirtualBox 虚拟机设置 → 常规 → 基本,将操作系统类型设置为 64 位(如"Ubuntu (64-bit)“或"Other Linux (64-bit)”)。

哈喽。 773

17、神经网络训练算法与高阶模糊Cohen - Grossberg神经网络稳定性分析

本文介绍了一种新的数据驱动算法用于神经网络训练,该算法继承三次样条权重函数的优点,具有简单架构和良好泛化性能,并通过并行机制显著提升训练速度。同时,研究了高阶模糊Cohen-Grossberg神经网络(HOFCGNN)在可变及无界延迟下的稳定性,利用M矩阵理论和向量Lyapunov函数方法,证明了系统平衡点的存在性、唯一性和全局指数稳定性。研究成果为神经网络的高效训练与稳定应用提供了理论支持和技术路径。

b9c0d的博客 147

马达种类全解析:VCM、Stepper、Piezo 在手机相机中的驱动原理与工程差异

在现代手机影像系统中,马达承担着核心成像组件的动态调节任务,如自动对焦(AF)、光学防抖(OIS)以及变焦调节。目前主流采用三类驱动器件:VCM(Voice Coil Motor)、Stepper(步进马达)、Piezo(压电马达)。不同马达方案在结构复杂度、响应速度、功耗、驱动方式与模组厚度适配等方面差异显著,对成像系统的性能表现有直接影响。本文将结合最新旗舰设备的应用现状,系统剖析这三类驱动马达的工作原理、架构特点与工程应用经验,为工程实践中选型与调试提供参考。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3778

linux共享串口,LINUX串口共享

概述Linux下共享串口通过在screen中执行minicom来实现。minicomminicom是一个串口通信工具,就像Windows下的超级终端。可用来与串口设备通信,如调试交换机和Modem等。安装yum install minicom配置minicom –s 则minicom启动,屏幕出现如下的界面: 使用down箭头选择serial port setup,出现具体各选项的配置:A — S...

weixin_35734209的博客 795

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Linux下串口编程心得

转自:http://blog.sina.com.cn/s/blog_5335d4340100c7ba.html 最近一段时间,需要完成项目中关于Linux下使用串口的一个部分,现在开帖记录过程点滴。 项目的要求是这样的,Qt应用程序主要完成数据采集和发送功能,原来采用的是把ARM板的串口设置城网口,然后通过拨号上网,通过socket编程实现数据的传输的。后来发现稳定性不高,于是换了一个第三方公司生产的DTU,希望直接往串口传输数据。 一开始在google中海搜关键字“Qt串口编程”,得出的结论是

fengyunjh的专栏 2082

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

linux 串口工具_Linux 下串口工具

给大家推荐一款串口工具,一般做嵌入式开发的朋友都会用到,Linux 下大多数人会用 minicom 和 putty。我以前用的是 putty,最近换成用 picocom 了。原因很简单,直接可以在终端里面用,没有太复杂的配置。每次要使用的时候一行命令就搞定了,sudo picocom -b 115200 /dev/ttyUSB1这里要注意你的串口设备有可能不是 /dev/ttyUSB1,有的是 /...

weixin_39666782的博客 1328

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Linux下查看串口是否可用的笨方法

最近尝试将一个网关程序从 VxWorks 平台移植到 Linux 平台。在串口方面遇到了一些问题,这里记录一下。   首先在 VxWorks 下,用 devs 命令查看设备:-> devs drv name 0 /null 1 /tyCo/0 1 /tyCo/1 2 /pcConsole/0 2 /pcConsole/1 9 host: 4 /ram 11 /vio

程序员「阿基米东」的编程之旅 1万+

解决Linux下CH341驱动安装问题与最终串口通讯实现

本文介绍了在Jetson Orin Nano上解决CH341 USB转串口驱动问题的完整流程。首先通过dmesg排查发现系统缺少CH341驱动,随后从官网下载并编译安装驱动。为解决开机自动加载问题,将驱动复制到系统目录并执行depmod。接着处理与brltty服务的冲突问题,停止并删除该服务。最后通过修改udev规则实现永久权限配置,并提供了Python串口测试代码。整个过程包含驱动安装、冲突解决、权限设置三个关键步骤,最终成功实现USB串口通信功能。

2301_81363363的博客 1427
上一篇: Debian下修改系统时间的方式(命令行)
下一篇: elf文件格式总结
cooButter
博客等级 码龄14年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值