淘晶驰USART HM串口屏作为上位机 mcu对其命令分析-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4104|回复: 2

淘晶驰USART HM串口屏作为上位机 mcu对其命令分析

[复制链接]
发表于 2021-2-10 02:05 | 显示全部楼层 |阅读模式
本帖最后由 z01228 于 2021-2-10 02:04 编辑

试验平台:mcu:  arduino uno    串口屏:淘晶驰 TJC4024K032_011X

  ****这个内容不是什么高大上的,不喜勿喷*****

背 景:最近做一个项目需要做一个复杂的菜单,但是oled12864 屏幕太小并且纯使用uno进行编程的话控制逻辑比较复杂,并且有各种参数+交互设备。所以想到了触摸串口屏幕(也是刚刚开始学习这个)来降低编程的难度。






试验目的:串口屏作为上位机发送字符串命令给单片机,单片机对命令进行解析并且分发给各个变量、再依据这些执行相关命令函数(目前没有添加这块)目前用9600波特率进行试验 mcu分析命令数据基本稳定,但是屏幕点击比较快的话  mcu分析的数据 还是有可能出错  有实际应用的朋友可以自己添加验证程序。
   
程序部分:
  
/*串口屏发送命令数据
* 命令示例:pA-220B-111D


mcu串口分析结果

串口屏开始符 p = p , 指令标1 zrf1 = A , 指令参数1 data1 = -220 , 指令参数2 zrf2  = B , 指令参数2 data2 = -111 , 停止符3 tzf3= D  
总命令 zmr =p+ A-220B-111D
*/



串口屏相关程序:
*字库需要自己添加
1初始化设置:

1

1


  1. vis t1,0       //不显示t1控件
  2. vis t0,0       //不显示t0控件
  3. bauds=9600
复制代码
  1. //以下代码只在上电时运行一次,一般用于全局变量定义和上电初始化数据
  2. int sys0=-1,sys1=0,sys2=0     //全局变量定义目前仅支持4字节有符号整形(int),不支持其他类型的全局变量声明,如需使用字符串类型可以在页面中使用变量控件来实现
  3. page 0                       //上电刷新第0页
复制代码
按键控件1:

2

2

  1. vis t1,0       //不显示t1控件
  2. vis t0,0       //不显示t0控件
  3. covx sys1,t0.txt,0,0    //把sys1的值赋予t0 (数字转字符串)
  4. covx sys0,t1.txt,0,0  //把sys0的值赋予t1 (数字转字符串)
  5. t2.txt="A"+t0.txt+"B"+t1.txt+"D"//拼接命令
  6. sys0=sys0-10  
  7. sys1=sys1-20
  8. get t2.txt  //发送命令
复制代码
按键控件2:

3

3


  1. vis t1,0       //不显示t1控件
  2. vis t0,0       //不显示t0控件
  3. covx sys1,t0.txt,0,0    //把sys1的值赋予t0 (数字转字符串)
  4. covx sys0,t1.txt,0,0  //把sys0的值赋予t1 (数字转字符串)
  5. t2.txt="A"+t0.txt+"B"+t1.txt+"D"//拼接命令
  6. sys0=sys0+10
  7. sys1=sys1+20
  8. get t2.txt
复制代码


mcu部分:
下面图片是分析结果和部分程序:有了这几个命令符 和相关参数就可以组织判断程序 执行相关函数了。

4

4


  1. /*串口屏幕文本命令数据分析
  2. * 命令示例:pA-220B-111D

  3. 发送按键程序:
  4.   *串口屏初始化一定要添加 bauds=9600 来固定波特率
  5.   
  6.   vis t1,0       //不显示t1控件
  7.   vis t0,0       //不显示t0控件
  8.   covx sys1,t0.txt,0,0    //把sys1的值赋予t0 (数字转字符串)
  9.   covx sys0,t1.txt,0,0  //把sys0的值赋予t1 (数字转字符串)
  10.   t2.txt="A"+t0.txt+"B"+t1.txt+"D"//拼接命令 D是停止符
  11.   sys0=sys0-10
  12.   sys1=sys1-20
  13.   get t2.txt  //发送命令


  14. 串口分析结果

  15. 串口屏开始符 p = p , 指令标1 zrf1 = A , 指令参数1 data1 = -220 , 指令参数2 zrf2  = B , 指令参数2 data2 = -111 , 停止符2 tzf2= D  
  16. 总命令 zmr =p+ A-220B-111D
  17.    
  18.       
  19. */

  20. char ksf1;        //指令开始符1
  21. char zrf1;        //指令标示符2
  22. long data1;        //指令参数1(可以是正常正负)
  23. char zrf2;        //指令标示符3
  24. long data2;        //指令参数2
  25. char tzf3;        //指令标示符3

  26. String zmr= "";//总命令

  27. void setup() {
  28. Serial.begin(9600);
  29. }

  30. void loop() {
  31.   if (Serial.available()>0) {     // 检查串口缓存是否有数据等待传输
  32.     delay(10);
  33.   if (Serial.available()>0) {
复制代码

屏幕的程序附件有3m就不上传了 ,有需要的朋友可以按照自己的屏幕型号结合上面复制一下。



发表于 2021-8-6 15:56 | 显示全部楼层
大哥你这arduino代码不完整呀
 楼主| 发表于 2021-8-8 18:32 | 显示全部楼层
realtmacback 发表于 2021-8-6 15:56
大哥你这arduino代码不完整呀

应该没有问题吧  我跑过
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:40 , Processed in 0.142742 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表