- 博客(42)
- 收藏
- 关注
原创 使用数据结构自动解析协议
问题描述在对接调试中,有时候需要看16进制的协议,这个往往是比较晦涩的,当时间旧了之后再去看这个协议就很烦,于是想能否直接在协议输出数据的时候直接格式化输出问题分析此处使用数据结构的自动计算偏移拆分协议协议格式:注意协议是2级指令协议,在data域还有一层协议typedef struct{ uint8_t Sof; uint8_t dev; uint8_t cmd; uint8_t seqid[4]; uint8_t Len; uint8_t Data[SPI_PAC_D
2021-08-10 19:58:22
303
原创 【项目笔记_RP552D】rtthread winusb 修改 vid 与 pid
问题描述由于之前RP552C实现的是HID设备, 现在为了兼容发现 winusb 虽然可以使用,但是一旦修改 vid 和 pid 就会出现USB无法识别的问题,现在想实现2个接口 HID兼容之前的SDK,winusb 则是新的接口,这样新的客户对接SDK就会使用新的接口,这样剔除代码在USB这块的速录限制,但是发现实现出来的符合设备 HID+WINUSB,使用官方工程的 VID 和 PID 设备是可以被电脑识别的,但是一旦修改这参数之后发现只有HID能识别,但是WINUSB不能识别#define RT_
2020-12-14 21:31:34
1312
原创 【项目笔记_RP552D】pywinusb 收发数据性能优化
问题描述之前在做USB的项目的是一直有个问题没有解决,就是发现python版本的SDK 性能远远不及C++版本的SDK,在批量发送数据的测试中效果如下:// 之前的 python 版本的代码,发送数据的间隔最少需要2ms, 而USB设备的描述中中断传输的效果是1ms[2294484] D/usb: usb echo: e_id:80 ret:0[2294487] D/usb: usb echo: e_id:81 ret:0[2294490] D/usb: usb echo: e_id:82 re
2020-12-11 17:41:20
540
1
原创 【项目笔记_RP552D】rtthread usb 实现厂商自定义SN号
问题描述在使用 rtthread 自己的USB协议栈的时候,看到这个设备的一些信息是写死的:ALIGN(4)const static char* _ustring[] ={ "Language", "xxxxxxxx", "yyyyyyyyy", "32021919830108", "Configuration", "Interface",};其他还好说,但是这个SN号往往是实际使用的时候需要设备有唯一性,修改方法如下:// 文件:usbdev
2020-12-11 16:28:06
379
原创 【项目笔记_RP552D】rtthread usb hid 发送完成回调
问题描述在使用 rt_thread 的USB库的时候发现,主动发送的数据容易出现丢PC端收不到的情况:从调试的日志上看snd seq:20 数据发送的应答已经发送过了但是PC端没有收到数据于是研究 HID 类的函数,有发送成功的回调static rt_err_t _ep_in_handler(ufunction_t func, rt_size_t size){ struct hid_s *data; RT_ASSERT(func != RT_NULL); RT_ASS
2020-12-11 10:57:32
800
原创 【项目笔记_RP552D】rt_thread usb hid 设备与ST官方库的兼容
问题描述之前由于想体验 rt-thread 的 winusb 于是将USB的协议栈从ST的官方库转到了rt_thread 的USB协议栈,在实现玩代码之后发现, python 的demo 能直接与设备通讯,但是子涵的SDK却不能使用,于是找了网上的测试工具 PortHelper.exe 也是无法交互,这边感觉还是协议配置方面有些问题最后发现是报告描述符的差异导致的 USAGE_PAGE(1), 0x8c, USAGE(1), 0x01, COLLEC
2020-12-03 11:41:14
573
1
原创 【项目笔记_rp552d】Partition write error! Flash device(onchip_flash) write error!
问题描述在使用 easy_falsh 的是时候出现问题,这个问题是发现在 触发 gc 的时候突然断电就出现了错误,一旦出现这个问题无论怎样都无法恢复,除非重新擦除数据区需要擦除才能恢复,这个问题是不可接受的问题分析估计是触发在STM32上面触发GC机制的问题在备份在转移数据的时候突然断电会导致状态异常,这个异常的状态是写入在FLASH中的,导致即使上电数据也不能恢复,于是查找数据出错的地方:int stm32_flash_write(rt_uint32_t addr, const rt_uin
2020-11-12 18:30:44
986
原创 【项目笔记_SI522】SI522 13.56MHz 近距离无法刷卡报错的问题
问题描述在项目中用到Si522这款芯片,想用来替换现有的mf1702, 用来降低功耗【MF1702在运行态有150mA的流,SI522则小很多】但是测试的时候发现,这样贴着刷卡的时候发现,有个近场死区,这样是无法刷到卡的这个近距离刷卡的问题,需要调整一下增益修改如下:diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_si522.c b/bsp/stm32/libraries/HAL_Drivers/drv_si522.cindex 58ae21
2020-11-04 15:21:40
817
原创 【项目笔记_答题器】rp552d usb hid 在seewo win10 设备上启动无法识别
问题描述现在的问题是,我们已经出货的设备在普通的电脑上都能正常识别,但是在西沃的平板上面的时候容易出现USB链接异常STM32103VB + STB + USB 普通的设备库出现问题的描述:普通电脑上概率的出现,在已经接好USB的情况下启动,出现电脑无法识别的问题这个在不同系统上测试有不同的效果...
2020-11-03 08:44:04
554
原创 【原理学习】rt-thread SPI 双向DMA驱动的开发
问题描述之前开发程序的时候是直接使用的 硬件 SPI 采用 DMA 方式来释放CPU,但是一直没有使用 rt_thread 原来的 DMA 历程,原因是原生的 drv_spi 驱动,实际上没有发挥DMA的真实性能,虽然开启DMA但是还是要等数据发送完成之后才释放CPU:当发送数据较长,且比较密集的时候如果采用死等的方发送数据就会导致数据发送性能极差,如何将这个死等的时间释放出来且发送和接收数据需要灵活可控先看电路图:说明:此时SPI是通讯的交互的重点,十分密集IRQ_NRF1: 值做个32的一中
2020-10-24 18:45:47
1842
原创 【调试笔记】visua studio 输出调试信息
问题描述由于做C++的同事离职,从他手上接手了一个C++的项目维护,发现运行的时候没有日志输出问题解决网上找到的输出日志的方法记录: put_msg_to_socket(s_msg); // 业务逻辑程序,输出JSON格式的数据给socket OutputDebugString(s_msg.c_str()); // 调试信息 OutputDebugString("\r\n"); 这样就可以将工程中的调试信息直接输出到软件的控制
2020-09-23 17:30:40
227
原创 【原理学习】MSP430RFL15x学习
概述于是开始学习编程说手册 SLA603I2C 和SPI 检测与配置RF430FRL 15xH 能够支持主控使用I2C 和SPI,这个配置在上电或者复位的时候能够在外部管脚被检测到通用端口定义;I2C 和 SPI 检测I2C 模式地址写时序读时序SPI 模式模式配置写时序写指令: 0x01 + 2个字节的地址 + N字节的数据读指令: 0x02 + 2个字节的地址 + N字节的数据主控 Memory 访问范围中断手动中断控制手动中断控制通过管
2020-09-01 22:47:57
711
原创 【HT45_项目笔记】NRF51822 型号核检(SRRC测试)
问题描述刚开始听说这个项目的时候说是做认证,说是用我们设备在65号频点发送数据即可,保证发送功率不大于20dbm, 输出一个版本出来之后,说是不满则测试,要求输出一个空载波,目前的库无法满足要求,于是可供应商联系,他们提出可以使用芯片厂商的测试固件.我们此处使用的是 blank 的固件,无需烧蓝牙协议栈接线图软件操作使用 nrfgostudio 作为测试软件:安装软件源码nrfgostudio_win-64_1.21.2_installer.msi安装完成之后打开软件说明:
2020-08-24 17:29:27
855
1
原创 【仪器使用】FLUKE 8808A 串口指令操作
1. 需求描述在HT44B1的项目中发现有硬件容易出现问题,电流时不时出现比较大的情况,于是在想在烧录的环节增加一个电流测试环节将判断是否硬件焊接是否出现问题2. 电压表软件操作接口2.1 操作接口描述** 通讯接口的参数设置只能使用前面板来设置 **2.2 串口指令此处指令全部出自用户手册的第4章2.2.1 测量模式2.2.2 电压表量程设置2.2.3 设置刷新速率注意:2.5读数据/秒 = 400ms 测量一次数据的周期,使用串口等工具发送连续测量的指令或者更使用PC软
2020-08-14 09:21:50
3686
原创 【项目笔记:RP453】天线端程序结构的梳理(链表的使用)
程序逻辑的梳理之所以要这样的架构是为了适配链表的使用,整个过程中我们只有2块内存,发送缓存与接收缓存,任务对应一个链表: buf_item_t rbuf[SPI_RBUF_SZIE]; /* 接收缓存 */ buf_item_t tbuf[SPI_RBUF_SZIE]; /* 发送缓存 */ node_t rbuf_node[SPI_RBUF_SZIE]; /* 接收缓存节点 */ node_t tbuf_node[SPI_RBUF_SZIE]; /* 发送缓存节点 */ lis
2020-07-01 08:07:16
135
原创 【MDK】安装 pack 时候的报错 No uVision SystemViewer file created
问题描述在项目中突然会使用到一个 nrf52810 的芯片,在使用的时候发现咱安装 pack 即将结束的时候有一堆的报错并且在设备配置界面选择芯片类型的时候也没有出现对应的芯片问题的解决关闭软件重启即可问题:应该这个pack 在安装的时候是需要关闭MDK的...
2020-06-22 09:29:01
6796
3
原创 【项目笔记_手写笔】在51822 上移植SSD1306驱动
问题描述目前在手写笔项目中需要使用一块LCD来显示个人信息和当前工作状态等问题分析查看数据说手册中的图,看到如何看到这个数据格式为:【地址+控制字+数据字】从 m 和 n 的格式上看:是支持一次从批量的数据的地址需要看SA0的接线方式:控制就是读写数据位有效 参考代码为 0x00 和 0x40屏幕厂商的电路图如下:...
2020-05-22 08:56:40
272
原创 【项目笔记:HT46】使用数组方式存放协处理器的固件
1.0 固化固件在开发HT46的代码时候,由于需要整合好几个固件,之前一直使用const数组的方式将其他设备的固件文件存放在STM32的固件中const uint8_t boot_60_image[] = { ... }但实际使用的时候用**sizeof(boot_60_image)**表示数据大小,这样就可以访问完整的数据1.1 固化固件地址实际在使用中经常需要修改其他版本的...
2020-04-27 08:28:04
265
原创 【项目笔记:HT46】设备USB在HUB上升级导致未连接
问题描述在 APP_DTQ_RP55x_CPU_v010008_202004161_b4.bin 版本的固件上发现一个现象:使用HUB的时候发现设备是未连接的当设备直接接在电脑上的时候设备显示是链接的经过多次降级测试发现:只要是升级到 v0.1.08 就算 升级自己部分升级也是会出现这个问题,但是从 v1.0.8 升级到 v0.7.7 是OK的就是这个 升级到高版本的过程会把H...
2020-04-26 10:07:16
481
原创 【Pyinstaller】hook-usb.py 不同目录层次打包报错
错误描述···18209 INFO: Loading module hook “hook-usb.py”…18210 WARNING: FalseTraceback (most recent call last):File “c:\programdata\anaconda2\lib\runpy.py”, line 174, in run_module_as_main“main”, fn...
2020-04-25 18:30:24
565
原创 【Anaconda】启动 Anaconda Prompt 报错
问题描述在使用最新版Anaconda 2019.10 版本编译 带pywinusb 的库的工具失败,于是准备卸载使用之前的conda库(5.3)于是卸载之后安装新的conda之后,启动就报错# >>>>>>>>>>>>>>>>>>>>>> ERROR REPOR...
2020-04-25 17:58:04
3693
3
原创 【项目笔记:HT46】串口驱动操作应用缓存导致的缓存异常
问题描述[1155853]: s_uart1: vol_set:0[1156854]: s_uart1: vol_set:0add:537050748, wpos:0D/HEX rbuf: 0000-0010: 55 AA 00 01 F0 21 00 A0 31 00 U....!..1. [1156869]: r_uart1: dfu_s:0 vol:0[1156869]: p_UA...
2020-04-20 10:05:13
343
原创 【项目笔记:HT46】rt-thread线程延时导致系统同步异常
问题描述在最新的 v1.0.8_b1 的测试中,偶现出现开关教师端语音开关,偶现无法播放语音的情况:问题分析在设置的地方增加调试信息@@ -1019,13 +999,12 @@ int8_t spi_rcmd_jsd_data(uint8_t port, spi_pac_t *rpac) if (uart_tcb[JSD_PORT].vol_set != s.b.line...
2020-04-15 18:44:07
381
原创 【原理学习】使用 pyvisa 操作设备
问题描述最近公司有个项目,需要使用使用高精度的电压表来测量偏执电压,用以校准设备:设备型号AGILENT 34405A数据手册
2020-04-13 15:56:29
6004
原创 【经验积累】使用 ConfigParser 保存UI界面参数
问题描述在项目中需要一个简单的参数配置工具,逻辑比较简单,但是有个需求:希望之前设置的参数能在下次打开的时候能记住之前的参数
2020-04-10 16:56:59
330
原创 【PYCHARM】 使用注意事项
设置调试在断点暂停(默认是不停止的)可能是因为File -> Settings ->Build, Execution, Deployment -> Python Debugger 中选项PyQt compatible 选择了Auto,去掉勾就好了。调试快捷键F8:step over 单步,3,4,5,6,7,6,7,8,9,10,11,12,13F7:step into...
2020-04-10 13:02:48
394
原创 【原理学习】QLineEdit 使用记录
显示内容self.sum_edit.setText(str(self.rssi_ok_cnt))设置不可编辑self.sum_edit.setFocusPolicy(Qt.NoFocus)
2020-04-09 10:10:50
249
原创 【WIN10技巧】重装 window store
打开powershell 以管理员运行Get-AppXPackage *WindowsStore* -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
2020-04-06 16:49:37
908
原创 【电脑技巧】清除电脑中占用的串口号
方法清除注册表注册表路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter效果
2020-04-06 16:45:30
953
原创 【项目笔记:HT46】USB在BOOT和APP都初始化导致上电无法接收数据
问题描述客户在开发我们的设备的时候出现上电之后发发哦是哪个数据无响应的问题,上电插入USB必死,这个是客户打调试代码:问题分析从显现上分析:像是设备在接入他们设备的时候就死了,需要断连一下才有效上电过程中,有一段比较漫长的识别过程,从启动到USB识别有需要较长的时间来处理这些信息,但是刷卡则是直接重置USB,是否只这个地方导致的问题;于是尝试修改如下:直接将USB初始化的地方...
2020-04-03 11:35:27
350
原创 【经验积累】Python 2.7 win10 开发环境搭建
安装UI开发库(base) C:\Users\Administrator>pip install pySide安装打包工具(base) C:\Users\Administrator>pip install pyinstaller注意次安装在命令行下安装,直接是显示超时,在 conda下才可以安装安装完成之后的效果如下:(base) C:\Users\Administra...
2020-04-03 10:09:10
319
原创 【问题积累】电脑变卡CPU速度无法跑上去
问题描述今天上班的时候感觉电脑变慢了很多,同时发现在调试python 工程的时候每次都会报如下错误:问题分析暂时猜测是由于电脑太卡导致的调试器启动超时导致,于是尝试重启电脑,发现这个修改还是无效(重启之后电脑还是很卡),于是先优先尝试解决电脑卡顿,在尝试解决这个问题....
2020-04-02 14:53:10
1639
原创 【经验积累】pyqt 中异步方式获取命令行的结果
问题描述在我们的一个项目中,客户发现我们的设备产生的MP3文件再使用 ffprobe 分析帧的时候会会出现错误,于是我们想将他们测试方式增加到我们测试工具小面,效果如下:在点击语音分析的时候,需要完成此次设备录制的mp3语音分析并结果输出到UI上,供测试人员查看,以防以后出现类似的问题:'''* Class Name : tab_check* Description : voc_tab...
2020-03-30 09:57:31
328
原创 【经验总结】pyqt 中拆分UI逻辑的一个方法
问题描述在刚开始写这些测试工具的时候,往往功能比较简单,工具上的UI空间UI空间也是比较少的,再加上也没有看到什么大型软件开发的框架,于是将所有的UI管理与控制逻辑都实现在 DtqHidDebuger 类的下面:class DtqHidDebuger(QWidget, Ui_Form): pass实现的UI界面如下:问题分析但是随着业务功能的增加 DtqHidDebuger 类里...
2020-03-30 09:32:59
338
原创 【问题积累】rtt 不同线程使用静态变量数据突变
问题描述再调试的是否发现数据会有突变的问题,表现比较明显的是这个 POWER字段异常:// 分装数据打印[1047245]: app_cod1 [ 24 ]: cmd: 2, PORT1: uID[1]:3069039912, seq:[ s: 54, c: 54 ], power:252// 发送缓存打印 (此处66 突变为 54)[1047248]: r_PORT1: uID[1]:...
2020-03-27 12:13:10
326
原创 【问题积累】rtt 堆空间不足导致控制台无法工作:无法输入指令
问题描述在新版本的程序中,使用 init 的方式创建线程int th_swd_init(void){ static struct rt_thread thd_swd_m; static uint8_t stk_swd_m[2048]; rt_err_t ret; /* 创建 SWD 下载处理线程 */ ret = rt_thread_init(&thd_swd_...
2020-03-27 11:06:53
2111
原创 【经验积累】结构体内存对齐在强制类型转换的陷阱
1.问题描述在调试高速USB的时候,当PC下发数据的时候使用结构体解析数据的时候,发现数据的长度字段不能正确的解析,查看内存中的数据如下:调试时,变量查看的数据如下:原结构体的定义如下:/* 定义指令的结构体:物理包长1024个字节 */typedef struct { uint16_t seq; uint8_t num; uint8_t index;...
2020-03-24 18:24:29
275
原创 【经验积累】xlwt EXCEL 操作
问题描述在项目中经常需要批量的测试答题器设备的并发性能,由于我们设备的并发数支持60路并发,测试的时候数据的统计比较麻烦,于是想在测试工具中增加一个导出一轮统计测试结果的功能,此处用到了xlwt 模块,与是单独提取出这个库的操作,防止以后忘记,下图是生成的效果图:1. 颜色参数p_w = xlwt.Pattern()p_w.pattern = xlwt.Pattern.SOLID_PAT...
2020-03-24 18:11:10
116
原创 【问题积累】LookupError: unknown error handler name ‘surrogateescape‘
错误描述最近在做一生产检测工具的时候遇到一个错误:错误截图如下这个错误出现:并没有什么规律,初选也比较随机,应为这个版本是从之前的版本是哪个做的升级,之前并未发生过错误,在网上查找此错误提示:sys.setdefaultencoding(name)用来设置当前默认的字符编码,如果name和任何一个可用的编码都不匹配,抛出 LookupError,这个函数只会被site模块的sitecus...
2020-03-24 17:44:47
1643
原创 【原理学习】pyqt QMessageBox 的特殊用法
常用消息框使用方法及技巧阻塞用法(强制阻塞)msg_str = u"USB连接检测成功:\n请确认插上USB过程中,是否看到LED闪烁,和蜂鸣器鸣叫,\n"msg_str += u"正常选择YES,\n异常选择NO并拔掉USB"self.box = QMessageBox.information(self, (u'提示'), msg_str, QMessag...
2020-03-24 17:30:27
854
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人