CH376的串口模式操作U盘(读、写、txt文件、csv文件)

news/2024/5/2 11:14:27/文章来源:https://blog.csdn.net/m0_59113542/article/details/127146170

文中介绍的可能有一些繁琐,因为也是想解释的更清楚一些,但是小弟希望大家能认真看完。

市面上关于ch376串口的知识介绍不多,可以说基本没有,博主当时也废了一些力气,在此希望给大家一些帮助,认真看完绝对会使用ch376读、写、txt、csv文件。  (在此提一嘴,ch375这款芯片确实也能使用串口读写U盘,但是375的数据传输不是常规的8位数据传输,也就是说我们调起来会非常的费劲,376是常规的8位数据传输,建议大家使用ch376)

ch376使用串口通讯时,波特率为9600、数据以十六进制发送

一、读txt文件

发送的命令命令用途正常返回数据
57 AB 06 EE测试通讯接口和工作状态(EE为测试数据,返回按位取反,也就是11)11
57 AB 15 06选择U盘模式51 15
57 AB 30检查磁盘是否连接14
57 AB 31初始化磁盘14
57 AB 2F 31 2E 54 58 54 00设置将要操作的文件(31 2E 54 58 54为文件名1.TXT,以00结尾)不返回
57 AB 32打开文件14
57 AB 3A 04 00设置要读取的字节数(04 00为要读取四个字节数据,采用大端对齐。如果要读取1个字节数据,则发送01 00)1D
57 AB 27读取数据返回 字节数+1.TXT中的数据
57 AB 3B继续字节读指令14

大家千万不要把最后一条指令57 AB 3B遗忘了,这时候有人问:“我只写一次,为什么还要发送继续字节读呢?”,,,官方数据手册中规定(虽然我试过不加也好使,但咱们还是做个乖宝宝,跟着手册来,哈哈哈) 

现象:

        

                  所创建的文件及内容                                                使用ch376读取返回的数据
 

二、写txt文件

发送的命令命令用途正常返回数据
57 AB 06 EE测试通讯接口和工作状态(EE为测试数据,返回按位取反,也就是11)11
57 AB 15 06选择U盘模式51 15
57 AB 30检查磁盘是否连接14
57 AB 31初始化磁盘14
57 AB 2F 32 2E 54 58 54 00设置将要操作的文件(32 2E 54 58 54为文件名2.TXT,以00结尾)不返回
57 AB 34打开文件14
57 AB 3C 02 00设置要写入的字节数(02 00为要读取四个字节数据,采用大端对齐。如果要写入1个字节数据,则发送01 00)1E
57 AB 2D 31 32写入数据所写入的字节数(本例子中是02)
57 AB 3D继续字节写指令14
57 AB 36 31关闭文件并保存14

大家千万千万不要把最后两条指令57 AB 3D    57 AB 36 31遗忘了,这个和读的时候还不太一样,读的时候不加好使,写的时候不加这两条指令,数据不会保存。数据只在内存中,而不被写入到文件中

现象:

  

 三、创建CSV文件并写入数据 (U盘中事先没有这个文件)

在说指令之前,首先说一些要写表格文件需要注意的问题,我们写表格总要换行换列写吧,不可能在一个单元格中存放所有的数据吧,所以我们需要注意换行换列问题

换行:0X0D   0X0A             换列:0X2C  0X20

     

命令介绍:

发送的命令命令用途正常返回数据
57 AB 06 EE测试通讯接口和工作状态(EE为测试数据,返回按位取反,也就是11)11
57 AB 15 06选择U盘模式51 15
57 AB 30检查磁盘是否连接14
57 AB 31初始化磁盘14
57 AB 2F 31 2E 43 53 56 00设置将要操作的文件(31 2E 43 53 56为文件名1.CSV,以00结尾)不返回
57 AB 34打开文件14
57 AB 3C 04 00设置要写入的字节数(04 00为要读取四个字节数据,采用大端对齐。如果要写入1个字节数据,则发送01 00)1E
57 AB 2D 31 2C 20 32写入数据(这里注意,我们上一条指令设置本次写入的字节数为04,但由于换列操作2C 20占了两个字节,所以说实际传输的数据为两个字节,分别为31 32)所写入的字节数(本例子中是04)
57 AB 3D继续字节写指令14
57 AB 36 31关闭文件并保存14

 四、追加CSV文件中的数据 (U盘中事先就有这个文件,在最后追加数据)

 除28行、29行、31行外追加数据与上面介绍的三 没有什么区别,下面就着重说一些28 29 31

28:由于我们实在原有文件中追加数据,所以只需打开原有文件就行,所以是命令 57 AB 32 而不是创建命令 57 AB 34

29:因为我们追加数据肯定是在最后追加,所以需要将指针调整至数据尾端,57 AB 39 FFFFFFFF

其中FFFFFFFF就是代表末尾的意思,也就是最后一个数据所在的单元格

31:为什么传输的数据要先加一个0D 0A? 因为我们调整完指针之后,指向最后一个单元格,所以需要先来一个换行指令0D 0A,使指针指向新的单元格。

       

 没加0D 0A直接补加数据 3、4                        加了0D 0A后补加数据 3、4

有疑问的地方欢迎大家指正,评论或私聊都可以

能否看在小弟如此细致分享的份上,给个关注吧,各位铁铁!!

制作不易,感谢大家支持,感谢!!!!!!

  --------------一个正在努力的人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_206654.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT项目】简易五子棋游戏(人机对战)— 完整源码

文章目录前言一、游戏实现效果二、需求分析三、解决方案四、核心步骤1.插入棋盘图2.双方落子3.输赢判定4.重新开始五、完整源码1.main.cpp2.chessboard.h3.chessboard.cpp总结前言 本篇,我们将使用QT实现一个人机对战的简易五子棋游戏,适合QT零基础和初学…

直线生成以及pcl直线拟合

目录写在前面codecompile&runresult参考写在前面 1、本文内容 pcl直线拟合,生成带噪声的直线并进行直线拟合的demo 2、平台 windows, pcl1.10.0 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/127147223 code line_seg…

国庆节日头像框小程序源码带流量主广告

国庆头像小程序最新可用源码,自己把图片链接换下,直接使用小程序开发工具修改即可!,需要添加合法域名,教程我都放文档里了,类目选择信息查询。 需要源码的找我!

(附源码)计算机毕业设计SSM本科培训班学员信息管理系统

毕设帮助,指导,本源码分享,调试部署(见文末) 3.3 系统功能分析 本科培训班学员信息管理系统主要包括两大功能模块,即管理员功能模块和学员模块。 (1)管理员模块:系统中的核心用户是系统管理员&a…

postgresql源码学习(44)—— 守护进程Postmaster与服务进程Postgres

一、 Postmaster与Postgres进程的关系 pg使用的是多进程架构,众多进程之中,最为重要的就是在前一节main函数中出现的Postmaster与Postgres进程。 守护进程Postmaster:负责PG的启动和关闭;监听和接收客户端连接请求,为…

宋宇-课堂对话领域研究热点与 前沿趋势探究

好家伙。。。 看这种论文容易自闭,,,怎么能写这么好呢。。。 下次看看博士的论文吧还是。。 定义 课堂对话( classroom dialogue /discourse) 是师生间或者生生间围绕教育教 学目标的实现所形成的良性的交流活动。[1&#xff3d…

大一作业HTML电影网页作业(HTML+CSS)

🌩️ 精彩专栏推荐👇🏻👇🏻👇🏻 💂 作者主页: 【进入主页—🚀获取更多源码】 🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套…

[leetcode]450.删除二叉树搜索树的节点

一.题目描述 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤&…

ES6--》读懂JS中—Class类

目录 Class类 初识class class中getter和setter设置 表达式方式书写 静态属性与静态方法 私有属性和私有方法 class继承 静态属性和方法继承 私有属性和方法继承 class显示原型与隐式原型关系 Class类 ES6提供了更接近传统语言的写法,引入了Class(类)这个…

脚本学习:1

今天所学的就俩个案例。 1.用脚本实现,鼠标移动到我的淘宝显示菜单&#xff0c;移除菜单隐藏 基本思路通过display来控制 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>脚本示例</title>&l…

03 NLP-神经网络基础常识复习3-梯度的推导和反向传播的实现

计算图的介绍结束了&#xff0c;下面我们来实现一些实用的层。这里&#xff0c;我们将实现Sigmoid层、全连接层,Affine层和Softmax with Loss层。 1.Sigmoid层 sigmoid函数由 表示&#xff0c; sigmoid函数的导数由下式表示 Sigmoid层的计算图可以绘制成如下图。这里&#x…

PWM实验(控制蜂鸣器,风扇,马达)

cortex-A7核实现PWM对蜂鸣器&#xff0c;风扇&#xff0c;马达的控制 1.PWM概念 PWM为一种对模拟信号电平进行数字编码的方法&#xff0c;通过高分辨率计数器的使用&#xff0c;方波的占空比被调制用来对一个具体模拟信号的电平进行编码。 A7核的芯片有控制PWM的脉冲宽度调制定…

【设计模式】-创建型模式-第2章第4讲-【原型模式】

目录 1、原型模式&#xff08;Prototype Pattern&#xff09;概念 2、浅拷贝与深拷贝 2.1、概念 2.2、Java 中的深浅拷贝 浅拷贝&#xff1a; 深拷贝&#xff1a; 实例 浅拷贝 深拷贝的两种实现方式 方式一 方式二 3、原型模式的优缺点 4、 结尾 1、原型模式&#…

带你一步步分析webpack是如何执行打包产物的

引入关系如图所示&#xff1a; 圈出来文件d是异步导入的文件。 wepback版本如图所示&#xff1a; 执行打包命令&#xff0c;产物如下图&#xff1a; 会生成两个js文件&#xff0c;一个是入口文件打包的testxx.js&#xff0c;还有一个是异步文件d生成的src_d_js.js。 打包后的…

CSS学习298~355(品优购+Web服务器)

1 品优购项目规划 1.1 网站制作流程 我们主要做前台页面设计 1.2 品优购项目整体介绍 项目名称: 品优购项目描述:品优购是一个电商网站,我们要完成PC端首页、列表页、注册页面的制作 1.3 品优购项目的学习目的 电商类网站比较综合,里面需要大量的布局技术,包括布局方式、…

数据结构-复杂度(深入学习版+Java版)

文章目录一、复杂度经典例子分析1、计算时间复杂度分析题1&#xff1a;O(NM)&#xff0c;循环题2&#xff1a;O(N^2)&#xff0c;冒泡排序题3&#xff1a;O(logN)&#xff0c;二分查找题4&#xff1a;O(N)&#xff0c;阶乘递归题5&#xff1a;O(2^N)&#xff0c;斐波那契递归(满…

ffmpeg、ffplay、ffprobe 常用命令详解(音视频必备)

前言&#xff1a; &#x1f604;作者简介&#xff1a;小曾同学.com,小伙伴们也可以叫我小曾&#xff0c;一个致力于测试开发的博主⛽️ 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;…

回溯算法 - 二叉树中和为某一值的路径 字符串的排列

目录 1.二叉树中和为某一值的路径 1.1 题目描述 1.2 回溯算法的一般步骤 1.3 解题思路 1.4 代码实现 2. 字符串的排列 2.1 题目描述 2.2 解题思路 2.3 代码实现 1.二叉树中和为某一值的路径 1.1 题目描述 输入一颗二叉树的根节点root和一个整数expectNumber&#xff…

华为模拟器ensp学习笔记

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 目录前言1️⃣如何注册eNSP设备?2️⃣如何通过SecureCRT登录eNSP模拟设备&#xff1f;结语前言 记录华为模拟器使用中遇到的问题 1️⃣如何注册eNSP设备? 如何注册eNSP设备 重新注册AR、WLAN设备&#xff1a; 启动AR时&…

模块化:CommonJS规范

目录 CommonJS规范 模块使用环境区分 核心语法 如何使用 CommonJS&#xff1a;服务器端使用 CommonJS&#xff1a;浏览器端使用 CommonJS规范 模块使用环境区分 CommonJS规范中&#xff0c;每一个JS文件都可以作为一个模块。模块的引入&#xff0c;主要区分两个环境&…