- 博客(16)
- 资源 (10)
- 收藏
- 关注
原创 C语言变长嵌套数组常量初始化定义技巧
有时候,我们需要在代码里配置一些常量结构,比如一个固定的动作流程ActionFlow:包含N(即flow_num)个动作列表(ActionArray),每个动作列表包含M(即act_num)个可并行执行的动作ID。为了让定义更简洁,尽可能的只提供{1,2},{3,4,5,6,7}这些我们关心的业务数据,我们可以使用C99中引入的。直观看,我们希望这样配置,一目了然,但这不符合C/C++的语法规则。(compound literals,对应C++中的。符合规则的语法大概是这样的,看起来显得有些冗长。
2025-01-16 22:51:09
421
原创 一个简单通用的电机任务编排器 motormission
在 state_machine 目录下复制 demo_action 子目录,粘贴在同一级目录(state_machine)下,新目录命名为你想要的名字(符合C语言变量命名规则即可),例如"example",并将该目录(state_machine/example)下的 demo_action.json 重命名为 "example.json"。按照你的设计,在example.json中定义任务。
2024-12-29 20:07:32
551
原创 转盘控制算法
一个转盘,上面有N个孔位,在转盘外部有若干个操作组件,每个操作组件都针对其安装位置的孔位进行操作。例如以下是一个有12个孔位的转盘,其11号孔位上方有一个操作组件Op-1,5号孔位上方有一个操作组件Op-2。操作组件不可移动,操作组件在转盘转动时也不可对孔位进行操作。当pos = 11(即Op-1),current = 3时,HOLE(11) = (11+12-3)%12 = 8。当pos = 5(即Op-2),current = 3时,HOLE(5) = (5+12-3)%12 = 2。
2024-12-14 19:28:12
225
原创 用面向对象的思想编写实时嵌入式C程序
本文主要介绍如何使用面向对象的思想,用C构造一个模块化的程序。这个程序主要包括(1)基础模块的封装,包括通讯协议、传感器、步进电机等;(2)任务状态机的设计,并以配置数据驱动的方式实现业务流程。(3)可视化的流程配置工具,以及配套的调试平台搭建。最终,在嵌入式系统上运行的程序由C编写,开发者通过json定义具体的业务流程之后,由一个Python程序自动生成C语言的配置数据。// 未完待续....
2024-05-14 22:29:21
319
1
原创 多重循环转单循环
multiloop([4,3,2])内部通过计算4*3*2 = 24来得到单重循环的次数。然后通过cnt数组推算当前的单重循环迭代,对应的是多重循环中i1/i2/i3 是那种组合。实际应用中,可i1/i2/i3可能是不同属性的下标。对于不确定循环的深度时,可以使用单重循环达到相同的效果,循环内部仍可唯一定位到是多重循环下的哪个迭代。比如多重循环,从内向外分别是4、3、2重循环,一般是通过3层for循环即可。multiloop([4,3,2]),即是从内向外分别4重、3重、2重循环。
2024-03-08 19:14:34
618
1
原创 C/C++结构体序列化配置模板化
用C/C++写后台服务程序的工程师也许经常会遇到这样的问题:总有一些重要的数据是通过字符串的方式输出,比如jsonp、xml、pvlog等等。比如日志格式,往往都是通过snprintf/std::cout的接口,将格式化的信息输出到文件或终端。 这样做确实方便,但随着业务日渐复杂,又很容易出问题。我们能否将日志格式做成可配置的,但对性能影响又很小?我将这个问题转换为:能否让程序员
2014-05-09 23:39:59
11585
原创 多备份数据更新管理器模板设计(C++ Template)
在网络服务等需要提供不间断服务的程序中,程序的运行时升级通常都是一项常规任务,例如: 1)运行时修改一些参数配置; 2)运行时修改一个算法模块(动态库);为了在执行这些任务时,程序不停(仍使用旧配置或旧模块运行),常见的解决方案包括: 1)增加冗余的配置项或模块句柄的存储空间(所有这些数据打包成一个结构体),程序运行时使用其中的一份;当需要更新时,在更新的过程中将
2013-07-27 12:56:53
719
原创 Bind运维接口封装解决方案
解决方案如图。这里的关键技巧在于使用127.x.x.x段回路IP作为VIEW的选择条件,因此程序部署上需要dig、nsupdate、rndc等与bind在一台机器上。另外,另本人费解的是:Bind作为一个历史悠久(超过20年)的DNS系统解决方案,其运维竟然需要动用至少5、6种工具,甚至有些任务需要手动修改配置文件?!!为什么至今仍未开发一个类似“SQL命令操作数据库”一样,通过一个命令行
2013-07-26 16:52:14
752
原创 小算法:从N个对象中随机选择M个
<br />小算法:从N个对象中随机选择M个<br /> <br />近日工作中遇到一个问题:在游戏中要求从50道题中随机选9道题出来给玩家。随即进行了一些思考,并将次过程整理成文记录于此。<br /> <br />从N个对象中随机选择M个作为输出是一个很常见的问题,现有的随机数生成器一般都只产生1个随机整数,因此解决这个问题的时候我们一开始可能会考虑这样解决问题:<br />#include <stdlib.h>template<class T>// 输入候选对象数组的头指针和元素个数,以及输出对
2011-01-02 15:54:00
2870
1
原创 自制XE2100数据导出Excel的小工具
这不是一项多么光荣的事情,毕竟我们以一种未经许可的方式获取了别人数据,尽管我们认为这些数据的所有权是我们的。但国人从外国人那里学习新的技术,又经常不得不采用各种方法获取先进国家生产的先进仪器的各种数据,从而更快速、更深刻的了解我们的差距。XE2100是日本Sysmex公司生产的一款五分类血液细胞分析仪,该产品不论从数据的准确性,还是性能的稳定性,抑或市场占有率来看都是业内公认的近十年来内该领域内的No.1。为了方便数据对比,将XE2100的数据读取出来进行分析研究,做成了这个小工具。将XE2100启动起来(
2010-06-09 01:35:00
1757
3
原创 Federation Server(ODBC/MSSQL wrappers) running under Windows Authentication
Federation Server(ODBC/MSSQL wrappers) running under Windows Authentication Windows Authentication Windows NT 4.0 domains will use NTLM to perform authentication. And Windows doma
2010-01-30 23:13:00
1097
原创 使用网页应用程序(HTA)开发简单串口控制软件
利用PC机,通过串口协议控制单片机或其他嵌入式系统是工业上广泛使用的技术。相信很多人都没用网页开发过串口应用程序,近期我尝试使用HTML+JavaScript+ActiveX模式开发了一个简单的串口控制应用程序。 示例应用程序,点击这里进入下载页面。(可看到完整的网页应用程序代码,运行之前需要注册控件,不过我只能“口头”保证没有病毒。) 关于“网页应用程序(HTA)”的
2010-01-22 23:57:00
10295
原创 一种基于WOL协议跨Internet远程唤醒的解决方案
注:本文作于2007年底。1 引言WOL(Wake-On-LAN)是一种用于远程唤醒局域网内主机的一种解决方案。但对于跨网络的远程唤醒功能由于网络中路由器的限制,这种解决方案只能在主控机和被控机位于同一广播域的情况下使用。本文提出了一种廉价、低耗且实用的WOL-Proxy的设计方案,利用单片机技术,实现了基于WOL的跨网络远程唤醒主机的功能。2 工作原理可被远程唤醒
2010-01-20 22:03:00
13438
原创 Let's say "Hello World!"
本程序运行结果可能因机器字节顺序(大端法、小端法)的不同而不同。在Intel P4处理器、Windows操作系统上编译、运行结果如下: > g++ -o HelloWorld HelloWorld.cpp> HelloWorld C++ : Hello World! char*: Hello World! int : Hello World! float : He
2008-03-22 15:41:00
1131
原创 CDHtmlDialog 与 网页交互技巧
CDHtmlDialog可以方便的将网页嵌入对话框,使得在程序设计中人机界面(DHTML网页)与控制逻辑(CDialog)可以很好的分离,下面是一些实用技术与技巧。1.将数据验证任务完全交给JavaScript,Dialog只做有意义的事。 input type="button" id="button1" onclick="if(validate()); window.event.ca
2008-03-22 01:05:00
17656
8
GE监护仪数据接口说明手册
2024-04-24
飞利浦监护仪数据接口编程手册
2024-04-24
Edwards监护仪通讯协议文档
2024-04-24
多备份数据更新管理器模板设计(C++ Template)
2013-07-27
PC游戏编程(王小春)【高清PDF+源代码】
2013-04-30
Sysmex Xe2100 数据读取软件
2010-06-09
使用网页应用程序(HTA)开发简单串口控制软件
2010-01-23
简明Python教程.chm [Swaroop, C. H. 著,沈洁元 译,中文1.20版]
2009-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人