- 博客(34)
- 收藏
- 关注
原创 Linux C 中 multiple definition of ‘xxx‘
(2)在项目中,对于依赖的源文件夹中的所有.c文件都会被编译,如果其中一个.c文件被另外一个.c文件include,就像下面的代码一样,那么就会导致被包含的那个.c文件中定义的变量和函数被两次编译,从而导致重复定义。尽量不要使用.c文件包含.c文件,而使用头文件声明的方式调用另一个.c文件中的函数或者变量,否则容易忘记,导致重复定义。为了防止上述问题的出现,我们可以把需要用在多个源文件中的变量或函数集合到一个统一的文件中,然后在头文件中进行声明,在其他地方都用包含头文件的方式进行处理。
2023-12-29 16:54:30 781
原创 Q_PROPERTY 使用QList 来进行数据传递
在使用C++与QML进行数据传递的时候,我们会经常用到Q_PROPERTY。本章主要从QList基础、Q_PROPERTY 中使用QList、Q_PROPERTY 中使用QList 完整示例三个方面来讲述。三、Q_PROPERTY 中使用QList 完整示例。1、创建QList 对象。二、Q_PROPERTY 中使用QList。1、在main函数中向QML注册。一、QList 基础。
2023-12-22 11:28:22 515 1
原创 Linux 下C语言中调用C++动态库完整流程
2、编译C++文件生成动态库。本文只是一个示例,如果是项目,需要更换为Makefile 或CMAKE来生成动态库。3、在C语言中直接调用get_parameter_result,链接库文件跟链接C动态库文件一致。1、C++中要供给C使用的函数必须经过如下处理。//这里放置C语言需要调用的函数。
2023-12-06 16:23:28 497
原创 RK3588 can 编程
Can使用二根线来连接各个单元,CAN_H, CAN_L.Can总线通过二根线的电位差来得到总线电平。显性电平表示逻辑0,一般CAN_H 为3.5V,CAN_L 为1.5V,电位差为2V.隐性电平表示逻辑1,一般CAN_H 和CAN_L为2.5V。CAN定义了5种类型的帧,分别是数据帧,遥控帧,错误帧,过载帧,间隔帧。以前也做过Can编程,时间久了,就忘记了,因项目的需要,再次做Can编程的时候,竟然发现很多东西都忘记了,于是把怎么进行can编程记录下来,用来备忘。一、Can总线的一些基本特性。
2023-10-07 13:33:30 345
原创 RK3588外围设备调试和应用总览
大概分为以下几个内容,can总线从应用到驱动,SPI从应用到驱动,I2C从应用到驱动,uart从应用到驱动,AD采样从应用到驱动等,另外可能也会附加一些项目开发过程中遇到的问题。由于平时工作比较忙,可能本专栏更新不是特别快,在订阅前,请大家多思考!如果订阅了,需要已更新的专栏的代码,可以私信获取。RK3588项目基本完成,后面打算抽空把相关的外围设备调试和应用使用进行一些总结,作为一个项目备忘。
2023-08-04 13:25:18 153
原创 Linux TCP 服务器
本章主要介绍的是一个服务器跟一个客服端的连接,如果需要一个服务器连接多个客服端,需要自行通过 select 进行处理,本章不进行处理。
2023-07-14 10:43:13 64
原创 QML 动态创建和删除多个组件
最近要做一个时序工具,需要一个元件对应一个可设定的时序,纠结了好久,不知道怎么处理好。最终确定以如下方式进行开发。如有更加好的方式,请留言。 首先为QML 的ListView 写一个C++的模型,当然也可以直接用 ListView 的模型,由于这些数据都需要处理,最后会保存到xml 文件中,习惯就写C++ 方式了。 第二个,为每个元件分配一个 ListView. 在 ListView的 delegate 中根据每个元素的参数,动态创建组件。在这里,刚开始...
2021-12-17 16:16:21 881
原创 QT SQLITE
最近在学习QT,然后觉得是否应该把数据库也搞一下,于是便进行了一些资料查询和简单的代码编写,下面记录一下一个完整可行的数据库的基本操作。 一、创建数据库并建立连接。 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLIT"); db.setHostName("mystudent"); db.setDatabaseName("flightdb"); if(!...
2021-11-18 14:36:44 612
原创 QML MV
最近在使用QML 过程中需要由C++ 的逻辑层上传数据给QML 展示,并且这个数据是不断更新的,所以我使用C++ 的mode 方式,然后在QML 中调用。当然这个方式肯定是没有问题的。闲暇之余,想了下,如果我不采用C++的方式实现 mode, 而是采用QML 中已有的 ListModel 怎么实现呢?大概分为二种,一种为需要不听刷新的界面,一种为从逻辑层获取数据后,不需要再刷新。 首先第一种,从逻辑层获取数据后,不需要再刷新,这个比较简单,就是在ListModel 中,先...
2021-10-25 17:16:54 179
原创 QT crator 创建项目
使用Qt Crator 创建可以分为二种,一种为通过qtcrator 创建虚拟文件夹,当我们使用qt crator 打开时,我们看到的是一个分文件夹的项目,但是在我们实际的路劲下是没有这个文件夹的。为了区分不同的模块或者是不同的功能,我们可以使用手动来建立。首先,在生成的 Quick 的项目的目录下建立多个文件夹。如test1,test2,test. 第二、在每个文件夹下建立相应的 pri文件。 第三、在 pro 文件中包含每个 pri 文件。第四,运行一下,就可以看到实际的效果了。...
2021-10-11 17:38:25 243
原创 linux 下动态库使用
最近在使用别人提供的动态库,在用的时候还不是一下就能OK的,有些地方还是需要注意。1、当我们在c++ 中调用C 的动态库,我们会经常出现 undefined reference to fun, 就是定义在动态库中的函数我们找不到,但是我们已经包含了相关的头文件了,为啥呢?这是因为我们需要把这个头文件放入到 extern "c"{ #include "mytestso.h"},这样我们就解决了这个问题。2、warning: XXX.so, needed by /opt/XXX/XXX/XXX.so..
2021-09-18 10:15:31 359
原创 JSON 的简单使用
最近项目需要弄一个QT的程序,以前没干过,都是现学现用。今天我们需要QT的QML和QT的C++ 进行消息的交互。所以对QJSON有所了解。其实对我们这个项目来讲JSON 只需要二个很基本的功能能,第一个构建JSON对象处理,第二,接收传递过来的JSON进行解析。第一,JSON对象的打包。QJsonObject json;json.insert("Name","dream");json.insert("Age",100);第二,JSON的解析。QJsonValue valu...
2021-05-12 18:37:56 113
原创 2020-12-05
设计模式之命令模式命令模式可以把“动作的请求者”从“动作的执行者”对象中解耦出来。动作的请求者和执行者通过命令对象进行沟通。命令对象封装了接受者和一组动作。综上: 。下面我们以遥控器来介绍命令模式一:遥控器需要控制的各个器件。(如,冰箱,电灯,空调,电视等)【动作的执行者,如电灯的开关等】执行遥控请求的动作。二:遥...
2020-12-05 17:17:01 79
原创 2020-12-05
设计模式 之单件模式 一、构造函数是private ,所以他是独一无二,不会产生多的对象。 二、调用实例化,一般是通过调用一个 公有的静态函数 getInstance()来获取对象。 当我们在多线程的时候,可能会产生多个对象,为什么呢?因为会出现同步的问题,所以我...
2020-12-05 17:14:53 46
原创 2020-12-04
多进程 FIFO 通信 好多年没用过管道了,最近的一个项目,由于硬件还没有出来,所有通过按键的操作无法直接通过机器操作。没办法,只能通过多进程控制台的方式来让机器上的运行程序模拟按键操作。竟然花了二个小时才把管道完整的实现模拟arm 板上的通信!!!!!! 下面贴出部分代码做备忘...
2020-12-04 11:31:18 57 1
原创 2020-11-23
UDP解码小结 最近一直在做海思项目,今天早上进行了UDP解码和显示。但是怎么看,解码下来的视频在底部会时不时的出现一些马赛克,然后我用秒表测试了下延时,发现及时流的达到了300毫秒。觉得不太对,正常情况下,四路解码不会超过200毫秒。于是开始了一天的折腾。刚开始总是认为是我在处理帧的问题。于是对帧进行了一步一步的排查,干了一上午。没发现...
2020-11-23 17:42:17 114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人