当前位置: 首页 > news >正文

USART HMI串口屏+单片机通讯上手体验

USART HMI串口屏+单片机通讯上手体验


  • 🔖本文采用淘晶驰4.3寸IPS串口屏实物验证,HMI串口屏经简单配置即可快速实现,串口通讯效果。串口屏上手简单,有独立的开发套件,容易上手,驱动显示和功能代码独立。本文仅针对串口调试信息显示实现做介绍,不涉及复杂功能实现。
  • 🎞打印输出效果:
    在这里插入图片描述
    在这里插入图片描述

🌼模拟类似于通过电脑上位机串口调试助手,打印调试信息的效果。由于所使用的模块不带RTC,不然可以将接收数据的时间信息也可以添加上去。

  • 🌿串口屏相关资料下载:http://wiki.tjc1688.com/download/index.html

串口协议解析方式

  • 🚩串口协议模式:0-代表字符串指令协议;1-代表主动解析协议。
    在这里插入图片描述
    • 🌿字符串指令协议接收数据格式:t10.txt=\"数据内容\r\n\"\xff\xff\xff
    • 🌿主动解析协议接收数据格式:"数据内容\r\n\",(至于数据内容赋值给哪个对象,根据个人开发而定),该种解析方式,可以参考官方的《解析不定长字符串(以回车换行结尾)》来实现。

📑串口屏幕显示开发简介

  • 🌿依托上位机软件USART HMI来完成开发,以及模拟和程序下载。软件开发界面比较简单,以功能控件作为基础+逻辑表达来实现所需的功能。
    在这里插入图片描述
  • 🔧作为串口调试信息显示,我主要是使用了文本控件+组织的逻辑代码来实现的。
    在这里插入图片描述
  • 🌿逻辑代码的组织,只需要有一点C语言基础的都可以上手,按照官方提供基本逻辑表达式语法即可实现,所需要使用到的关键字比C语言少的多。
  • 🌿接线方式,仅需5V供电线和串口线,4条线即可,如果只做单向通讯显示,屏幕和单片机之间,3条线就可以了。
  • 🌿单片机和屏幕通过串口通讯,波特率一定要匹配,如果两者都是采用独立独立供电方式,那么还需要需要共GND处理。

📓文本控件功能介绍

  • 📌官方介绍:http://wiki.tjc1688.com/widgets/Text.html
  • 单片机如何对文本控件赋值
  1. 在上位机工程新建一个文本控件,假设为t0,将程序下载到串口屏上,
  2. 串口屏串口与单片机串口连接,两者波特率应一致,单片机RX接串口屏TX,单片机TX接串口屏RX。
  3. 发送指令:单片机串口通过字符串模式发送t0.txt=”六六六”

//注意arduino需要注意编码,因为arduino的默认编码是utf-8,串口屏默认编码是gb2312,请保证单片机与串口屏的编码相同,否则串口屏会显示乱码,或者不显示

  1. 发送结束符:单片机通过HEX模式发送0xff 0xff 0xff
  2. 此时屏幕上的t0控件内的文字变为“六六六”
  • 📜文本控件-如何换行
    如果是上位机软件中直接使用多行编辑,直接按回车可以换行.
    在控件的事件中给文本赋值时用\r,例如t0.txt=”123\r456”
    单片机通过串口发送给屏幕时用\r\n,例如printf(t0.txt=”123\r\n456”)

  • 📋文本数据-显示不完全

  1. 文本数据长度不够(检查txt_maxl属性,即划给文本控件的字节长度)GB2312编码下,一个英文或者数字占1个字节,一个中文占2个字节;utf-8编码下,一个英文或者数字占1个字节,一个中文占3个字节
  • 🔨解决方法:将控件txt_maxl改大。
  1. 字库中没有某些字,双击相应的字库可以预览字库,显示字库中有哪些字
  2. 控件属性w,h设置过小导致没办法显示全。
    解决方法:将控件属性w,h改大。
  3. 控件调用字库字符编码和工程设备字符编码不一致。
    解决方法:将工程设备字符编码设置和控件调用的字库字符编码一致。
  4. 字符编码不支持这个字。
    解决方法:p图片来显示这个字。

⛳作为串口数据显示实时性实现

  • ✨让接收到的串口数据按照先后顺序,实时显示,需要用到定时器控件,来实现对已接收到的数据进行处理。
  • 🌿串口文本显示界面,定时器实现页面内所有文本控件内容的更新显示,定时器逻辑实现:
btlen t10.txt,n1.val//获取当前接收到的数据长度
if(n1.val>1)
{n1.val=0if(n2.val==0){t0.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==1){t2.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==2){t3.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==3){t4.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==4){t5.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==5){t6.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==6){t7.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==7){t8.txt=t10.txt//将文本赋值为空t10.txt=""}if(n2.val==8){t9.txt=t10.txt//将文本赋值为空t10.txt=""}n2.val+=1if(n2.val==10){// substr t0.txt,t0.txt,n0.val,sys0-n0.val//清空文本内容n2.val=1t0.txt=t10.txtt10.txt=""t2.txt=""t3.txt=""t4.txt=""t5.txt=""t6.txt=""t7.txt=""t8.txt=""t9.txt=""}
}

🏳‍🌈单片机端串口数据打印格式

  • 🌿基于stm32单片机,Keil开发环境:
printf("t10.txt+=\"STM32F303 SysClk:%u\r\n\"\xff\xff\xff", SysClk);printf("t10.txt+=\"Hello World%d\r\n\"\xff\xff\xff", cnt);
int main(void)
{/* USER CODE BEGIN 1 */uint16_t cnt = 0;uint32_t TimerUART;char str[32];/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */uint32_t SysClk = HAL_RCC_GetSysClockFreq();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if((HAL_GetTick() - TimerUART) > 1000){HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
//            HAL_Delay(1000);printf("t10.txt+=\"STM32F303 SysClk:%u\r\n\"\xff\xff\xff", SysClk);HAL_Delay(500);cnt++;printf("t10.txt+=\"Hello World%d\r\n\"\xff\xff\xff", cnt);
//            sprintf(str, "t10.txt+=\"Hello World%d\r\n\"\xff\xff\xff", cnt);
//            printf("%s", str);
//            memset(str, 0, 32);TimerUART = HAL_GetTick();}}/* USER CODE END 3 */
}
  • 🌿基于Arduino平台
Serial.print("t10.txt+=\"from Arduino UNO\r\n\"\xff\xff\xff");
  • 测试程序:
#include <SoftwareSerial.h>
SoftwareSerial TJC(8,9);//8:RxD,9:TxD
//unsigned long nowtime;
unsigned int cnt;
void setup() {// put your setup code here, to run once:Serial.begin(9600);//初始化串口TJC.begin(9600);pinMode(LED_BUILTIN, OUTPUT);//因为串口屏开机会发送88 ff ff ff,所以要清空串口缓冲区while (TJC.read() >= 0); //清空串口缓冲区
//nowtime = millis(); //获取当前已经运行的时间
}void loop() {char str[32];cnt++;sprintf(str, "t10.txt+=\"Hello World%d\r\n\"\xff\xff\xff", cnt);// put your main code here, to run repeatedly:digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));delay(1000);TJC.print(str);delay(1000);
//  Serial.print("t10.txt+=\"from Arduino UNO\r\n\"\xff\xff\xff");
TJC.print("t10.txt+=\"from Arduino UNO\r\n\"\xff\xff\xff");}

相关文章:

USART HMI串口屏+单片机通讯上手体验

USART HMI串口屏单片机通讯上手体验 &#x1f516;本文采用淘晶驰4.3寸IPS串口屏实物验证&#xff0c;HMI串口屏经简单配置即可快速实现&#xff0c;串口通讯效果。串口屏上手简单&#xff0c;有独立的开发套件&#xff0c;容易上手&#xff0c;驱动显示和功能代码独立。本文仅…...

Linux进程概念(1)

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容为进程的概念做铺垫&#xff0c;主要介绍冯诺依曼体系结…...

uniapp 查看安卓第三方插件抛出的异常

0.安装好andriod studio 和hbuilder 1.配置环境变量 鼠标右键此电脑-》设置》关于》高级系统设置》环境变量》系统变量》path中加入 具体的hbuildr adb目录看个人 2.在cmd中输入命令adb version 查看是否配置成功 出现版本号就是配置成功了 3.去hbuilder中&#xff0c;导航栏运…...

美妆造型教培服务预约小程序的作用是什么

美业市场规模很高&#xff0c;细分类目更是比较广&#xff0c;而美妆造型就是其中的一类&#xff0c;从业者也比较多&#xff0c;除了学校科目外&#xff0c;美妆造型教培机构也有生意。 对机构来说主要目的是拓客引流-转化及赋能&#xff0c;而想要完善路径却是不太容易&…...

Pytorch常用函数

Pytorch 1 一些操作含义2 常用函数torch.squeezetorch.unsqueezetorch.transpose随机数生成Tensor详细内容 1 一些操作含义 下划线后缀含义&#xff1a; 在touch中函数后面加下划线代表是原位(In-place)操作&#xff0c;也就是内存的位置不变化&#xff0c;比如torch.add(valu…...

如何利用python连接讯飞的星火大语言模型

星火大模型是科大讯飞推出的一款人工智能语言模型&#xff0c;它采用了华为的昇腾910 AI处理器。这款处理器是一款人工智能处理器&#xff0c;具有强大的计算能力和高效的能耗控制能力。 华为昇腾910 AI处理器采用了创新的Da Vinci架构&#xff0c;这种架构在设计上充分考虑了…...

【Kubernetes 基本概念】Kubernetes 的架构和核心概念

目录 一、Kurbernetes1.1 简介1.2 为什么要用K8s?1.3 K8s的特性 二、Kurbernetes集群架构与组件三、Kurbernetes的核心组件3.1 Master组件3.1.1 Kube-apiserver3.1.2 Kube-controller-manager3.1.3 Kube-scheduler 3.2 配置存储中心——etcd3.3 Node组件3.3.1 Kubelet3.3.2 Ku…...

Docker安装部署Elasticsearch+Kibana+IK分词器

Docker安装部署ElasticsearchKibanaIK分词器 Docker安装部署elasticsearch拉取镜像创建数据卷创建网络elasticsearch容器&#xff0c;启动&#xff01; Docker安装部署Kibana拉取镜像Kibana容器&#xff0c;启动&#xff01; 安装IK分词器安装方式一&#xff1a;直接从github上…...

PCL setCameraPosition 参数讲解

setCameraPosition 的原型如下void setCameraPosition (double pos_x, double pos_y, double pos_z,double view_x, double view_y, double view_z,double up_x, double up_y, double up_z, int viewport 0);pos_x pos_y pos_z为相机所在的位置view_x view_y view_z 是焦点所…...

有关YOLOV5在测试时,图片大小被调整的问题

执行detect.py文件&#xff0c;在运行栏中出现以下&#xff1a; detect: weightsyolov5s.pt, sourcedata\images, datadata\coco128.yaml, imgsz[640, 640], conf_thres0.25, iou_thres0.45, max_det1000, device, view_imgFalse, save_txtFalse, save_confFalse, save_cropFa…...

【机器学习】四、计算学习理论

1 基础知识 计算学习理论&#xff08;computational learning theory&#xff09;&#xff1a;关于通过“计算”来进行“学习”的理论&#xff0c;即关于机器学习的理论基础&#xff0c;其目的是分析学习任务的困难本质&#xff0c;为学习算法体统理论保证&#xff0c;并根据结…...

spring解决后端显示时区的问题

spring解决后端显示时区的问题 出现的问题&#xff1a; 数据库中的数据&#xff1a; 解决方法 spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: Asia/Shanghai...

大模型冷思考:企业“可控”价值创造空间还有多少?

文 | 智能相对论 作者 | 叶远风 毫无疑问&#xff0c;大模型热潮正一浪高过一浪。 在发展进程上&#xff0c;从最开始的技术比拼到现在已开始全面强调商业价值变现&#xff0c;百度、科大讯飞等厂商都喊出类似“不能落地的大模型没有意义”等口号。 在模型类型上&#xff0…...

ctfshow-web入门37-52

include($c);表达式包含并运行指定文件。 使用data伪协议 ?cdata://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg 是<?php system(cat flag.php);?> base64加密 源代码查看得到flag 38 多禁用了ph…...

前端项目部署后,需要刷新页面才能看到更新内容

问题背景 前端项目部署更新后&#xff0c;通知业务验证&#xff0c;业务点击收藏的标签&#xff0c;打开网页后没有看到修改的内容&#xff0c;每次都需要手动刷新&#xff0c;用户体验非常不好。 问题原因&#xff1a;缓存未过期&#xff0c;浏览器直接读取本地缓存&#xf…...

android 13 write javaBean error at *** 错误

报错代码&#xff1a;红框处。 注意&#xff1a;android10 不会报错&#xff0c;运行正常。android13就报错 错误原因&#xff1a;对象中VerifyDownloadEntity&#xff0c;有个Bitmap成员变量 public class VerifyDownloadEntity {private Bitmap bitmap;private String cooki…...

Only fullscreen opaque activities can request orientation

出现Only fullscreen opaque activities can request orientation是谷歌爸爸在安卓8.0版本时为了支持全面屏&#xff0c;增加了一个限制&#xff1a;如果是透明的Activity&#xff0c;则不能固定它的方向&#xff0c;因为它的方向其实是依赖其父Activity的&#xff08;因为透明…...

前端实验(一)单页面应用的创建

实验目的 掌握使用vite创建vue3单页面程序命令熟悉所创建程序的组织结构熟悉单页面程序运行原理能够编写简单的单页面程序 实验内容 创建一个名为vue-demo的单页面程序编写简单的单页面程序页面运行单页面程序 实验步骤 使用vite创建单页面程序 创建项目名为目录vue-demo的…...

数字人小灿:始于火山语音,发于 B 端百业

火爆的数字人市场又有新消息来袭&#xff1a;火山语音的数字人小灿来了&#xff01; 数字人小灿首曝视频 今年以来&#xff0c;在生成式AI浪潮的助推下&#xff0c;大量企业争相布局数字人赛道。市场之所以如此火热&#xff0c;是因为AI数字人已被视为人工智能时代智能交互的入…...

蓝桥杯刷题

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; &#x1f449;&#x1f3fb;最大降雨量 原题链接&#xff1…...

LED闪灯电路板学习 过程

原理图和pcb是开源的&#xff0c;照着抄就行了,难点主要在于焊接,,焊接我分为三步,第一步一定要点锡&#xff0c;呈现45度角,大约3秒到5秒,第二步就是要夹稳零件往一边靠,第三步就是要顺水的焊锡焊另外一边,最重要就是第二步,熬过去就简单了,打了5个板子花了三天时间从零成功,重…...

字节校招7000人转正率50%:大厂HR体系,正在“去经验化“

字节跳动刚刚用一组校招数据,扯下了大厂老兵最后一块遮羞布。 2026年春,ByteIntern规模狂飙至7000人,转正率史无前例地超过50%。 短短3到6个月,字节用远低于市场价的成本,批量生产出了3500个能够直接上岗的替代者。 同样的薪酬包,大厂宁愿招两个高潜应届生,也不愿意留…...

Docbox与Slate对比分析:哪个API文档生成器更适合你?

Docbox与Slate对比分析&#xff1a;哪个API文档生成器更适合你&#xff1f; 【免费下载链接】docbox REST API documentation generator 项目地址: https://gitcode.com/gh_mirrors/do/docbox 在选择REST API文档生成工具时&#xff0c;开发者常常面临选择困难。今天我们…...

强化学习赋能匹配滤波器:可解释心电R波检测新范式

1. 项目概述&#xff1a;当经典匹配滤波器遇上强化学习在生物医学信号处理&#xff0c;尤其是心电分析这个行当里&#xff0c;R波的精准检测是几乎所有后续分析的基石。无论是计算心率、分析心率变异性&#xff0c;还是筛查心律失常&#xff0c;第一步都是把那些尖尖的R波从嘈杂…...

Product Hunt 每日热榜 | 2026-05-23

1. TestSprite 3.0 标语&#xff1a;让一群并行的智能代理在几分钟内测试你的应用程序。 介绍&#xff1a;TestSprite 能够独立生成并运行你应用程序的端到端测试。对于后端&#xff0c;我们现在可以生成复杂的集成测试&#xff0c;支持动态变量、自动清理和数据流调试。对于…...

Kali NetHunter移动渗透实战:Magisk模块化部署与外设适配

1. 这不是“手机装Kali”&#xff0c;而是重构移动安全测试的工作流很多人第一次看到“手机跑Kali NetHunter”时&#xff0c;下意识反应是&#xff1a;这不就是把Linux桌面系统硬塞进安卓里&#xff1f;界面卡、命令少、工具打不开&#xff0c;最后变成一个炫技失败的摆设。我…...

别再死磕OFDMA了!用Python+PyTorch手把手复现NOMA的SIC接收机(附代码)

用PythonPyTorch实战NOMA的SIC接收机&#xff1a;从理论到代码实现在5G和后5G时代&#xff0c;非正交多址接入(NOMA)技术因其卓越的频谱效率而备受关注。与传统的正交多址(OFDMA)不同&#xff0c;NOMA允许用户在相同时频资源上叠加传输&#xff0c;通过功率域复用和先进的接收机…...

3D光学流技术在机器人动作生成中的应用与优化

1. 3D光学流技术解析与机器人动作生成3D光学流技术是计算机视觉领域的重要突破&#xff0c;它通过分析物体在三维空间中的连续运动轨迹&#xff0c;为机器人动作规划提供了前所未有的精确度。传统2D光学流仅能捕捉平面运动信息&#xff0c;而3D光学流则能完整重建物体在XYZ三个…...

2026年AI论文工具实测排行,哪款真正适合顺利通关?

2026 年学术 AI 论文工具已形成全流程、理工 / 社科、英文 / 中文、免费 / 付费的清晰分化。综合实测排行与场景适配&#xff0c;千笔AI 是中文全能首选&#xff0c;DeepSeek 学术版是理工开源首选&#xff0c;毕业之家是国内毕业专属首选。 一、2026 年实测排行 TOP5&#xff…...

2026年AI论文写作软件盘点:12款神器助你高效完成去痕改写、润色和过检

随着 AI 技术的持续突破&#xff0c;2026 年的论文写作工具市场已进入“智能化、精细化、合规化”的全新发展阶段。从本科生的课程论文到研究生的学位论文&#xff0c;再到科研人员的期刊投稿&#xff0c;AI 工具正以强大的技术支撑覆盖各类学术场景。无论是选题方向的启发、文…...