- 博客(76)
- 资源 (22)
- 收藏
- 关注
原创 鸿蒙通信softbus_lite组件分析
文章目录概述运行机理内部结构PublishService函数coap服务器设备认证服务器会话管理服务器对外接口设备发现接口数据传输接口使用示例标准使用方法测试方法概述softbus_lite组件是在受限设备上提供数据传输服务,除此之外,还提供设备发现,设备认证,通信安全功能。运行机理内部结构softbus_lite由coap服务器,消息队列处理线程,设备认证服务器,会话管理服务器四部分组成。其中coap服务器是UDP服务器,端口为5684,用于设备发现。消息队列用于内部消息传递,目前仅用在创建设备
2022-04-02 16:34:29 2594 1
原创 hb方式编译鸿蒙系统
文章目录目标操作步骤基本要求下载OpenHarmony源码安装必要的程序包执行编译脚本编译中遇到的问题编译单个模块编译脚本梳理hb sethb buildhb deps引用目标编译个可以运行的Harmony系统。操作步骤需要四个步骤:下载OpenHarmony源码安装必要的程序包添加配置文件执行编译脚本基本要求编译环境需要Ubuntu18.04及以上版本。下载OpenHarmony源码按照OpenHarmony项目获取OpenHarmony源码指示的方法下载代码。本人选用从站点
2022-04-02 16:27:23 7687 1
原创 GN快速上手
文章目录背景GN快速入门使用GN建立构建环境交叉编译添加tutorial目标BUILD.gn配置说明使用config使用默认配置使用参数了解GN构建过程查找依赖GN文件执行脚本引用背景最近在研究鸿蒙操作系统的开源项目OpenHarmony,该项目使用了GN+Ninja工具链进行配置,编译,于是开始研究GN如何使用。本文的所有信息均来自GN官网和本人个人体会。GN快速入门使用GNGN的主要功能是根据配置文件(.gn, BUILD.gn等)生成build.ninja文件。build.ninja类似于
2022-03-12 20:40:19 3630 1
原创 utf-8编码规则
背景最近将程序从x86_64 Qt5.12向arm Qt4.8环境上迁移时,遇到汉字乱码问题。很想弄清楚utf-8中汉字是如何编码的,后来看到UTF-8编码规则(转),惊喜,所以记录一下。utf-8编码规则UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节,其有效bit数为31。如表:1字节 0xxxxxxx
2022-02-12 10:31:52 3138
原创 Qt4.8与Qt5.12keyPressEvent函数差异
文章目录现象分析解决方案引用现象最近将程序从x86_64 Qt5.12向arm Qt4.8环境上迁移时,遇到上下键导航焦点在4.8下不起作用的情况。基本场景如下:在窗体Widget中包含若干按钮,依次为button1, button2, button3,默认button1存在焦点,按下上/下键后,焦点会在这三个按钮上来回切换。Qt5.12实现方案:1)在按钮类中重载 virtual void keyPressEvent(QKeyEvent *event); 对于上/下键,event->set
2022-02-12 10:25:11 419
原创 qt-使用上下键在一个页面内切换光标
文章目录问题分析单个页面内切换实验一 主窗口下按序访问实验二 子窗口按序访问实验三 form提升为全局窗口结论问题如何用上下键在一个界面内切换焦点,达到类似按下tab键的效果。分析单个页面内切换查看Qt文档,发现通过QWidget::setTabOrder可以设置子控件的tab顺序,在Ubuntu系统下按tab键可以按序访问。编程时可以通过focusNextPrevChild实现类似按下tab键的效果。实验:用上下键实现控件焦点切换实验一 主窗口下按序访问//CMyEdit.h#ifnd
2021-11-09 14:42:13 994
原创 Qt软键盘使用
文章目录问题分析QKeyToolsQKeyTools源码QKeyTools调用示例问题QinputMethodQinputMethod调用示例问题引用问题公司设备采用触摸屏,要求程序中采用软键盘来输入文本,于是开始探索如何使用软键盘。由于公司采用Qt开发设备程序,于是问题就成了“如何在Qt下使用软键盘?”分析在网上搜索解决方案,大体有两种思路:1)开发软键盘界面程序,该程序以dll库封装,主程序中使用该dll;可参考QKeyTools; 2)使用本身提供的QInputMethod来调用软键盘;参考V
2021-10-11 08:03:23 2972
原创 Ubuntu下Qt程序输入中文
文章目录问题分析解决办法测试验证引用问题在Ubuntu下用Qt开发程序,发现编辑框只能输入英文和数字,不能输入中文;在QtCreator中也无法输入中文。分析通过在网上搜索该问题的解决方法,参照Qt程序无法输入中文的问题,说是Qt默认集成了对IBus的支持,如果Ubuntu使用IBus输入框架,可以输入中文;如果Ubuntu使用fcitx输入法框架,则无法输入中文;解决办法添加对fcitx的支持,安装fcitx-libs-qt5。hndz-dhliu@hndzdhliu-MS-7C39:~$
2021-10-11 07:59:30 793 1
原创 linux通信程序debug
文章目录问题探索方法1)审查代码方法2)try catch(...)方法3)分析core总结引用问题无人船项目,采集水质数据,上传到云服务器。该功能由ubuntu系统的一个通信程序实现。调试过程中发现在巡航船行驶过程中,会发生通信程序死掉的问题。这种情况是必现的。开发环境如下,cmake管理工程,C语言开发,使用了modbus,mosquitto库。程序中使用了log,每5s flush一次;探索程序死掉,log系统是无法记录的。大体可以从如下角度入手:1)审查代码,分析可疑代码并验证;2)C+
2021-07-30 14:44:17 169
原创 ring buffer示例
文章目录概述示例引用概述ring buffer,或者说循环队列,是嵌入式开发中的一个基本模型,常用于命令队列,资源循环分配场合。示例ring_buffer.h ring buffer 封装APItestringbuffer.c 测试ring buffer api.//ring_buffer.h#include <stdlib.h>typedef struct s_ring_buffer{ int tail; int head; int size; int item_si
2021-07-30 14:41:20 363
原创 linux service示例
文章目录应用场景示例1)编写shell脚本2) 编写service文件service分析方法1)使用log2)查看启动顺序应用场景1)板上程序需要开机启动;2)内网穿透的内网桥机开机时搭桥;示例1)编写shell脚本在/home/ubuntu目录下,添加myinit.sh###myinit.shecho "myinit service start" >> myinit.logecho "myinit service end" >> myinit.log2) 编写
2021-07-30 14:37:35 153
原创 github使用
文章目录1. github 无密码提交1. github 无密码提交1)问题我的一个代码仓库 https://github.com/ldhshao/dhliu_note.git。每次提交时,总是要求输入用户名/密码。然后收到一封邮件,大意是:不推荐使用用户名密码访问github;2021/8/** 将停止用户名/密码方式。可我记得,我已经将个人公钥加入了个人github的设置中。2)排查通过阅读github文档,几经测试,终于搞清楚原因。github后端有两种协议:https和ssh。当远程
2021-05-09 11:21:57 108
原创 Typora-好用的markdown编辑器
文章目录问题探索Typora用法markdown常规功能标题标题5标题6列表表格图形序列图流程图引用问题最近想放弃Windows系统,使用Linux系统。原因是,1)Windows系统有版权,激活码越来越不好找了;2)声音外放调节为耳机模式时,要求系统必须激活;这样我不能在PC上看会议直播(声音大);3)Windows系统版本更新过快;我不理解,系统更新,只需增强底层功能,为什么每次更改UI变化那么大?使用Linux系统,有两个问题:1)markdown编辑器;2)使用微信。Windows下,我一直用
2021-05-09 11:15:36 178
原创 通过阿里云ECS访问家庭电脑
文章目录环境操作步骤可能遇到的问题引用环境1)阿里云ECS远程主机8.140.111.41,开启了sshd服务,在22端口进行监听;用户root;2)家庭树莓派192.168.18.13,开启了sshd服务,在22端口进行监听;可以连通外网,连接远程主机;用户pi;3)一台测试机,可以通过网络,连接远程主机;操作步骤1)远程主机8.140.111.41:修改sshd_config配置ssh root@8.140.111.41vim /etc/ssh/sshd_config#AllowTcp
2021-05-09 10:46:47 1307
原创 扫描枪重复字符问题
文章目录问题分析扫描枪基本模型EventFiler基本模型记录QKeyEvent优化问题公司设备由不同模块组成,为了管理这些模块,公司为每个模块分配了SN,每个SN都有一个二维码,操作员通过扫码二维码把SN输入到物料管理系统中。物料管理系统是我开发的。二维码输入时,遇到字符重复问题:对于“CW-HT6020Z1100001376”,系统文本框得到的字符串是正确的,我的程序得到的是"CCWW–HHTT66002200ZZ11110000000011337766", 每个字符重复2次,或者4次,甚至11次
2021-04-14 10:48:44 1349
原创 QLineSeries刷新缓慢
文章目录问题分析总结引用问题实时波形分析,波形显示刷新周期500ms,刷新宽度为310点;在显示宽度为800时,不时出现程序忙的圆圈状态,界面有些卡。分析显示处理最主要部分是往LineSeries中添加逐个添加节点。//向单个LineSeries中添加节点void CCurveView::addSeries(int iChan, const QList<QPointF> *pListPoint){ assert(iChan < m_iChanCnt); QLi
2020-12-24 08:35:57 1676
原创 QT Dll使用
文章目录测试思路相同工具下dll测试实现dll实现测试程序实现纯接口dll不同工具下dll测试用vs2015编写dll测试支持相同功能的两个不同dll创建dll测试程序测试思路用qt mingw工具生成dll,用qt测试端测试用VS2015生成dll,用qt测试端测试加载相同dll的不同版本(场景:libusb分win32版本和通用版本,如何一套代码适配两种版本)注:测试环境 win10系统相同工具下dll测试实现dll1)新建工程: 项目 --> Library -->
2020-10-22 19:22:30 323
原创 QComboBox绑定对象指针
文章目录问题处理办法-强制转换问题在MFC界面编程时,使用CComboBox对象,习惯于将一个固定的对象绑定到每个CComboBox Item上,当需要使用对象的数据时,取出指针即可。在QComboBox中,绑定是通过void setItemData(int index, const QVariant &value, int role = Qt::UserRole)实现的。取数据是通过QVariant QComboBox::itemData(int index, int role = Qt
2020-10-22 19:20:19 548
原创 zadig安装winusb遭遇Error 0x800b0109
现象在win732位系统下,用zadig安装winusb,显示安装失败。分析查看log:“Options” --> “Advanced Mode”,同时将"Options"–>“Log Verbosity” 设置为 “Debug”.发现log中有下面几行libwdi:debug [syslog] ! sig: Error 0x800b0109: A certificate chain processed, but terminated in a root ce
2020-10-22 19:17:59 1794
原创 _get_usbfs_fd libusb couldn‘t open the usb 权限不够
文章目录问题解决办法方法1方法2refrence问题测试机是uos系统,测试设备通过两根usb线与测试机相连,其中一根连接正常,另一根却无法链接。后来在调试模式下,发现应用程序输出窗口打出如下信息:_get_usbfs_fd libusb couldn’t open the usb 权限不够解决办法根据网上提供的思路,该现象产生的原因是设备访问具有一定权限,当前用户没有对该设备的访问权限。所以解决思路有三种:1)提升用户权限,以root用户身份登录,访问;2)配置系统,使设备对所有用户开放访问权
2020-10-22 19:13:26 1487
原创 ubuntu建立Qt Arm 交叉编译环境
文章目录准备环境编译qmake配置Qt Creator编译多个平台引用准备环境1)Qt源代码; Qt官网下载源码,名称为qt-everywhere-opensource-src-5.9.7.zip或qt-everywhere-opensource-src-5.9.7.tar.xz2)Perl: 5.12版本以上3)Python: 2.7版本以上4)交叉编译工具链:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz网址:http:/
2020-08-20 08:27:30 1959
原创 Qt MySQL Driver not loaded
文章目录场景分析总结场景MySQL客户端连接server失败,日志显示:“Driver not loaded”分析在网上查资料,都提及两个文件 libmysql.dll 和 qsqlmysqld.dlllibmysql.dll路径:C:\Qt\Qt5.9.7\5.9.7\mingw53_32\binqsqlmysqld.dll路径:C:\Qt\Qt5.9.7\5.9.7\mingw53_32\plugins\sqldrivers发现我缺少libmysql.dll文件。于是,将libmysql
2020-08-10 16:38:03 238
原创 Qt程序crash定位问题
文章目录问题思路从windos日志获取出错位置启动Qt命令行环境问题Qt程序由于某种未知错误Crash掉,如何定位到出错位置?思路固件开发时,出错时KDB会弹出少数出错信息,包含出错位置,调用堆栈。可以由出错地址,配合objdump,定位到出错位置。可以参照上述思路:1)从windows日志中获取出错位置;2)用objdump导出待源码的汇编从windos日志获取出错位置计算机管理 -> 事件查看器 -> Windos日志 -> 应用程序查找错误信息启动Qt命令行环
2020-08-10 16:36:14 1567
原创 类成员函数的引用
类成员函数的引用场景解决方案继承机制QT信号槽C++11 bind引用场景界面上,钞票宽度以列表形式显示,点击曲线图,弹出钞票宽度的曲线图。曲线图上,要求鼠标点在数据项时,可以显示数据的信息,比如测试名称,命令名称,钞票索引号,宽度值。在循环测试下可以产生钞票宽度数据,在单命令测试也可以产生钞票宽度数据,在历史数据查询中,也会有宽度数据,这些宽度数据都会有一个宽度曲线图。在视线中,宽度曲线图是一个类,循环测试,单命令测试,历史数据查询分别对应三个不同的类,如何从不同的类中获取数据的提示信息呢?解
2020-06-25 14:52:42 1200
原创 虚析构函数
文章目录引言测试非虚析构函数虚析构函数结论引言在QT开发过程中,遇到一个警告:你在类中定义了虚函数,是否要将析构函数定义为虚函数。所以,想测试一下虚析构函数和非虚构函数的的区别。测试测试思路如下:一个基类和一个子类,new创建一个子类对象,赋值给一个基类指针,通过基类指针删除该对象。非虚析构函数测试代码virtualfunc.cpp如下#include <iostream>...
2020-04-12 18:32:18 275
原创 关于跳槽
年初又到了换工作的季节,我也蠢蠢欲动,我要不要跳槽呢?首先必须承认一个事实:从长期来看,在企业发展比较好员工的往往是那些待的住的忠诚员工。跳槽往往是无奈的选择,对个人成长并不利。为什么要跳槽呢?为了更高的薪资,为了个人更好的发展,为自己找一个满意的工作环境,为了满足自己的爱好,为了做有意义的事,等等原因。但是跳槽是有条件的,你必须有信心,有能力获得你想要的职位。跳槽是一种权衡。从某种意义上...
2020-02-13 08:33:00 181
原创 钉钉内网穿透-浏览公司测试机目录
文章目录需求说明使用dingtalk-pierced使用IIS搭建web服务器配置Windows功能建立web服务器启用目录浏览注意验证reference需求说明居家办公,想访问公司测试机下的测试log文件,分析问题原因。公司测试机是windows 64位系统。方案一,使用teamviewer远程访问。可以实现,但不利于多人同时访问。方案二,内网穿透工具+web服务器。可以达到目的。但该...
2020-02-07 11:58:07 611
原创 IOCP调试总结
文章目录编程模型1+n模式1+n+n模式遇到的问题发完成消息延时过长甚至丢失近半年来,采用了IOCP方式处理多连接问题,现在总结一下。编程模型1+n模式一个接受线程R和n个工作线程W组合。接受线程R负责接收新的连接请求,并将该连接的socket绑定到特定的IOCP端口上。工作线程W负责响应收发完成消息,并按通信协议要求发起新的收发请求。工作线程可以有多个。使用时,最好将IOCP端口和...
2019-12-20 11:09:54 175
原创 调试NO_MORE_USER_HANDLES问题
文章目录问题描述分析过程问题描述一台站机管理m台分机,测试多分机时,发现如下现象:当分机数位400时,界面卡死;当分机数为200时,一切正常。由于界面刷新是通过定时器来不停刷新界面的,于是在定时器处理函数中添加断点。但该断点一直没执行。在msdn上查Cwnd::SetTimer说明,该函数正常返回非零数值,失败则返回零。检查SetTimer返回值,在失败情况下,通过GetLastError...
2019-12-18 13:42:16 390 1
原创 Method Not Allowed- The method is not allowed for the requested URL
文章目录现象分析密码重置流程如下:代码如下log分析解决方法总结现象在用flask实现一个密码重置功能时,遇到如下问题:report: Method Not Allowed The method is not allowed for the requested URL.分析密码重置流程如下:1)登录界面放置重置密码超链接,指向/auth/start_resetpwd2)/...
2019-08-17 23:25:32 27467
翻译 logging使用
文章目录基本用法打印到控制台打印到文件多模块场景自定义log格式,添加日期时间高级用法使用方法1)使用方法2)基本用法logger打印优先级如下leveldiscriptionDEBUGDetailed information, typically of interest only when diagnosing problems.INFOConfirmatio...
2019-08-17 23:23:53 242
原创 使用IOCP时怪异现象-多连接状态异常
文章目录IOCP多连接管理基本模型连接状态服务端通信过程现象分析原因代码log1:只记录client socket和statuslog2:记录线程ID,当前行号,client socket和status解决方案IOCP多连接管理基本模型server端IOCP多连接管理基本模型如下:1)启动一个接受线程,用于接受client发起的连接请求;2)创建一个IOCP(I/O complete po...
2019-07-28 00:30:39 393
原创 一次死循环调试
一次死循环调试一种隐含死循环现象分析原因解决方案总结一种隐含死循环现象在项目中,站机软件与多台分机通信,发现如果一台分机连接不上后,UI界面基本卡死。于是,开始查找什么原因导致UI无响应,后来发现OnTimer函数调用了DealHeatinglist,DealHeatinglist有可能造成死循环。void c_jyq_dlg::DealHeatinglist(CTLinkList<...
2019-07-28 00:27:16 391
原创 无符号数值越界处理
1.关于u32,计算公式如下; u32 u32_a, u32_b, u32_diff; u32 u32_max = 0xFFFFFFFF; u32_diff = (u32_b > u32_a) ? (u32_b - u32_a) : (u32_max - u32_a + 1 + u32_b);// u32_diff = u32_b - u32_a; is OK;2.u3...
2019-07-28 00:22:17 1057
翻译 Test driven development with pytest
Test driven development with pytest简介简单示例:test_prime.py示例:inventory单元测试与集成测试pytest fixturepytest参数化函数pytest fixture和参数化函数联合使用原文链接:简介TDD(Test Driven Development) 测试驱动开发是一种软件开发方法,它要求开发者为新功能添加测试案例,利用自动...
2019-07-08 11:26:55 208
原创 sqlite3:Unable to open database file
文章目录现象原因解决方法参考文献现象1.测试程序时发现sqlite insert失败;2.调试时,发现错误消息是"Unable to open database file"3.复制了sql语句,在命令行下打开sqlite数据库,执行插入语句,依然出现“Unable to open database file”原因参考 https://www.cnblogs.com/xingluzhe/...
2019-06-14 14:05:34 18338
原创 awk命令使用
awk是linux下很有用的列编辑工具。示例如下文件tran_map.txt内容如下TR zhuanzhangSA unknown 1.组织字符串。将第一列以字符串形式打印出来 awk '{ print "\""$1"\","}' tran_map.txt"TR","SA", 2.形成格式化代码,将第一列值转换为第二列值;采用文件脚本方式。脚本文...
2018-07-17 14:13:17 321
转载 AVL Tree 的实现
http://blog.csdn.net/zk_sima/article/details/6268127首先 AVL 树是平衡二叉搜索树,所以首先 必须满足搜索树,即l_child值其次 AVL 树是平衡二叉树,他的平衡条件是左右子树的深度之差小于2.而关键问题在怎么计算深度之差。一般的方法都是通过平衡度来衡量的。而平衡度怎么得到呢,一般是通过左右子树的深度差得
2016-06-28 14:54:32 481
原创 听讲座-质量管理
今天晚上,听了关于产品质量管理讲座的演讲,感受很实用,很喜欢.演讲围绕什么是质量?质量如何保证?质量执行的标准是什么?质量管理的方法论展开.总结起来,质量就是符合要求;保证质量不是测试部门的工作,更应该是研发部门的工作,不符合质量的产品严重影响公司利润;要求必须细化,有操作性,要完整;保证质量要保证部门接口符合要求,要积累经验预防灾害,优化流程,总结可以提高开发效率,保证质量的经验;保证质量要
2016-05-21 22:49:40 780
原创 Makefile模板
注:makefile中的目标不能和当前目录下的子目录重名,否则提示“make: 'test' is up to date.”示例代码 http://pan.baidu.com/s/1dFNlNVz单文件夹模板源文件 main.c#include #include void main(void){ printf("I am ma
2016-04-30 22:46:15 467
GN源码20220306
2022-03-09
ftl_papers
2013-12-18
Microsoft word 03 visual basic reference(English)
2011-07-06
snort源码大全(1.7,2.4,2.6)
2009-09-19
省省看(节能软件,简单,好用)
2008-12-28
程序:将逗号转化为空格
2008-11-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人