-
2021-12-08 16:34:27
最近在进行大彩串口屏的开发,需要通过串口的0x13指令,来读取一包数据包,并分析其中的数据,将其绘制成曲线。
大彩串口屏自带的LUA脚本编程有如下的限制,在朋友们进行开发选型之前,一定要进行仔细的参考:
1.MODBUS通讯协议和内部自带的指令助手只能选择一种
2.自定义串口指令和串口屏自带的MODBUS通讯,只用选择一种
3.不支持MODBUS读取到的数据,添加到曲线控件上
迪文、JFC的串口屏我都有了解过,TFT软件好像还不如大彩的。。。
扯远了,下面来谈一谈开发过程收获的经验和遇到的坑。
1.自定义串口指令,发送、处理的运行速率极慢(已解决)
大彩的自定义串口指令教程里面,会让你把串口超时设置为uart_set_timeout(1000,300)
我靠,完全不能这么慢好么!一开始开发的时候就是按照教程的设置,结果串口一收到数据包就直接卡死,刚开始还以为是MCU处理不过来,后来减少了代码量才发现不是这个的原因。。。
现在我用过的超时设置为 uart_set_timeout(50,10),超级丝滑有木有
2.历史曲线的LUA编程实现
自定义指令的发送
将你想发送的数据包储存在一个Table里面,然后调用这个函数就可以啦
uart_send_data(HistoryTable)
function on_uart_recv_data(packet) ---------------------------------------------------------------------------------13指令 if packet[1]==0x13 then for i=0,120 do channel1[i]= (256*packet[10+PackageSize*i*2+1]+packet[10+PackageSize*i*2])/65535*100 end end
然后是数据包处理,MODBUS协议,根据packet[1]的值判断指令,然后执行对应的函数
这里我是一次读取了120个点,然后储存在一个表里
然后是曲线的绘制
function on_draw(screen) if screen==7 then set_pen_color(0x0000) for i=0,118 do draw_line(i*(285/120),200-channel1[i],(i+1)*(285/120),200-channel1[i+1],1) end --在(0,0,285,200)的范围绘制120点曲线 end
其实还实现了一个竖向的光标,可以显示120个点当前选择的点的一些数据,就不在这里献丑了。
更多相关内容 -
基本型串口HMI指令表.pdf
2021-10-08 22:14:58基本型串口HMI指令表.pdf -
HC-05嵌入式蓝牙串口通讯模块的AT指令-综合文档
2021-05-22 01:10:29HC-05嵌入式蓝牙串口通讯模块的AT指令 -
串口简介及操作指令
2020-05-06 22:09:381.1 串口简介 1.1.1 串口电平 串口是一个泛称,UART、TTL、RS232、RS485、RS422都统称为串口。 芯片内部的串口收发逻辑电路一般称为UART接口,即通用异步收发器(Universal Asynchronous Receiver/Transmitter);芯片...1.1 串口简介
1.1.1 串口电平
串口是一个泛称,UART、TTL、RS232、RS485、RS422都统称为串口。
芯片内部的串口收发逻辑电路一般称为UART接口,即通用异步收发器(Universal Asynchronous Receiver/Transmitter);芯片外部的串口一般为遵循TTL电平的TTL串口;RS232、RS485、RS485则通常作为设备的外设串口使用。
TTL电平
TTL是Transistor-Transistor Logic,即晶体管-晶体管逻辑的简称,它是计算机处理器控制的设备内部各部分之间通信的标准技术。TTL电平信号应用广泛,是因为其数据表示采用二进制规定,+5V等价于逻辑”1”,0V等价于逻辑”0”。
数字电路中,由TTL电子元器件组成电路的电平是个电压范围,规定:
输出高电平>=2.4V,输出低电平<=0.4V;
输入高电平>=2.0V,输入低电平<=0.8V。RS232电平
RS232电平是串口的一个标准。
在TXD和RXD数据线上:
(1)逻辑1为-3~-15V的电压
(2)逻辑0为3~15V的电压1.1.2 RS232接口
1.2 Linux串口指令
串口为独站式设备
,Linux下串口可重复打开,但数据会被最新打开的程序劫走。(1) 使用cat读取数据
cat /dev/ttymxc0
(2)使用microcom查看串口数据
microcom -s 115200 /dev/ttyS0
(3)使用echo向串口发送数据
echo "hello" > /dev/ttymxc0
(4)使用microcom向串口发送数据
microcom -s 115200 /dev/ttyS0 < /root/123.txt
(5)使用stty命令获取当前串口配置
stty -F /dev/ttymxc0
(6)使用stty命令更改串口属性
stty -F /dev/ttymxc0 ispeed 115200 ospeed 115200 cs8
-
常用的串口调试指令
2019-08-10 08:09:21常用的串口调试指令 1.筛选指定日志信息 logcat | grep xxx 2.抓取log信息并保存在指定文件 logcat -f xxx(文件名) logcat -c;logcat -s “TAG” //打印指定信息 3.关闭kernel打印信息 记得用切换用户权限:su 切换...常用的串口调试指令
1.筛选指定日志信息
logcat | grep xxx2.抓取log信息并保存在指定文件
logcat -f xxx(文件名)
logcat -c;logcat -s “TAG” //打印指定信息3.关闭kernel打印信息
记得用切换用户权限:su
切换回原来的用户:exit
echo 0>/proc/sys/kernel/printk4.am命令 ActivityManager
(1)启动Activity
am start -a action
am start -n 包名、类名(2)启动Service
am startservice -a 定义action
am start -n 包名、类名(3).发送广播
am broadcast -a 定义action(4).关闭所有后台进程
am kill -all(5).强制关掉所有的应用
am force-stop pkgname(6).查看Activity栈
am stack list5.pm命令 PackManager
(1)列出系统所有应用
pm list package(2)列出系统级应用
pm list package -s(3)列出第三方应用
pm list package -3(4)安装指定路径下的apk安装包
pm install /mnt/sdcard/xxx.apk
无覆盖:pm install mnt/usb/xxx.apk
有覆盖:pm install -r mnt/usb/xxx.apk(5)卸载指定应用
pm uninstall pkgname(6)清除指定应用的缓存数据
pm clear pkgname6.input命令 模拟遥控器输入
input text xxxx7.截屏和录屏命令
screencap:截屏
screenrecord:录屏8.查看系统分区情况
df9.查看当前系统的USB挂载情况
lsusb10.监控某一应用进程
top | grep packagename11.Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息
(1)dumpsys wifi:查看wifi连接信息
(2)dumpsys meminfo:查看物理内存使用情况
(3) dumpsys activity | grep "mFocusedActivity”:查看顶层活动 -
verilog 串口指令处理器
2022-01-23 20:55:41// 串口指令处理器 `timescale 1ns/10ps module cmd_pro( clk, res, din_pro, en_din_pro, dout_pro, en_dout_pro, rdy ); input clk; input res; input...
UART_TXer 输出给上位机
项目场景:
// 2022-1-23 verilog学习 // 串口指令处理器 `timescale 1ns/10ps module cmd_pro( clk, res, din_pro, en_din_pro, dout_pro, en_dout_pro, rdy ); input clk; input res; input[7:0] din_pro; // 指令和数据输入端口 input en_din_pro; // 指令输入使能 output[7:0] dout_pro; // 指令和数据输出端口 output en_dout_pro; // 指令输出使能 output rdy; // 串口发送模块空闲标志,0表示空闲 parameter add_ab = 8'h0a; //a+b parameter sub_ab = 8'h0b; //a-b parameter and_ab = 8'h0c; //a&b parameter or_ab = 8'h0d; //a|b reg[2:0] state; // 主状态机寄存器 reg[7:0] cmd_reg, A_reg, B_reg; // 存放指令,A和B reg[7:0] dout_pro; reg en_dout_pro; always@(posedge clk or negedge res) if(~res)begin // reg型变量清零 state<=0;cmd_reg<=0; A_reg<=0; B_reg<=0; dout_pro<=0;en_dout_pro<=0; end else begin case(state) 0: // 等指令,收指令 begin en_dout_pro <=0; if(en_din_pro)begin cmd_reg <= din_pro; state<=1; end end 1: // 收A begin if(en_din_pro)begin A_reg <= din_pro; state<=2; end end 2: // 收B begin if(en_din_pro)begin B_reg <= din_pro; state<=3; end end 3: // 指令译码和执行 begin state <= 4; case(cmd_reg) add_ab: begin dout_pro <= A_reg + B_reg; end sub_ab: begin dout_pro <= A_reg - B_reg; end and_ab: begin dout_pro <= A_reg & B_reg; end or_ab: begin dout_pro <= A_reg | B_reg; end endcase end 4: // 发送指令执行结果 begin if(~rdy)begin // rdy低表对方空闲,可发送 en_dout_pro <=1; // 发送使能拉高 state <= 0; end end default:// begin state<=0; en_dout_pro <=0; end endcase end endmodule
// 2022-1-23 verilog学习 // 串口指令处理器 封装顶层 连线,全是wire `timescale 1ns/10ps module URAT_top( clk, res, RX, TX ); input clk; input res; input RX; output TX; // 封装顶层,中间连线均为wire wire[7:0] din_pro; wire en_din_pro; wire[7:0] dout_pro; wire en_dout_pro; wire rdy; URAT_RXer URAT_RXer( .clk(clk), .res(res), .RX(RX), .data_out(din_pro), // data_out接din_pro .en_data_out(en_din_pro) ); URAT_TXer URAT_TXer( .clk(clk), .res(res), .data_in(dout_pro), .en_data_in(en_dout_pro), .TX(TX), .rdy(rdy) ); cmd_pro cmd_pro( .clk(clk), .res(res), .din_pro(din_pro), .en_din_pro(en_din_pro), .dout_pro(dout_pro), .en_dout_pro(en_dout_pro), .rdy(rdy) ); endmodule // testbench module URAT_top_tb; reg clk,res; wire RX; wire TX; reg[45:0] RX_send; // 里面装有串口字节发送数据 assign RX = RX_send[0]; // 连接RX reg[12:0] con; URAT_top URAT_top( clk, res, RX, TX ); // 初值 initial begin clk<=0;res<=0;con<=0;RX_send<={1'b1,8'h09,1'b0,1'b1,8'h06,1'b0,1'b1,8'h0a,1'b0,16'hffff}; //结束位,字节,起始位,空闲(往右输出) #17 res<=1; #4000000 $stop; end always #5 clk = ~clk; always@(posedge clk)begin if(con==5000-1)begin con <= 0; end else begin con <= con + 1; end if(con==0)begin RX_send[44:0] <= RX_send[45:1]; // 右移 RX_send[45] <= RX_send[0]; // 循环右移 end end endmodule
modelsim:
忘记 reg en_dout_pro; en_dout_pro<=0; reg型变量清零
{1’b1,8’h09,1’b0,1’b1,8’h06,1’b0,1’b1,8’h0a,1’b0,16’hffff}
发送的数据 8’h09, 8’h06,发送的操作符8’h0a;
应该接收8’h0f:0000_1111
低位先接收,则波形为:起始位0+1111_0000
-
串口控制,10路触发QYMUSB2FS语音模块原理图/PCB/指令表等-电路方案
2021-04-21 14:50:11串口控制,10路触发QYMUSB2FS语音模块实物截图: 串口控制,10路触发QYMUSB2FS语音模块电路功能如下: 1、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48 2、24 位DAC 输出,动态范围支持90dB,信噪比支持85dB 3、... -
上位机串口通信程序,仪表监控
2019-02-26 14:28:18通过串口助手需要多条指令,输入起来比较吗,自己做了一个上位机程序,包括串口通信,仪表监控,数据显示等内容。能够满足自己使用要求。 -
电子称重仪表VC++6串口通讯源代码
2019-07-16 16:13:34本例程是基于柯力XK3101电子称重仪串口通讯VC++6源代码, 电子称重仪工业常用有浙江柯力,上海耀华,他们的串口通讯方法基本是一直的,可应用与汽车检测站的轴重检测、各种物体的重量称量,电子称重仪只需要接上... -
QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之03EC20模组基础串口指令说明
2021-04-17 14:13:261、软件:串口调试助手(推荐官方的QCOM,可以讲命令保存为脚本,方便后续多次的调用) 2、硬件:EC20硬件套件、USB转串口线 3、文档:《Quectel_EC20_R2.1_AT_Commands_Manual》 二、硬件环境的搭建 1、模组... -
【仪器使用】FLUKE 8808A 串口指令操作
2020-08-14 09:21:502.2 串口指令 此处指令全部出自用户手册的第4章 2.2.1 测量模式 2.2.2 电压表量程设置 2.2.3 设置刷新速率 注意: 2.5读数据/秒 = 400ms 测量一次数据的周期,使用串口等工具发送连续测量的指令或者更使用PC软 -
斑马打印机指令说明
2018-07-20 11:26:57斑马打印机在制造业内使用广泛,这份指令表及编程很详细 -
基于proteus的51单片机仿真实例之串口发送字符串实例
2020-08-13 22:55:06绍基于proteus的51单片机仿真实例之串口发送字符串实例。本例中程序像主机发送的是英文字符串,所发送的字母表会通过虚拟终端显示出来。 -
大彩串口屏各组态控件详细介绍
2020-07-13 16:22:15画面中任何按钮被按下或弹起,屏幕都会将该按钮的ID和状态值上传给用户,用户单片机接收串口指令并解析,即可判断当前按钮的动作。2.文本控件用户预先通过上位机将文本在画面中的显示坐标、颜色、字体和背景色设置好... -
传统蓝牙HCI Command(蓝牙HCI命令)详细介绍
2020-07-30 08:01:100x0011 Authentication Requested command 用于指令连接句柄的两个蓝牙地址进行身份认证 0x0013 Set Connection Encryption command 建立或者取消连接层次的加密 0x0015 Change Connection Link Key command 用于... -
Qt使用QSerialPort开发的串口调试工具,支持高波特率
2020-04-18 10:08:51基于QSerialPort开发的串口调试工具,支持高速自定义波特率,自动发送,自定义功能按钮及指令,采用QSS样式表进行了美化,给公司做的测试调试用工具,共有3个模块,可以在此基础上删减。共分两个版本,win7版本适合... -
python3向串口发送组合按键,比如Ctrl+u,ctrl+c等等
2021-01-14 08:29:27现在讨论如何用python3向串口发送按键指令python3操作串口需要调用pyserial库import serial串口的打开指令ser=serial.Serial(COM4)ser.baudrate=115200ser.timeout=0.5 #这几句指令打开串口COM4,并设置波特率串口的... -
串口通信2.4G nRF24L01无线通信模块资料汇总(原理图、上位机、例程、无线232通信程序等)-电路方案
2021-04-21 19:23:44NRF24L01 2.4G无线模块功能概述:(1)2.4Ghz 全球...IO口操作指令表:(端口1、2举例) 附件内容截图: 实物购买链接:https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-15803265497.12.trOTmk&id=24685468283 -
QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之03【EC20模组基础串口指令说明】
2022-01-27 09:57:32QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之03【EC20模组基础串口指令说明】一、准备工作二、硬件环境的搭建三、基础AT指令的说明和测试 原文链接:... -
上位机与下位机串口通讯程序
2018-10-10 09:28:55此为本人工作中的辅助程序, 其中主要是把串口接收的指令与数据拆分并执行,程序附带Excel电子表格数据的导入导出功能,编程工具:vs2010 winform -
DELPHI串口编程
2015-12-10 21:39:48广义的计算机接口有二种,见下表: 类別 用途 电路实现复杂性 存储器接口: 用于CPU与外部设备、存储器的连接 简单 I/O接口 数据交换 复杂 习惯上说到接口只是指I/O接口。本文沒作特別介绍的地方都叫I/O接口. 4. ... -
命令行解释器 串口
2017-01-17 14:21:15程序调试是一门技术,基本上我们需要两种调试手段,一种是可以单步仿真的硬件调试器,另外一种是可以长期监视程序状态的状态输出,可以通过串口、显示屏等等手段输出异常信息或者某些关键点。这里的命令行解释器就... -
威纶触摸屏MT510T双串口应用实例
2020-10-23 02:13:14MT510TV4是威纶科技MT500系列中104寸的...它可以以各种生动的图形方式显示PLC,单片机,变频器,温控表等内部寄存器或继电器的数值和状态,并提供配方卡,报警信息保存等功能.可以通过快选窗口迅速进入所需的设置/监控画面。 -
LabView 串口通讯指令格式前后缀编写
2020-07-14 12:37:27在写串口指令的时候,指令格式一般都是[xxx]Command[xx],例如[STX]abc[CR]。 在Labview程序编写是有自动添加末尾的结束字符的 但指令的前缀是不会自动添加的,需要自己去创建添加。 创建方法: 如红色圈所示,那... -
大彩串口屏参考案例驱动
2018-08-02 16:58:094. 熟悉软件后,观看快速入门文件中的《指令助手与虚拟串口屏联机通信V1.0.pdf》,直接使用电脑的串口模拟单片机发送和接收指令,体验各个指令功能使用方法。 5. 学会软件操作后,开始阅读《基于51和STM32单片机的... -
台湾仪表ESCORT3146A 中文手册 适合程控开发
2019-04-26 10:21:31最近在做台湾ESCORT3146a、Fluke多台仪表与电脑串口通讯的项目,好不容易搞到的手册,连夜调试程控成功。但是通讯参数要注意CR LF ,当时因为它的原因捣鼓老长时间。用的C#开发的,如果有需要可以联系我。 -
ZigBee串口通信
2021-05-27 17:54:43一、串口通信原理 1.什么是UART UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器 一种常用也是最简单的串行数据传输协议。数据线只需要两根就可以实现全双工。 Tx:发送数据线 Rx:... -
Qt 编程 keySight 34401A 万用表(串口232编程)
2020-06-17 17:50:16setWindowTitle("加表电压采集程序"); this->setFixedSize(this->width(), this->height()); ui->btn_stop->setEnabled(false); InitCommCmb(); //初始化数据 m_bOpen = false; m_serial = new QSerialPort; m_... -
JDY-25M蓝牙模块未连接状态串口调试助手发送AT指令没有响应
2021-03-23 20:01:21<p>2、发送AT指令串口无任何响应; <p>3、手机上的蓝牙调试助手可以连接此蓝牙模块,串口调试助手上户显示+CONNECTED,并且可以手机发送,PC串口接收相同数据;断开时,PC... -
Android系统 debug 技巧(最全最强adb 串口调试命令)
2021-06-02 23:19:42串口调试命令 debugadb 命令(去掉adb shell即为串口命令)发送广播 adb shell am broadcast -a com.android.test打开activity adb shell am start -n ...