串口通信编程.md

小米路由器R4 Breed刷机后:2种官方固件恢复路径与原厂UBoot刷回指南 本文详细介绍了小米路由器R4在刷入Breed后恢复官方系统的两种方法:Breed直刷官方固件和TTL刷回原厂UBoot。针对不同场景提供了操作步骤、常见问题解决方案及风险规避技巧,帮助用户安全高效地完成系统恢复,确保设备稳定性和保修权益。 阅读详情
概念性知识
  • 1.什么是串口?
    串口是计算机一种常用的接口,常用串口是RS232接口,RS232事实上有三种(A,B,C),不同类别分别采用不同的电压表示on和off,使用最广泛的是RS-232-C,对应的有RS-232-C标准,也是串行通信的一个物理标准。
    Windows操作系统下,串口名为COM1、COM2……
    Linux操作系统下,串口设备文件名为/dev/ttyS0、/dev/ttyS1….注:USB/RS-232转换器名为/dev/ttyUSB0
  • 2.什么是串行通信?
    串行通信是指数据用一根传输线被逐位顺序传送,串行通信分为同步通信和异步通信,常用的是异步通信。同步通信的传输速率比异步通信更快,但大部分RS-232硬件却不支持同步通信,因为同步通信还需要其他的硬件和软件,而且传输过程中,发送设备和接收设备必须保持完全同步。
    异步通信是指一帧字符用起始位和停止位来完成收发同步
    异步传输数据格式:

这里写图片描述

一帧字符以起始位开始,然后是数据位、奇偶校验位、停止位。(这些数据在串口编程时,需要自己设置,即收发双方约定一致的协议)
数据位为5~8位,从最低位开始传送;
奇偶校验位:奇校验,偶校验,无校验三种方式;
停止位:可以是1位,1.5位,2位,其中,1.5位一般用不到。
- 3.串口通信协议
协议包括:收发双方的同步方式、传输控制步骤、差错检验方式、传输速率、报文格式等。
RS-232-C标准:RS-232-C标准对两个方面作了规定,即信号电平标准和控制信号线的定义。RS-232-C采用负逻辑规定逻辑电平,信号电平与通常的TTL电平也不兼容,RS-232-C将-5V~-15V规定为“1”,+5V~+15V规定为“0”。图1是TTL标准和RS-232-C标准之间的电平转换。
波特率:每秒传输数据的位数,标准波特率系列为110、300、600、1200、4800、9600和19200。可以同过编程来设置 接口的接受波特率和发送波特率,收发双方的波特率设置应该一致。
数据位:5~8位,一般设置为8位
奇偶校验位:奇校验、偶校验、无校验
停止位:1位,2位,1.5位;

Linux下串口编程

记住:Linux下皆为文件
串口编程流程:

这里写图片描述
包含头文件:

#include<iostream>
#include<stdlib.h>            //标准函数库定义
#include<unistd.h>          //Unix标准函数定义
#include<sys/types.h>      //基本系统数据类型
#include<sys/stat.h>        //文件状态定义
#include<fcntl.h>            //文件控制定义
#include<errno.h>          //错误号定义

其余头文件根据编程所需,自行添加。
- 1.打开串口
串口设备通过串口终端设备文件访问,文件为:/dev/ttyS0,/dev/ttyS1…;
Tips:查看当前Linux系统连接的所有串口,可以使用命令行:ls -a /dev/tty*(或ls -a /dev/ttyUSB*)
以打开文件的方式打开串口设备,调用open()函数:fd=open(port,O_RDWR|O_NOCTTY|O_NDELAY);
参数O_NOCTTY:表示打开一个终端设备,程序不会成为该终端的控制终端;
参数O_NDELAY:表示不关心端口另一端是否激活;
- 2.设置串口
最基本的设置串口包括:波特率、数据位、奇偶校验位、停止位
主要是设置struct termios结构体的各成员值

struct termio
{    unsigned short  c_iflag;    /* 输入模式标志 */    
    unsigned short  c_oflag;        /* 输出模式标志 */    
    unsigned short  c_cflag;        /* 控制模式标志*/    
    unsigned short  c_lflag;        /* local mode flags */    
    unsigned char  c_line;            /* line discipline */    
    unsigned char  c_cc[NCC];    /* control characters */
};

设置波特率

int   speed_arr[] = { B115200, B19200, B9600, B4800, B2400, B1200, B300};
树莓派和电脑之间串口通信编程 阅读详情

相关推荐

Python编程实现USB转RS485串口通信

---作者吴疆,未经允许,严禁转载,违权必究--- ---欢迎指正,需要源码和文件可站内私信联系--- -----------点击此处链接至博客园原文----------- 功能说明:Python编程实现USB转RS485串口通信(发送数据、接收数据均为16进制格式) 运行环境:Windows7&Python3.7与Ubuntu14.04&Python2.7,宇泰UT...

weixin_30555753的博客 5065

树莓派和电脑的串口通信协议编程

1、数据格式(好比语言),包括数据位、停止位、奇偶校验位。2、波特率(好比语速),比如常用的波特率:115200。半双工就是两个人吵架,一个人骂的时候另外一个人闭嘴。全双工就是两个人吵架可以相互对骂。1、修改cmdline.txt。3、重启(试过没重启也行)串口通信——多机通信。

weixin_45637109的博客 318

无线IAP上位机设计与实现完整项目

为了保证通信质量,波特率的选择需要兼顾传输速度与稳定性。常见标准波特率包括:9600、19200、38400、57600、115200、230400、460800、921600 bps等。随着速率提升,对线路质量和晶振精度的要求也显著提高。实践中推荐根据MCU主频、串口外设支持范围及通信距离选择合适值。下表列出了几种典型MCU平台在不同主频下的最大可用波特率误差容忍度:MCU型号主频(MHz)支持最大波特率典型误差限推荐使用波特率STM32F10372。

weixin_35815766的博客 451

MD204L编程软件

MD204L编程软件TP200v4.7.0CN.exe

MD-SAL通信

详细讲解Opendaylight中MD-sal的传输过程

IAR9.4报错之编码方式

IAR9.40编码方式错误导致的报错

qq_36081075的博客 2626

量化投资之工具篇一:Backtrader从入门到精通(1)-手把手教你零基础实现一个策略案例

Backtrader是重要的量化框架,本文记录学习该框架的笔记,内容主要基于Backtrader的网站指导文档。虽然该框架目前用于量化投资领域,但是可以作为数据处理的基本架构,进行改造后用于各种数据的处理,尤其适用于对原始数据处理完成后应用一定的策略进行预测以及可视化处理。 1、简介 Backtrader的特点,就是两点: 1、易于使用; 2、参见第1条。 那么如何使用Backtrader呢?比把大象装进冰箱复杂点,一共4步: 创建一个Cerebro引擎: 加入一个Strategy...

仓鼠王的博客 5万+

系统安装、qt配置、安装pcie驱动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 安装Linux系统指定:ununtu20.04并配置相关软件环境 前言 提示:这里可以添加本文要记录的大概内容: ununtu20.04、Qt 5.9.0、pcie驱动 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装系统 制作系统盘(win10),在开机时按相应键进入BIOS,(华硕需要先改配置启动->CSM->开启->第一个选项选第一个或第二个),等待即可 进入后按照https://www.sysgeek.

weixin_44832804的博客 2204

Elasticsearch 8.17.1 JAVA工具类

整理了Elasticsearch8.17最新版的API工具类

weixin_39555954的博客 1123

AI Agent开发大全第一课-AI是什么以及如何使用AI

近年来,人工智能的迅猛发展引发了广泛的关注,尤其是“大模型”这一概念越来越深入人心。大模型,顾名思义,通常指的是那些拥有大量参数、能够处理复杂任务的机器学习模型。与传统小模型相比,大模型在数据处理、信息理解和生成等方面表现更加出色。为了理解为什么现在的AI被称为大模型,我们需要深入探讨几个关键因素。立角色是指在提示词中清晰地界定交互双方的身份。明确用户希望模型扮演的角色,可以帮助模型更准确地理解上下文和用户需求。

打造全国最全的AI Agent开发知识领域的博客 1406

基于YOLOv5/v8/v10的垃圾分类识别系统:设计实现与性能优化(附代码+数据集)

做完这个毕设,你已经掌握了从数据准备、模型训练到界面开发的全流程。把模型部署到树莓派上,做个真正的“智能垃圾桶”硬件装置;加入语音提示功能,检测到垃圾后自动语音播报类别;试试融合多个YOLO模型的优势,让分类精度再上一个台阶。按照这个教程一步步做,你的毕设不仅能顺利完成,还能做出很多亮点。要是过程中遇到啥问题,别慌,慢慢琢磨或者咱们一起聊聊,肯定能把这个毕设做成让你满意的作品。

know_F0727的博客 462

OpenClaw 子代理配对失败问题分析与解决方案

OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 148

使用verilog设计实现QR分解

QR(正交三角)分解法是求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量。 使用verilog对QR实现方法进行设计并进行功能仿真: 如下: 顶层模块代码: module TOP( H1R, H1I, H2R, H2I, H3R, H3I, H4R, H4I, clk, rst_n, Y1R, Y1I, Y2R, Y2I, X1R, X1I, X2R, X2I ); parameter width = 16; // I

QQ_778132974的博客 2149

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 动态规划法.md
下一篇: 浅谈 Python 编码问题
rootLuYF
博客等级 码龄11年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值