- 博客(989)
- 资源 (4)
- 收藏
- 关注
原创 modbus和字节序备忘
使用libmodbus库时,调用它的uint16_t相关接收函数时,它自动对每个字进行了高低字节转换,因此读到的数据中每个字的两个字节跟发送端顺序是对调了的,这一点尤其注意。modbus协议规定是按大端传输(见英文版说明),但是确切的说,它只是借用“大端”这个术语以表示它是由左往右依次字节传输的,因为毕竟大小端只有到了数值层面才有意义。HACH 是按小端赋给modbus的,因为设备多数都是小端平台,因此可以认为程序就是直接把变量赋值给modbus的。// 输出的是大端,即跟内存中顺序相反。
2024-02-01 18:45:29 243
原创 基于拨号网络的域名解析
(1)确认系统中/lib是否有libnss_dns* 和libresolv*相关库。(2)拨号后,如果resolv.conf不是产生在/etc下,则手动建立软链接。
2023-11-28 14:51:45 389
原创 Git合并分支
1.保证本地my分支已推送至远程,即本地my分支没有新修改内容。2.切换本地分支为master,拉取master最新代码至本地。4.将master分支合并到本地my分支。5.将本地my分支推送至远程。3.切换本地分支为my。
2023-08-18 15:22:42 43
原创 C++:undefined reference to vtable
编译通过,编译链接时始终提示C++:undefined reference to vtable....,网上基本都说是有虚函数在子类中没定义,但我确实所有子类都实现了。其中提到了RTTI需要修改gcc的编译参数,突然想到我程序中对这些类的调用采用了智能指针,应该是类似的原因,于是cmake重新生成makefile,成功解决。最近遇到一个问题,编写了一组继承关系的类,并且包含有纯虚函数、虚函数。
2023-08-08 11:03:37 97
原创 C++中使用extern引用其它文件中定义的变量
假如存在A.h/A.cpp和B.cpp。如果在A.cpp中定义了int h,那么想在B.cpp中引用h的话,需要在A.h中extern int h,然后在B.cpp中include "A.h",而不能直接在B.cpp中extern int h.
2023-08-08 10:54:38 78
原创 c++11列表初始化
2.对于类对象的初始化,{}相当于构造函数(),其中也是写构造函数参数,当然,得有对应定义的构造函数。如果是空的{},相当于调用默认构造函数。(只要是在构造对象的地方,我们都可以用{}初始化语法为构造函数提供参数,<C++程序设计语言>17.3.2)1.{}前有无=没区别。
2023-07-27 12:49:45 50
原创 Linux异步和非阻塞
一般来说使用select和poll结合非阻塞的文件指针可以对应大部分情况,但是某些时候 需要使用异步的文件指针。比如:如果一个函数处理数据,但是处理时间很长,在其处理的时候 我们需要运行这个函数的进程及时响应网络事件或者内核信号,这时就需要将其置为异步。标记,该标记会改变read,write和同类函数的行为,使得在fd还不能IO时立即返回而不是hang住。标记,该标记决定fd可以IO时进程是否会收到SIGIO和SIGPOLL信号。异步: 使得拥有文件指针的进程或者进程组能够立刻收到内核的SIGIO信号。
2023-06-08 08:45:41 845
原创 Qt setMouseTracking不起作用
在代码中调用setMouseTracking(true)不起作用,发现必须在ui部件属性里设置才起作用。
2023-05-16 15:36:35 160
原创 Qt防止自动获取焦点
由于获取焦点会触发输入法弹窗,为了防止一些部件自动获取焦点时导致输入法弹出,可以设置部件的焦点获取方式为setFocusPolicy(Qt::ClickFocus);
2023-04-05 14:53:51 62
原创 Qt关于输入法的备忘
(1)界面上的‘地球’按钮可以切换中/英文,但是默认编译出的只有英文,如果要编译中文,需要在工程属性的Build Steps为qmake增加CONFIG+="lang-en_GB lang-zh_CN"(但是我加上了,虽然‘地球’按钮有‘简体中文’选项了,但点击字母还是不出现汉字)。2、qtvirtualkeyboard源码在Qt源码根目录下,可以直接用QtCreator打开工程编译。(2)解决编译时GLES2/gl2.h找不到的问题,在pro文件中增加。
2023-03-23 17:07:53 292
原创 linux网络编程面试题
I/O多路复用的本质是使用select,poll或者epoll函数,挂起进程,当一个或者多个I/O事件发生之后,将控制返回给用户进程。以服务器编程为例,传统的多进程(多线程)并发模型,在处理用户连接时都是开启一个新的线程或者进程去处理一个新的连接,而I/O多路复用则可以在一个进程(线程)当中同时监听多个网络I/O事件,也就是多个文件描述符。select、poll 和 epoll 都是 Linux API 提供的 IO 复用方式。
2023-03-16 15:36:00 581
原创 从SVN服务器上找曾经删除的文件
首先从show log里找到删除记录,然后点击选中记录,在下方窗口上右键,执行"save rivision to"即可。
2023-03-14 15:30:03 71
原创 Qt设计师如何添加QToolBar工具栏
在QtCreator设计师界面中,在MainWindow上右键,有“添加工具栏”菜单项,但。只有在MainWindow上右键才有,在其它控件上方点击则没有,那么怎么在对话框上添加呢?
2023-01-30 10:52:34 1023
原创 Qt坐标系统
setWindow并不是控制控件本身的显示,而是控制在其上的绘图行为的显示,它让你可以自由设定坐标,然后你的绘图代码函数里就可以按照你自己设定坐标相对值硬编码,比如上面坐标设置成了painter.setWindow(-50,-50,100,100);setViewPort设置视口的含义是什么的,我的理解是它让painter把图绘制在它指定的区域里,也就是它的参数指定的矩形,这个矩形是物理坐标表示的。并且在这里由于视口是用控件的物理高宽算的,这样即是控件缩放的时候,圆锥也能随着缩放。
2022-11-11 12:26:17 153
原创 SQLite数据库rowid
由于rowid值会一直递增,如果达到所允许的最大值9223372036854775807后,它会自动搜索没有被使用的值,重新使用,并不会提示用户。所以,如果用户的数据库存在这种可能的情况,就应该使用AUTOINCREMENT定义主键,从而避免这种问题。使用AUTOINCREMENT设置自增主键,虽然也会遇到9223372036854775807问题,但是它会报错,提示用户,避免产生rowid所引发的问题。表中插入的第一个条记录的rowid为1,后续插入的记录的rowid依次递增1。
2022-10-26 08:52:16 921
原创 L4L7负载均衡
*所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。...
2022-07-21 15:11:41 1064 2
原创 QListWidgetItem上附加widget
QListWidget在动态增加item的方式下,为item附加的widget可能会发生位置偏移。解决方法是关联一个委托,这个委托并不需要和附加widget有关系,只需要重载updateEditorGeometry函数即可。XItemDelegate.hXItemDelegate.cpp.........
2022-06-22 17:00:27 1679
原创 关于模数转换的理解
模拟量到我们要得到的业务数值之间有三个概念:电流,模拟量、工程量。其中电流就是物理意义上的电流,模拟量是电流值,工程量是电流值经过量程换算后得到的业务数值。 在这里要区别电流和模拟量的概念,板子上的模拟量接口或者独立的数模转换模块,我们从它们得到的是电流值。但需要注意,这个电流值虽然我们俗称它为模拟量,但“值”也就意味着它已经是一个数字概念了,也就是“模-数转换”里的那个“数”,也即,此处已经完成了模-数转换,也就是说,板子上的模拟量接口我们虽然叫做模拟量接口,但它实际上它就是模数转换模块
2022-06-02 14:44:57 1283 1
原创 Linux获取当前进程名
int GetSelfProcessName(char *name, int len){ char path[1024]; memset(path, 0, sizeof(path)); if(readlink("/proc/self/exe", path, sizeof(path) - 1) <= 0) { return 0; } char *pName = strrchr(path, '/' ); if (pName != NULL && path + s.
2022-04-24 14:48:08 2056
原创 C++模板定义时提示undefined reference to
一般来说,写C++程序时推荐“类的声明和实现分离”,也就是说一个类的声明放在example.h文件中,而这个类的实现放在example.cpp文件中,这样方便管理,条理清晰。但是如果类的声明用到了模板template,则类的声明与实现分离是不可取的,因为这个GCC会报错,比如undefined reference to XXX等错误。所以如果用到了template需要把函数的实现放到类的声明文件中,至于函数是直接在class声明内定义,还是在class声明外定义都可以。...
2022-04-19 16:25:22 2456
原创 Qt中的MIME
1、可以把mime数据看做是描述文件本身的数据,虽然一般我们是按照文件后缀名区分文件类型,但实际上操作系统是按照它预定义的支持的文件格式识别文件。mime类型大全:Shared MIME-info Database2、除了操作系统预定义的文件类型,我们还可以自己扩展,扩展名字一般application/x-开头,例如QT框架就为QAbstractItemModel扩展了application/x-qabstractitemmodeldatalist。...
2022-04-19 08:45:16 1363
原创 C++ note 1
1、拷贝构造函数也可以有初始化列表,在子类的拷贝构造函数中想要使父类部分采用拷贝构造的话,必须在初始化列表中显示调用父类的拷贝构造,否则的话,父类部分采用父类默认构造函数。...
2022-04-13 09:54:35 485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人