自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用cython将现有c/c++库移植为python模块

python凭借其提供的广适的基本数据类型,简洁的语法,开放的环境,为高效的开发程序提供了方便的平台工具。* 将C\C++头文件中需要的原型,在pxd文件中声明。将C++函数或者类封装成python模块,成为非常适合将一些重要的功能,与python结合的思路。* 虽然不能支持所有的C++语法,但是可以通过内嵌C++语法来封装成支持的语法。* 使用setup工具,将pyx定义为模块,并进行编译和打包。* 在对应的pyx中实现暴露给python的方法或者扩展类。* 工程管理很方便:编译,打包,发布,安装。

2024-06-09 19:45:40 360

原创 python3创建虚拟环境

开发程序的时候,总是希望有一个相对干净的环境来开发和执行程序。一方面可以非常清晰的看到第三方工具的依赖性,另外一方面,为了将来部署的准确性。这里为了开发cython程序,在debian12上使用了python的虚环境,删除和创建比较简单。pip的源使用清华源。

2024-06-09 18:22:14 252

原创 sqlalchemy关联使用两个sqlite数据库

使用场景是这样的:在使用sqlalchemy来实现数据库表管理的程序中,需要使用两个数据库中的表。在创建sqlite引擎时,需要使用使用事件监听,在建立连接后,attache另一个数据库。但是在另外一个数据库中建表时,需要通过schema参数来指定数据库名。这里使用普通的建表语句。

2022-11-17 16:55:26 438 2

原创 apachecn归档下载

最近在研究图片识别算法,有个网站挺不错的。没太细究。iBooker - 可能是东半球最大的 AI 社区 | 欢迎大家贡献项目 -- ApacheCN 提供支持有一些电子书收集,很用心。想保留下来,内容太多了,于是写了个自动下载脚本。import os,syscmd = 'cdrive download 'def download(md_dir): for root,dirs,files in os.walk(md_dir): for file in fi

2022-03-20 20:07:27 358

原创 搭建CxxTest单元测试框架

CxxTest简介CxxTest软件框架提供了一套代码框架和代码生成工具。测试人员需要使用C++头文件定义测试用例。在测试用例中,通过定义测试方法,来打包需要的测试项目。测试方法中可以调用开发人员编写的函数,类,变量,声明等,来实现对这些函数,类,变量,声明进行测试和验证。测试函数中需要使用CxxTest提供的断言宏,来测试比较结果。这些结果如果非预期,会被作为失败或者异常,被CxxT...

2020-02-15 15:18:02 674

原创 使用C++扩展Python2

使用C++扩展Python的时候主要实现:* 将C++中的函数引入到Python中去* 以及将C++中的类引入到Python中去同时还涉及到:* 返回值扩展类型* 参数检测* 异常处理* 软件程序编译以及发布大部分是模式化编程,套模本即可。#ifndef _DM_PYX_ACTION_HPP#define _DM_PYX_ACTION_HPP...

2019-05-16 17:10:52 407

原创 JS类:DeviceMgr

概述JS类可以在xwui浏览器中使用,用于访问DM2016系统资源。 JS类DeviceMgr属性size当前设备数量。只读。方法int getIndexByName( string name )根据名字name获取设备索引号。int getIndexById( int id )根据ID获取设备索引号。string getName( int i...

2018-11-20 13:27:05 364

原创 历史数据任务配置文件hisdata.xml

++ 历史数据任务配置文件hisdata.xml+++ 配置项* frozen 冻结测量量  属性 enable 是否冻结  子项trigger可以配置多个触发器。* dump 数据转储  属性 enable 是否自动转储。如果自动转储,历史数据将从shadow表转存。  子项trigger可以配置多个触发器。* clear 数据清理  子项trigger可以配置多个触发器。...

2018-10-15 19:24:15 783

原创 扩展BOA配置说明

boa配置文件boa.conf的配置项说明。指定boa配置项目录方式, 比如/home/work/dm2016/etc/boa.conf启动命令:boa -c /home/work/dm2016/etc<<|Port|端口|对于Debian设置为10080Listen|本地服务ip|可以不用设置BackLog|监听队列大小|默认250User|用户名|可以不设...

2018-10-11 13:17:05 278

原创 Error CScada.scada.dm::CScada{内存分配失败boost::interprocess::bad_alloc}

如果scadashow --init之后执行scadashow --config报上面的错误,表明系统预置的内存大小不够,需要增加允许scada系统使用的内存。在配置文件cfg.xml中的scada.allocate配置不够。...

2018-10-09 10:24:27 471

原创 DM2016点表生成工具 - 使用手册

概述对于远程采集数据来说,需要处理的数据是因项目而不同的。但是针对常用的设备而言,该设备所具备的能力是固定的。把特殊设备所具备的能力作为经常引用的设备配置表。需要使用工具来对设备的组合进行管理。尤其对大规模监控系统,这样的工作更为繁琐。因此,编写了这样一个工具,用于自动生成不同设备的组合的监控系统信息。软件名称scada_gen_tool基于Qt4运行。有两个版本:windows版...

2018-10-08 22:23:02 894

原创 Qt pro文件中增加对环境变量的条件判断

Qt pro文件在跨平台方面非常方便。系统需要同时支持mysql和sqlite数据库。使用环境变量DB_TYPE来识别使用哪种数据库在pro文件中使用CONFIG配置来自动识别CONFIG += $$(DB_TYPE)mysql{ LIBS += -L${SQLITE_DIR}/lib -lmysqlcppconn}sqlite{ INCLUDEPATH...

2018-10-04 09:48:46 4583

原创 XBrowser增加Jslog日志对象接口

开发基于XBrower浏览器的web程序时,由于缺少调试工具,等手段。故增加Jslog对象。在js程序中可以直接使用。function popUp( measure,beHour,hours,title ){ var idx = MeasureMgr.getIndexByName(measure) if( idx<0 ){ alert("不存在测量量"+measure);...

2018-10-03 21:01:35 188

原创 C6748 TI NDK与StarterWare混用的问题

最近一直在调试网络通信的程序。NDK中会自动使用一些系统资源,比如定时器等,如果此时用了StarterWare模块中的例子程序,很可能会导致网络工作不正常。此时需要手动调整StarterWare中的程序,比如delay函数的实现。...

2018-04-08 23:25:55 506

翻译 Boost 15 进程间通信

1.介绍Boost.Interprocess库简化了使用通用的进程间通信和同步机制。并且提供这些机制的部件:* 共享内存* 内存映射文件* 信号量,互斥量,条件变量和可升级的互斥量类型,该类型可以放入共享内存和内存映射文件中* 命名版本的同步对象* 文件锁* 相对指针* 消息队列Boost.Interprocess还提供了更高级的进程间机制...

2016-07-15 09:41:09 7495 1

原创 应用通信协议的处理过程

通信规约应用非常广泛,灵活多变。但是编写一个好的规约处理程序往往不易。本文描述了规约的一般处理过程。

2016-03-24 15:14:24 2038

原创 Qt5中使用QTreeWidget实现树层次的勾选

本文档中记录了使用Qt5中的QTreeWidget实现分层勾选的功能。

2016-03-13 18:20:19 10695 4

原创 DSP 2812: 使用C++实现的SCI从动站程序框架

DSP2812的SCI的使用是非常灵活的,要很好的操作,以及编写一份可复用的SCI程序也不是很容易的事情。这篇文章,以SCI做为通讯响应方的从动站为应用场景,创建了一个使用中断收发的串口驱动程序。该程序使用简单,与应用程序并发异步执行,不影响业务流程。

2016-03-05 00:26:24 722

原创 DSP 2812: 使用C++实现的SCI主动站程序框架

DSP2812的SCI的使用是非常灵活的,要很好的操作,以及编写一份可复用的SCI程序也不是很容易的事情。这篇文章,以SCI做为通讯发起方的主动站的应用场景,创建了一个使用中断收发的串口驱动程序。该程序使用简单,与应用程序并发异步执行,不影响业务流程。

2016-03-04 22:54:01 1283

原创 DSP 2812: 使用C++封装SCI

本文实现了DSP2812的SCI模块的各种操作。

2016-03-03 22:02:31 1505

原创 DSP 2812: 使用C++封装定时器及应用举例

本文对DSP2812的定时器模块进行了封装,通过类的继承来分别特化Timer0,Timer1,Timer2.同时举例使用Timer中断来执行定时任务。

2016-03-03 21:34:26 786

原创 DSP 2812: 使用C++封装中断控制器PIE

本文中提供了对DSP2812的PIE模块的封装。

2016-03-03 21:10:31 1008

原创 对位操作的C++的简单封装

这里提供一个对位操作的类型。其在编码易读性,执行效率等方面都非常合理实用。

2016-03-03 13:20:50 1019 2

原创 关于在2812上使用C++代码的执行效率的查看

虽然Ti官方的资料以及2812编译器的说明资料中对C++的执行效率都有提及。我这里展示一下在2812上使用定时器类的某些语句的执行汇编与C++代码对比的一个截图。从汇编的语句看,编译器对C++支持的执行效率还是很高的。上面是停止定时器的函数调用,申明为内联函数,调用了一个位设置的模板函数。其对应的汇编如下:本人汇编不好,不太懂。应该是不超过4条指令吧。

2016-03-03 11:20:18 345

原创 DSP 2812: 使用C++封装GPIO

使用C++对DSP2812的GPIO模块进行封装。

2016-03-02 22:33:51 1156 2

原创 DSP 2812: 使用C++封装外设时钟控制

DSP 2812 外设时钟的管理模块

2016-03-02 22:03:50 773 1

原创 DSP 2812: 使用C++封装CPU级别的操作

DSP 2812 CPU中断的管理

2016-03-02 21:55:14 968

原创 DSP 2812: 使用C++封装系统时钟管理模块

本文实现了2812中的时钟驱动的封装管理。用户可以不用关心相关的寄存器操作。类的设计简单,使用灵活。

2016-03-02 21:38:31 675

原创 在Ti的DSP程序中使用C++编程

本文介绍了在嵌入式开发中使用C++的一些技巧,特别是在基于TI DSP的一些实例。

2016-03-01 10:06:19 10429 1

原创 小技巧之位操作的一种编程方式

一般地,我们要确认某个字节a的某位是否为1,byte ifbit1( byte a ){  // 第一位    return a&0x01;}byte ifbit4( byte a ){  // 第4位  return a&0x10;}而要确定的位是由变量p指定时,byte ifbit( byte a, int p ){    byte

2013-06-27 17:47:11 526

原创 DSP的Uart维护口程序开发

前言最近也是摸索着用CCS5.4以及SYSBIOS6来做程序。现将做的串口维护程序的考量做一次小结。使用基于28335的SCI来做串口维护的程序CUI,使用了C++。为了将来程序可以重用。将硬件操作的接口和CUI程序尽量松耦合。抽象出设备接口层,负责寄存器操作之类的硬件封装;抽象出数据缓冲队列,作为硬件收发中断的缓冲;抽象出CUI应用,直接对缓冲区操作,与用户进行交互。

2013-06-21 23:07:46 1176

原创 CCS5.4中xdc与device.h中的数据类型定义冲突

转到CCS5也没多久。在使用SYS/BIOS6时,需要包含28335灯设备的的寄存器头文件。但是编译时,像UInt16这类的数据类型定义在BIOS中已经有定义的。暂时找到了一种解决方法。将与硬件寄存器相关的操作封装到单独的源代码中,而ccs的程序不直接调用寄存器操作,而是调用封装的接口。虽然绕远了点,也是一种解决方法。

2013-06-18 09:32:03 819

原创 Makefile的简单应用

程序员的一个典型的特点就是,非常讨厌没有新意的重复性的工作。编写Makefile也是一样。虽然大家都愿意拷贝现成的Makefile文件,然后是修改一下源文件名和依赖的库名,就可以实现自动编译和连接了。但是,还是愿意将拷贝的这些相似的Makefile文件的内容合并到一个通用的Makefile中,然后是其他的Makefile包含这个makefile即可。这里记录一下有一些Makefile中的用法,可以

2013-06-16 18:54:03 567

原创 在嵌入式设备上构建基础应用框架

以前是在做电力终端设备的小公司,现在去了一家只做OEM的硬件厂家。离开了管理岗位,去小公司做起了开发。个人感觉,挺好。很轻松,可以安心搞技术,做一些实实在在的事情了。    由于在这家硬件单位,只有自己做应用程序的。接了几个项目,都是以最快的速度完成的,所以代码的可重用性比较差。就算是有类似功能的,也都是直接拷贝上一个项目中的部分代码后,修改一下,来实现新的项目的。还好,这些项目没有要

2013-06-15 14:37:22 632

原创 写在技术博文前

从业软件研发也有8个年头了, 从知识爆炸的年代开始, 自己就暗自庆幸, 出生在一个获取知识如此容易的年代. 如饥如渴, 孜孜不倦.到后来的,遇到问题就百度一下, 当然我好像更多是谷歌一下. 问题总是能解决. 当时还总是感叹, 还真有人会遇到一样的问题, 还发布到网上, 并且整理了这么多技术细节.在此, 也感谢这些甘愿奉献的人, 包括技术编写者和网站承载者.突然想

2013-01-25 15:37:02 240

构建嵌入式linux系统

英文版,为开源免费电子书 构建嵌入式linux系统的顶级书.

2013-01-22

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除