- 博客(74)
- 收藏
- 关注
原创 Modbus通信时数据接收和发布的处理
低地址的寄存器保存float数据的低16位,高地址寄存器保存float的高16bit。//高16位保存到保持寄存器中。//低16位保存到保持寄存器中。/*Data是MCU需要发送的数据(小端存储),经过转化后发送给modbus*/
2023-08-02 14:26:29
1018
转载 [CANFD] 高波特率下收发器延时的处理机制-Transceiver delay compensation
FDCAN Transceiver delay compensation
2022-09-05 14:00:02
2160
转载 2021-03-04
Qt设置窗口透明度-转载1,父窗口透明// 设置背景图片QPalette pa;setAutoFillBackground(true);pa.setBrush(QPalette::Background,QBrush(QPixmap("image/cloud.jpg")));setPalette(pa); //QPalette palette; // palette.setBrush(QPalette::Background, QColor(0, 0, 0, 100)); ...
2021-03-04 19:50:26
316
1
转载 Linux系统下不同机器之间拷贝文件的方法
一、将本地文件拷贝到远程机器:scp /home/administrator/news.txtroot@192.168.6.129:/etc/squid其中:/home/administrator/ 本地文件的绝对路径news.txt 要复制到服务器上的本地文件root 通过root用户登录到远程服务器(也可以使用其他拥有同等权限的用户)192.168.6.129...
2020-09-29 16:49:03
3163
1
原创 Samba共享文件系统配置
Samba共享文件系统配置使用putty或secure CRT实现Windows与Linux之间的文件传输很不方便,使用samba这个软件,可以把Linux下的文件夹映射到window下直接访问。具体操作步骤如下:一、linux系统安装Samba服务端Sudo install samba samba-client cifs-utilsSudo apt-get install sambaSudo apt-get install smbfs二、创建共享文件夹Mkdir /home/t
2020-09-29 16:44:10
723
1
原创 Qt获取设备环境变量
1. 运行设备上有T_ROOT这个环境变量,获取环境变量方法如下:QString path = QProcessEnvironment::systemEnvironment().value("T_ROOT"); //获取名为T_ROOT的环境变量path.replace(QRegExp("\\\\"),"/"); //将‘\’替换成‘/’qDebug() <<...
2019-11-26 15:49:54
4026
原创 Qt中执行多条shell语句
在Qt中执行一个shell指令常用QProcess类来完成,常见的用法示例如下: QProcess process; process.start("find /opt/ -name ts_calibrate"); //str是需要执行的命令 flag = process.waitForFinis...
2019-11-26 15:38:58
3111
转载 QT图片资源的加载与使用(几种方法)
图片是一种资源,而在Qt中,对于资源的使用是有其独特的方式的!①:一般来说:资源在内存中是用资源对象树来表示的,该树在程序启动时创建。②:而对于资源而言:我们都是需要先将其加入到这棵树中才能加载到内存中并被程序使用!!③:而将一个图片资源放到程序的资源对象树中是用函数QResource::registerResource()来实现的。亦即:要将资源向这颗资源对象树进行注册,这样才对在系统中...
2018-12-11 17:32:07
12454
转载 Qt动态加载图片资源文件(资源文件与源代码分离)
在最近的Qt相关项目开发中,有不同客户提出更改logo图片的需求,每次更换一张图片需要重新添加到.qrc资源文件,并重新编译源代码生产可执行文件,操作效率极低,频繁修改源代码也 容易引起其他不可靠问题,故想把部分做成动态加载的形式。在网络上查阅相关资料后解决了这一问题,总结一下以便以后参考查阅。 我们大家都知道,在qt框架中,资源文件后缀名是以.qrc结尾的。它可以将我们的图片文件、qml、...
2018-12-11 17:30:25
11734
转载 正确计算linux系统内存使用率
图中的例子很典型,就是:多数的linux系统在free命令后会发现free(剩余)的内存很少,而自己又没有开过多的程序或服务。对于上述的情况,正确的解释是:linux的内存管理机制与windows的有所不同。具体的机制我们无需知道,我们需要知道的是,linux的内存管理机制的思想包括(不敢说就是)内存利用率最大化。内核会把剩余的内存申请为cached,而cached不属于free范畴。当...
2018-08-12 09:03:14
12396
转载 Linux-内存管理机制、内存监控、buffer/cache异同
在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存(buffer/cache),利用内存读写的高速特性来提高Linux系统的数据访问性能。在这方面,区别于Windows的内存管理。本文从Linux的内存管理机制入手,简...
2018-08-12 08:49:27
506
转载 Linux 内存管理及手动释放linux cache内存
总有很多朋友对于Linux的内存管理有疑问,之前一篇linux下的内存管理方式似乎也没能清除大家的疑虑。而在新版核心中,似乎对这个问题提供了新的解决方法,特转出来给大家参考一下。最后,还附上我对这方法的意见,欢迎各位一同讨论。当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的...
2018-03-13 16:41:09
8670
原创 Busybox上定时执行任务的实现方法
在busybox平台上实现定时执行任务功能,根据不同情况总结两种使用方法。一、利用crond完成crond是一个服务,一个守护进程。crond 是linux用来定期执行程序的命令,crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。按照网上查找的资料执行时经常会碰...
2018-03-13 16:05:31
2792
原创 Qt 常见的几种数据类型转换
double/float size = 2.3334524;QString str = QString::number(size, 'f', 2);其中f代表非科学计数法格式,2代表小数点后两位。char * 与 const char *的转换char *ch1="hello11";const char *ch2="hello22";ch2 = ch1;//不
2017-10-23 15:54:16
7077
原创 没有core dump文件如何定位问题
最近在 Linux Qt上做开发,发现程序异常crash,用core dump文件也没有记录下来有用的信息,如下图:定位程序异常crash 的过程百般痛苦,虽然最后是用 把core dump文件大小的限制取消,完整记录程序崩溃的堆栈信息结合gdb 定位到问题,但发现网友分享的 不用core -dump 定位bug的方法,故记录下来,以备他日试用。有时写c/c++程序
2017-10-21 11:47:49
2966
转载 段错误调试工具-core dump
一、前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得困难起来. gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字, 而把他
2017-10-21 11:42:20
877
转载 core dump 分析程序异常
最近在Linux上开发Qt 应用程序时,出现应用程序不定时发生异常终止,检查代码内容没有查出问题,后来采用core dump 这种方式能准确定位到问题。在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明者为王安),线圈就叫作core ,用线圈做的内存就叫作“core memory”。(线圈的单词应该是coil,呵呵)如今,半导体工业澎勃发展,已经没有人用线圈当内存了,不过
2017-10-21 10:27:31
1319
1
原创 Qt获取运行设备本机IP地址
本人在开发Qt应用程序时,需要在应用程序中显示运行设备的本机IP地址,本来考虑解析运行设备的网络配置文件来获取IP地址,后来查阅文档后,发现Qt的网络编程模块中QHostAddress类 可以很方便解决这个问题,记录一下。本人实现方法如下: QList ipAddressesList = QNetworkInterface::allAddresses(); // use t
2017-10-19 19:48:21
7222
原创 linux 下利用grep查找字符串
Linux查找文件内容或字符串的常用命令,非常实用。 1.从文件内容查找匹配指定字符串的行:$ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件grep "thermcontact" */*.in2.从文件内容查找与正则表达式匹配的行:$ grep –e “正则表达式” 文件名3.查找时不区分大小写:
2017-10-19 19:39:31
7272
原创 QT 程序中对Linux设备内存的监控
最新在QT上开发应用程序的过程,需要对应用程序运行过程中Linux设备的内存使用率等进行显示,在Linux设备内存占用较高时给用户提示! 由于本人对Linux系统任务管理器的原理,不能直接从任务管理器中得到Linux 设备CPU的占用率,于是就采用间接办法来获取CPU信息。 Linux系统信息一般都能在/proc/目录下查看cpuinfo,meminfo文件来获取,通过
2017-10-19 19:01:26
1644
原创 Linux 上使用svnprintf 函数时函数返回值
本人最近在Qt上开发程序时,应用程序在运行过程中crash,指针最后停在 svnprintf函数返回值指向的数组内容,debug 跟踪发现 vsnprintf 函数返回值远大于限制的字符长度 和 分配的buffer 长度。如下图:查阅百度百科:snprintf(),为函数原型int snprintf(char *str, size_t size, const char *forma
2017-10-19 13:53:13
715
3
原创 Qt 文件另存为功能
最近在导出设备运行日志时,为避免每次导出的日志文件名相同,需要把最新日志文件加上当前时间保存。实现方式非常简单: QString fileName = "/dev/shm/XXX.log"; QFile file(fileName); QFileInfo fileInfo(fileName); QString dstPath
2017-10-19 13:24:47
3745
原创 删除vim打开文件末尾的^M
最近在Windows下写了一个shell脚本,拿到Linux下执行的时候一直提示找不到文件。但是文件明明就存在,在Linux用vi/vim 打开脚本,文件内容不为空,仔细检查脚本内容也没有出错,只是每行 末尾 多出来一个^M 符号。去掉这个^M 符号后就可以正常运行了。发现这个问题之后,在网络上搜索去除^M 以及找到^M出现的原因; 经过百度,发现:1. 在windows下的文
2017-10-18 10:27:35
2439
1
转载 Linux 下expect 环境安装及简单测试
expect是交互性很强的脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,是一款很实用的批量部署工具!expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装下载:expect-5.43.0.tar和tcl8.4.11-src.tar下载地址:https://pan.baidu.com/s/1kVyeLt9 提取密码:af9p将ex
2017-10-13 17:54:21
2257
转载 Linux shell sed命令在文件行首行尾添加字符
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~用sed命令在行首或行尾添加字符的命令有以下几种:假设处理的文本为test.file在每行的头添加字符,比如"HEAD",命令如下:sed 's/^/HEAD&/g' test.file在每行的行尾添加字符,比如“TAIL”,命令如下:sed 's/
2017-10-13 17:46:59
36387
1
转载 Linux下常见压缩包的解压方法
1. gz压缩格式这是linux下最常见的压缩格式,例如:jdk-7u75-linux-x64.tar.gz解压示例:tar zxf jdk-7u75-linux-x64.tar.gz2. bz2压缩格式例如:android-ndk64-r10b-linux-x86_64.tar.bz2解压示例: tar xf android-ndk64-r10
2017-10-13 17:22:39
701
转载 Linux 下设置IP、网关、DNS
Linux下命令行设置IP、网关和DNSip 和子网掩码 执行这个命令:ifconfig eth0 192.168.1.123 netmask 255.255.255.0网关的设定执行这个命令: route add default gw 192.168.1.3 把这两个命令写到/etc/rc.local 或者/etc/rc.d/rc.local 里面都可以的,这样就可以永久保存/e
2017-10-13 17:20:17
823
转载 Linux 下文件完全复制(属性不变)
在linux中怎样用命令完全拷贝一个目录下的所有文件(包括隐藏文件以及文件夹)到另外一个目录下,并且使得被复制的所有文件的属性等完全保持不变? 注意,连原来的文件夹中所有的文件的属性、链接等都不能更改。也就是说,要建立原来文件夹的一份一模一样的拷贝!&n在linux中怎样用命令完全拷贝一个目录下的所有文件(包括隐藏文件以及文件夹)到另外一个目录下,并且使得被复制的所有文件的属性等完全保持不
2017-10-13 17:15:47
42838
转载 Linux shell判断文件或目录是否存在
#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPath" fi #这里的-d 参数判断$myPath是否存在 if
2017-10-13 17:05:17
15034
原创 Linux 下利用corn添加定时任务
最近在开发某个应用程序时需要多次测试,但是每次编译源代码的时间较长,导致开发效率很低。所以考虑在服务器上Linux系统中添加一个定时任务,每天自动执行某个脚本实现自动编译。实现方法如下:在LINUX终端中先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 ./linux_run_all.sh 内容到文件里面 ,然后保存退出。在终端中输入 crontab -l
2017-10-13 16:47:15
6861
原创 QTableWidget常用技巧
本人在Qt开发应用程序时用到QTableWidget控件,总结一些常用技巧。1.表格显示设置 ui->IOtable->setRowCount(20); //设置表格行数 ui->IOtable->setColumnCount(7); //设置表格列数 QHeaderView* headerVi
2017-10-13 16:00:45
1587
转载 Linux下使用du命令查看文件或目录占用磁盘空间大小
du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh 一、du的功能:`du` reports the amount of disk space used by the spe
2017-10-12 20:18:03
1119
转载 Qt中使用事件过滤器来处理键盘焦点
我们都知道,在主事件循环中,使用QApplication::notify(QObject*, QEvent*)来分发事件到下面的子窗口,而子窗口将调用QObject::event(QEvent*)来根据事件类型调用相应的事件处理函数。在处理键盘焦点的时候,我们把焦点定位特殊部件的习惯通常是Tap键、下一个键盘快捷键或者鼠标滚轮等等,根据传统的方法,为了能够正确切换焦点,我们需要重写每个部件的键盘处
2017-10-12 20:14:00
1719
转载 QT常用实用的界面设计技巧
一、主界面 1.窗口 最小化 最小化 关闭按钮 显示状态自定义 setWindowFlags(Qt::CustomireWindowHint); setWindowFlags(Qt::WindowCloseButtonHint);//只要关闭按钮 setWindowFlags(Qt::WindowFlags type) Qt::FrameWindowH
2017-10-12 20:08:23
6089
原创 Qt编码方式(中文显示)
最近在Qt上遇到界面显示中文乱码的问题,实现方法如下:示例: QUdpSocket *mUdpRcver; QString rcvData; while (mUdpRcver->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(m
2017-10-12 19:50:17
8702
2
转载 QT的键盘事件及焦点设置
Qt键盘事件属于Qt事件系统,所以事件系统中所有规则对按键事件都有效。下面关注点在按键特有的部分:focus一个拥有焦点(focus)的QWidget才可以接受键盘事件。有输入焦点的窗口是活动窗口或活动窗口子窗口或子子窗口等。焦点移动的方式有以下几种:按下Tab或Shift+Tab注意:文本编译器(一般需要插入Tab),或者WebView(需要Tab来移
2017-10-12 19:40:32
3777
转载 关于QT 内存泄露
最近在研究Qt 开发的应用程序内存监控的问题,查阅网友关于Qt中指针对象的使用与内存的关系,特收藏起来以便今后查阅!一、简介 Qt内存管理机制:Qt 在内部能够维护对象的层次结构。对于可视元素,这种层次结构就是子组件与父组件的关系;对于非可视元素,则是一个对象与另一个对象的从属关系。在 Qt 中,在 Qt 中,删除父对象会将其子对象一起删除。C++中delete 和 new 必
2017-10-12 18:55:18
632
原创 QT 中自定义QScrollBar 风格(宽度、滑块大小等)
最近在Qt上做应用程序开发时需要对一个文本编辑框的滚动条进行设置,在网络上查阅了很多网友的意见,多次尝试验证后终于达到目标,现记录整理本次试验的过程,以便参考查阅。 本人在应用程序中封装PeTextEditor 类用来编辑、加载文本,文本编辑器右侧的滚动条的滑块会根据内容大小进行放大和缩小,当加载文本文件很大时,滑块很小不方便手动操作,故需对滚动条的格式进行修改设计。
2017-10-12 16:25:39
27247
2
转载 Qt JSON 文件生成与解析
最近需要在Qt中解析修改保存JSON格式的文件来完成相关工作,网友分享的这篇文章很实用,特此记录下来,方便自己下次查找。简述Qt5 中包含了处理 JSON 的类,均以 QJson 开头(例如:QJsonDocument、QJsonArray、QJsonObject),在 QtCore 模块中,不需要额外引入其它模块。简述常用的 JSON 库JSON
2017-07-25 19:18:04
2834
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人