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

夺宝网站建设全网

夺宝网站建设,全网,深圳网站制作公司机构,怎样在工商局网站上做网登USART HMI串口屏单片机通讯上手体验 🔖本文采用淘晶驰4.3寸IPS串口屏实物验证,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");}
http://www.dinnco.com/news/42137.html

相关文章:

  • 电商网站建设公司网站推广具体内容
  • 怎么知道网站关键词的搜索来源注册域名要钱吗
  • 软件dw做网站市场监督管理局电话
  • 网站自己推广怎么做抖音营销推广方案
  • 郑州网站建设找三牛网络营销有哪些形式
  • WordPress标签加HTML关键词整站优化
  • 做私人网站 违法游戏推广员是违法的吗
  • 龙岗网站开发公司湖南网络推广服务
  • 哪家公司做网站专业免费的网站平台
  • 广州做网站哪个公司做得好海外推广运营
  • 湖南长沙装修公司搜索引擎优化工具有哪些
  • 江苏企业网站建设价格山东搜索引擎优化
  • 删格化网站设计重庆森林经典台词图片
  • 网站制作 招聘网络营销活动策划方案模板
  • 网站建设公司上海做网站公司哪家好海南百度推广总代理
  • 新手建立企业网站流程百度网站登录入口
  • 网站优化要做哪些自己怎么制作网站
  • 网站开发程序网搜网
  • 制作网站第一步爱站网关键词挖掘工具站长工具
  • 校园门户网站开发甲方合同付费推广外包
  • 直接用apk 做登陆网站保定seo推广
  • 丰台网站开发最好的seo外包
  • seo是什么意思广东话北京网站sem、seo
  • 医疗网站建设基本流程淘宝推广运营
  • wordpress怎么搜站点杭州网站外包
  • 网站建设视频讲解梁水才seo优化专家
  • 哪些人可以做网站百度订单售后电话
  • 长春微网站seo网站优化优化排名
  • 蛋糕教做网站360地图下载最新版
  • 关于当当网站建设方案免费网站建站2773