- 博客(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
491
原创 python3创建虚拟环境
开发程序的时候,总是希望有一个相对干净的环境来开发和执行程序。一方面可以非常清晰的看到第三方工具的依赖性,另外一方面,为了将来部署的准确性。这里为了开发cython程序,在debian12上使用了python的虚环境,删除和创建比较简单。pip的源使用清华源。
2024-06-09 18:22:14
310
原创 sqlalchemy关联使用两个sqlite数据库
使用场景是这样的:在使用sqlalchemy来实现数据库表管理的程序中,需要使用两个数据库中的表。在创建sqlite引擎时,需要使用使用事件监听,在建立连接后,attache另一个数据库。但是在另外一个数据库中建表时,需要通过schema参数来指定数据库名。这里使用普通的建表语句。
2022-11-17 16:55:26
579
1
原创 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
385
原创 搭建CxxTest单元测试框架
CxxTest简介CxxTest软件框架提供了一套代码框架和代码生成工具。测试人员需要使用C++头文件定义测试用例。在测试用例中,通过定义测试方法,来打包需要的测试项目。测试方法中可以调用开发人员编写的函数,类,变量,声明等,来实现对这些函数,类,变量,声明进行测试和验证。测试函数中需要使用CxxTest提供的断言宏,来测试比较结果。这些结果如果非预期,会被作为失败或者异常,被CxxT...
2020-02-15 15:18:02
813
原创 使用C++扩展Python2
使用C++扩展Python的时候主要实现:* 将C++中的函数引入到Python中去* 以及将C++中的类引入到Python中去同时还涉及到:* 返回值扩展类型* 参数检测* 异常处理* 软件程序编译以及发布大部分是模式化编程,套模本即可。#ifndef _DM_PYX_ACTION_HPP#define _DM_PYX_ACTION_HPP...
2019-05-16 17:10:52
473
原创 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
439
原创 历史数据任务配置文件hisdata.xml
++ 历史数据任务配置文件hisdata.xml+++ 配置项* frozen 冻结测量量 属性 enable 是否冻结 子项trigger可以配置多个触发器。* dump 数据转储 属性 enable 是否自动转储。如果自动转储,历史数据将从shadow表转存。 子项trigger可以配置多个触发器。* clear 数据清理 子项trigger可以配置多个触发器。...
2018-10-15 19:24:15
854
原创 扩展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
350
原创 Error CScada.scada.dm::CScada{内存分配失败boost::interprocess::bad_alloc}
如果scadashow --init之后执行scadashow --config报上面的错误,表明系统预置的内存大小不够,需要增加允许scada系统使用的内存。在配置文件cfg.xml中的scada.allocate配置不够。...
2018-10-09 10:24:27
528
原创 DM2016点表生成工具 - 使用手册
概述对于远程采集数据来说,需要处理的数据是因项目而不同的。但是针对常用的设备而言,该设备所具备的能力是固定的。把特殊设备所具备的能力作为经常引用的设备配置表。需要使用工具来对设备的组合进行管理。尤其对大规模监控系统,这样的工作更为繁琐。因此,编写了这样一个工具,用于自动生成不同设备的组合的监控系统信息。软件名称scada_gen_tool基于Qt4运行。有两个版本:windows版...
2018-10-08 22:23:02
1014
原创 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
4755
原创 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
219
原创 C6748 TI NDK与StarterWare混用的问题
最近一直在调试网络通信的程序。NDK中会自动使用一些系统资源,比如定时器等,如果此时用了StarterWare模块中的例子程序,很可能会导致网络工作不正常。此时需要手动调整StarterWare中的程序,比如delay函数的实现。...
2018-04-08 23:25:55
558
翻译 Boost 15 进程间通信
1.介绍Boost.Interprocess库简化了使用通用的进程间通信和同步机制。并且提供这些机制的部件:* 共享内存* 内存映射文件* 信号量,互斥量,条件变量和可升级的互斥量类型,该类型可以放入共享内存和内存映射文件中* 命名版本的同步对象* 文件锁* 相对指针* 消息队列Boost.Interprocess还提供了更高级的进程间机制...
2016-07-15 09:41:09
7846
原创 DSP 2812: 使用C++实现的SCI从动站程序框架
DSP2812的SCI的使用是非常灵活的,要很好的操作,以及编写一份可复用的SCI程序也不是很容易的事情。这篇文章,以SCI做为通讯响应方的从动站为应用场景,创建了一个使用中断收发的串口驱动程序。该程序使用简单,与应用程序并发异步执行,不影响业务流程。
2016-03-05 00:26:24
778
原创 DSP 2812: 使用C++实现的SCI主动站程序框架
DSP2812的SCI的使用是非常灵活的,要很好的操作,以及编写一份可复用的SCI程序也不是很容易的事情。这篇文章,以SCI做为通讯发起方的主动站的应用场景,创建了一个使用中断收发的串口驱动程序。该程序使用简单,与应用程序并发异步执行,不影响业务流程。
2016-03-04 22:54:01
1424
原创 DSP 2812: 使用C++封装定时器及应用举例
本文对DSP2812的定时器模块进行了封装,通过类的继承来分别特化Timer0,Timer1,Timer2.同时举例使用Timer中断来执行定时任务。
2016-03-03 21:34:26
853
原创 关于在2812上使用C++代码的执行效率的查看
虽然Ti官方的资料以及2812编译器的说明资料中对C++的执行效率都有提及。我这里展示一下在2812上使用定时器类的某些语句的执行汇编与C++代码对比的一个截图。从汇编的语句看,编译器对C++支持的执行效率还是很高的。上面是停止定时器的函数调用,申明为内联函数,调用了一个位设置的模板函数。其对应的汇编如下:本人汇编不好,不太懂。应该是不超过4条指令吧。
2016-03-03 11:20:18
375
原创 DSP 2812: 使用C++封装系统时钟管理模块
本文实现了2812中的时钟驱动的封装管理。用户可以不用关心相关的寄存器操作。类的设计简单,使用灵活。
2016-03-02 21:38:31
727
原创 小技巧之位操作的一种编程方式
一般地,我们要确认某个字节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
550
原创 DSP的Uart维护口程序开发
前言最近也是摸索着用CCS5.4以及SYSBIOS6来做程序。现将做的串口维护程序的考量做一次小结。使用基于28335的SCI来做串口维护的程序CUI,使用了C++。为了将来程序可以重用。将硬件操作的接口和CUI程序尽量松耦合。抽象出设备接口层,负责寄存器操作之类的硬件封装;抽象出数据缓冲队列,作为硬件收发中断的缓冲;抽象出CUI应用,直接对缓冲区操作,与用户进行交互。
2013-06-21 23:07:46
1222
原创 CCS5.4中xdc与device.h中的数据类型定义冲突
转到CCS5也没多久。在使用SYS/BIOS6时,需要包含28335灯设备的的寄存器头文件。但是编译时,像UInt16这类的数据类型定义在BIOS中已经有定义的。暂时找到了一种解决方法。将与硬件寄存器相关的操作封装到单独的源代码中,而ccs的程序不直接调用寄存器操作,而是调用封装的接口。虽然绕远了点,也是一种解决方法。
2013-06-18 09:32:03
883
原创 Makefile的简单应用
程序员的一个典型的特点就是,非常讨厌没有新意的重复性的工作。编写Makefile也是一样。虽然大家都愿意拷贝现成的Makefile文件,然后是修改一下源文件名和依赖的库名,就可以实现自动编译和连接了。但是,还是愿意将拷贝的这些相似的Makefile文件的内容合并到一个通用的Makefile中,然后是其他的Makefile包含这个makefile即可。这里记录一下有一些Makefile中的用法,可以
2013-06-16 18:54:03
601
原创 在嵌入式设备上构建基础应用框架
以前是在做电力终端设备的小公司,现在去了一家只做OEM的硬件厂家。离开了管理岗位,去小公司做起了开发。个人感觉,挺好。很轻松,可以安心搞技术,做一些实实在在的事情了。 由于在这家硬件单位,只有自己做应用程序的。接了几个项目,都是以最快的速度完成的,所以代码的可重用性比较差。就算是有类似功能的,也都是直接拷贝上一个项目中的部分代码后,修改一下,来实现新的项目的。还好,这些项目没有要
2013-06-15 14:37:22
663
原创 写在技术博文前
从业软件研发也有8个年头了, 从知识爆炸的年代开始, 自己就暗自庆幸, 出生在一个获取知识如此容易的年代. 如饥如渴, 孜孜不倦.到后来的,遇到问题就百度一下, 当然我好像更多是谷歌一下. 问题总是能解决. 当时还总是感叹, 还真有人会遇到一样的问题, 还发布到网上, 并且整理了这么多技术细节.在此, 也感谢这些甘愿奉献的人, 包括技术编写者和网站承载者.突然想
2013-01-25 15:37:02
262
FFMPEG麦克风编码错误
2023-02-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人