# TFTContrl **Repository Path**: fenghuohanshu/tftcontrl ## Basic Information - **Project Name**: TFTContrl - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-25 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 做一个串口通信软件: 使用python tinker。window软件。 分三个部分:串口设置,参数预设,测试结果 串口设置:端口选择,波特率选择(默认9600,其它得五个你补充),刷新按钮(点击刷新端口信息) 参数预设:分为两个子模块(Vg设置,Vd设置)。每个子模块都同样包含以下几个参数设置 1,工作方式(选择器,扫描和定值两个选择,默认扫描) 2,幅值:输入框,单位mV。输入为整数,范围限定0-2000 3,起始值:输入框,单位mV。输入为整数,范围-10000到+10000 4,扫描速率:输入框,单位ms。输入为整数,范围300到2000 5,扫描步进:输入框,单位mV。输入为整数,范围100到2000 6,查询和设置按钮,点击查询,下发指令,解析指令,填入上述输入框中。点击设置把上述输入框封装成指令发送。查询和设置指令如下: 指令通信协议: 上位机发送的每条命令都以16Byte为单位,以0x55为帧头,0x5C为帧尾,基本数据格式为: 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 指令 0X55 CMD 内容 0X5C 说明 帧头 命令 内容 帧尾 查询指令:命令为0xA1 下行:0X55 0XA1 byte0 byte1 byte2 byte3 byte4 byte5 byte6 byte7 byte8 byte9 byte10 byte11 0X00 0X5C 上行:0X55 0XA1 byte12 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X5C 其中: byte0:选择设置对象,0X01-设置Vg参数,0X02-设置Vd参数。 Byte1:选择工作模式,0X01-扫描模式,0X02-定值模式。 Byte3|byte2:定值模式下,输出电压值Vo=byte3*256+byte2,单位mv;扫描模式下,byte3=byte2=0。 Byte5|byte4:扫描模式下,扫描起始值,Vs=byte5*256+byte4,单位mv。 Byte7|byte6:扫描模式下,扫描终止值,Ve=byte7*256+byte6,单位mv。 Byte9|byte8:扫描模式下,扫描速率,T=byte9*256+byte8,单位ms。 Byte11|byte10:扫描模式下,扫描步进,V=byte11*256+byte10,单位mv。 byte12:0X01-设置成功,0x00-设置失败。 注意!!!:在起始值中,范围是-10000到+10000会存在负号。请使用byte5的字节二进制最高位1代表负号,0代表正号 设置指令:命令为0xA2 下行 0X55 0XA2 byte0 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X5C 上行 0X55 0XA2 byte1 byte2 byte3 byte4 byte5 byte6 byte7 byte8 byte9 byte10 byte11 byte12 0X00 0X5C 其中: byte0:选择查询对象,0X01-查询Vg参数,0X02-查询Vd参数。 byte1:返回查询对象,0X01-返回查询Vg参数,0X02-返回查询Vd参数。 Byte2:返回工作模式,0X01-扫描模式,0X02-定值模式。 Byte4|byte3:返回定值模式的输出电压值Vo=byte4*256+byte3,单位mv。 Byte6|byte5:返回扫描模式下,扫描起始值,Vs=byte6*256+byte5,单位mv。 Byte8|byte7:返回扫描模式下,扫描终止值,Ve=byte8*256+byte7,单位mv。 Byte10|byte9:返回扫描模式下,扫描速率,T=byte10*256+byte9,单位ms。 Byte12|byte11:返回扫描模式下,扫描步进,V=byte12*256+byte11,单位mv。 注意!!!:在起始值中,范围是-10000到+10000会存在负号。解析的时候也需要判断byte5高位和查询类似 第三个模块:测试结果 包含一个通道数量选择,默认1,可以下拉选择1-6个通道数,一个按钮启动(启动后变成停止,停止后变成启动) 当点击启动后,下发指令 启动/停止测试指令0XA3 下行 0X55 0XA3 byte0 byte1 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X5C 上行 0X55 0XA3 byte2 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X5C 其中: byte0:0X01-启动测试;0X02-停止测试。 byte1:启动测试的通道数量:1-6。 Byte2:0X01-返回启动测试状态;0X02-返回停止测试状态。 根据范围的状态改变按钮是停止还是启动状态 启动状态下我们第三个模块要开启串口数据监听。比如如果选择了2个通道数。接下来要一直监听返回 上行 0X55 0XA4 byte0 byte1 byte2 byte3 byte4 byte5 byte6 byte7 0X00 0X00 0X00 0X00 0X00 0X5C 显然A4命令码的都是数据。 byte0:返回当前需要测试的通道数:1-6. byte1:返回当前测试的通道编号:1-6. byte2:返回当前需要测试数据总点数。 byte3:返回当前测试数据的序号。 Byte4|byte5|byte6|byte7:返回测试的电流值的十六进制,需通过IEEE754浮点数进行换算。 假设我们设定了两个通道数,那么byte0应该就是2,byte1就是这条数据是通道1还是通道2的数据。然后数据你就根据通道不同保存 到不同的列表里面。然后根据通道数的不同显示不同数量的折线图,折线图标志出通道几,然后数据x是接收顺序,y是算出来的值。 何时停止接收? 当启动测试状态下。接收到上行命令码为A5的时候停止接收。 历史记录导入旁边新增一个分析按钮 分析按钮需要选择若条历史记录,如果没有选择,提示至少选择一条记录 历史记录列表每行新增一个选中的checkbox。用来分析的数据。 点击分析后弹出新窗口,带着若干个选中的历史记录到新的分析窗口 分析窗口(分为左右两列,左边数据列表,右边一个较大的折线图) 数据列表:显示和历史记录列表一样,没有删除按钮,。但是新增了一个颜色,颜色随机设置唯一一种颜色(颜色的作用:每条记录用这个颜色显示在折线图,比如第一条数据有两条曲线,红色,那么就显示红色) 数据列表还有一个选择控件,默认勾选,如果用户取消选中,那么折线图就不要显示这条记录的所有曲线了。 分析窗口新增一个功能 每个测试记录有若干条曲线,新增一个展开按钮,对当前这条记录的曲线进行展开,比如这个记录有两条曲线,命名就S1,S2这样下去。 然后支持精确到曲线的选中,比如我这个记录1,选中了它的曲线s1,s2没选中,就不显示s2。然后外部记录点击选中,就是选中所有曲线 如果只选中了曲线s1,那么外部记录也显示为选中。