
源码
文章平均质量分 71
祝久文
一直从事前装车载电子行业,嵌入式Linux软件开发,从未离开。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于GDBus技术的IPC通信编程详解(2)
时隔多年,作为2020年的开篇,终于迎来了“基于GDBus技术的IPC通信编程详解(1)”续集——基于GDBus技术的IPC通信编程详解(2)!第一篇谈到了基于gdbus的IPC的协议接口文档。根据这段时间来的项目经验总结,我们可以定义一个完全通用的协议接口文档。内容如下:<?xml version="1.0" encoding="UTF-8" ?><node nam...原创 2020-01-02 15:31:19 · 2971 阅读 · 7 评论 -
一个使用C++写的通用的观察者模式的类-CObserver——基于单例模板类
废话少说,直接上代码。释义的话,各位看官可自行百度。这个观察者模式的本质,就是将所有观察者对象放进一个list中,发送给观察者的消息,统一使用NOTIFY_OBSERVER 发给他们。下面就是代码:#ifndef OBSERVER_H#define OBSERVER_H#include <list>#include "singletonbase.h"using name...原创 2019-09-22 20:29:57 · 383 阅读 · 1 评论 -
如何使用本作者提供的单例模板类,来实例化单例类?有如何使用这个单例类获取单例对象?
作者在这篇文章中,提供了一个通用的单例模板类。链接:一个通用的单例模板类那么,如何使用这个模板实例化自己的单例类呢?下面是参考代码(假设这个模板类的头文件为 singletonbase.h):#ifndef TEST_SINGLETON_H#define TEST_SINGLETON_H#include "singletonbase.h"class CTestSingleton...原创 2019-09-22 20:18:05 · 220 阅读 · 0 评论 -
一个通用的 singleton template class
#ifndef SINGLETONBASE_H#define SINGLETONBASE_H#ifndef NULL#define NULL (0)#endiftemplate <typename T>class CSingletonBase{public: __inline static T* GetInstance() { r...原创 2019-09-22 20:05:45 · 343 阅读 · 1 评论 -
QT对象释放顺序引起的报错问题
最近在做项目时,遇到一个奇怪的问题——QT对象释放的顺序不对的话,会引起崩溃。具体是这样的:1、先定义两个QT类(Class1、Class2),下面是头文件:#include <QObject>class Class1 : public QObject{ Q_OBJECTpublic: explicit Class1(QObject *parent =...原创 2018-12-14 17:38:49 · 761 阅读 · 0 评论 -
C与Lua交互——在C和Lua之间相互传递数据
C与Lua交互 ——在C和Lua之间相互传递数据,并以此操作SQlite3数据库 使用Lua来操作Sqlite3数据库的过程,相比直接在C/C++下操作,简单得多。在嵌入式开发过程中,使用Sqlite3来管理系统中的大量数据,是一种非常成熟的做法;将Lua 和Sqlite3结合起来的开源技术Lua Sqlite3,就显得非常适合快...原创 2018-06-12 11:32:47 · 7952 阅读 · 0 评论 -
基于GDBus技术的IPC通信编程详解(1)
在搭建嵌入式Linux应用软件系统框架时,常常会将其划分为好几个模块,每个模块之间的通信方式多数时候都会用到d-bus技术。目前基于d-bus技术的几种编程框架有:glib-dbus,GDbus,QtDbus,dbus-python。这5种编程框架的复杂度有高有低,最简单的应该非QtDbus莫属了,最复杂的过程要属glib-dbus。鉴于我对GDBus的熟悉程度,这里只介绍GDBu...原创 2018-05-03 14:41:45 · 17136 阅读 · 5 评论 -
Telechips平台的WinCE下的wave驱动报错的原因
最近公司有个项目使用的百度Carlife语音识别出现wavedev.dll报错问题。根据经验,这种报错问题,一般都是指针越界或者stack over flow等错误。 于是根据wavedev.map文件定位到了midiNote.cpp的函数NoteOn中的数组PitchTable。可仔细分析这个函数以及这个数组,认为怎么都不可能导致内存越界错误——PitchTable[ Note % 12 ...原创 2017-07-03 14:09:06 · 504 阅读 · 0 评论 -
wince下wave驱动的调用过程
近日为了解决telechips的wince平台下百度carlife语音识别时,出现wavedev.dll报错的问题。花了两天的时间来阅读wavedev的驱动源码。得到了其调用的过程。比如app在调用waveoutOpen、waveoutWrite等函数时,驱动的执行路径如下:1、waveOutOpen,waveOutWrite--->WAV_IOControl(IOCTL_WAV_MESSAG原创 2017-07-03 11:17:49 · 495 阅读 · 0 评论 -
自己实现的Ring模板类
闲来无事,将自己曾经写的双向循环链表源码(Ring的实现)发于此处,供今后老了,给下一代看看,呵呵。#ifndef HSW_RING_H#define HSW_RING_H#ifdef __cplusplusextern "C" {#endif#ifndef __cplusplus typedef unsigned short bool ;#endif#ifndef NULL#de原创 2017-03-14 15:06:44 · 383 阅读 · 0 评论 -
自己实现的stack模板类
之所以要自己实现这个类,基于如下两点原因: 1、C++标准库里的stack模板类,实现得过于复杂,用起来也不方便; 2、为了改进文件夹遍历算法——改递归为循环。#ifndef HSW_STACK_H_#define HSW_STACK_H_/*如下模板类使用单链表实现了栈类型 zhujw 2017.3.1*/#ifndef __cplusplustypedef unsigned char原创 2017-03-14 15:00:31 · 1180 阅读 · 0 评论 -
采用stack实现的文件夹循环深度优先遍历的基类
一般情况下,我们在遍历文件夹时,都采用递归方式,但在wince平台下测试发现,当递归深度达到46级时,出现stack overflow而导致程序崩溃。为了解决这个问题,将递归改进为循环,这样理论上可以做到无限,只要内存一直满足的前提下。下面的代码完整展现了Windows平台(含WinCE)下,改进的文件遍历算法——循环深度优先遍历。头文件:#ifndef CFILEFINDER_H_#defin原创 2017-03-14 14:49:19 · 800 阅读 · 0 评论 -
利用C++模板实现队列queue
#ifndef HSW_QUEUE_H_#define HSW_QUEUE_H_/*如下模板类使用单链表实现了队列类型 zhujw 2017.3.2*/#ifndef __cplusplustypedef unsigned char bool ;#endif#ifndef NULL#define NULL (void*)0#endif#ifndef tbooltypedef char原创 2017-03-14 14:33:51 · 1009 阅读 · 0 评论