虚拟电子秤之Atl实现02
来源:互联网 发布:用记事本写c语言 编辑:程序博客网 时间:2024/05/17 04:19
这几天,一直在看OLE和ATL书,公司要上一个工业新项目,时间不是很紧,我准备用Flash连接C++解决。话说现在的Flash不比当年,大致看了一下AS3的语法,就是Java翻版,连FB4编译器也是eclipse改的。记得好像以前的Flash中可以嵌入COM组件,现在应该也可以吧,但是这个可能性坚定了我搞定ATL的决心。于是还是这个电子秤项目先入手。
电子秤是大众化的叫法,其实是由2个部分组成的,称重传感器和表头。称重传感器通过电桥将压力转换成mV信号,表头解析mV信号,将读数显示或传递给用户,虚拟电子秤模拟的是表头工作。
现在市场上带串口的电子秤表头主要有2中工作方式:
主动模式,表头按照用户设定的频率(比如一秒20次)将称重读数通过串口发送出去,它只管发送,不管用户是否收到。
被动模式,表头等待用户的指令(通过串口线),随后做出响应。用户可能要求读数,表头就将读数发送出去;用户也可能要求清零,表头照做,随后通知用户做好了。
虚拟电子秤有如下接口:
表头对象:CScaleXXX
IScaleSet 相当于操作面板,用于设置参数,min,max范围,波特率,当前重量,工作开关
IScaleRun 内部使用,被内部服务线程使用,用于解析传入的字符串,分析用户需求,将当前重量转换成字符串的形式,各个品牌的表头应该有一套独立的接口实现
IScaleThreadPort用于管理线程的生死,线程调用此接口回传IScaleThreadControl
自动服务线程对象:相当于表头里的发动机,用以监听端口,收发字符串,该线程由IScaleSet::Run()方法创建
IScaleThreadControl:类似于sink,用来接收表头对象传来的停机信号
昨天创建了表头对象,并且使用CComGITPtr和IGlobalInterfaceTable居然死机,后来发现是Run()锁定,GIT可能也要调用QueryInterface,并且没有使用FTM
今天换了IStream做Marshal居然好像创建了2个对象,被传递对象可以被还原成IScaleSet,但是无法通过它访问到IScaleRun,并且IScaleSet上调用的函数无法在主线程得到反映,而主线程中是可以做到的
继续建造中
- 虚拟电子秤之Atl实现02
- 虚拟电子秤之Atl实现01
- ATL Tutorial 之 Polygon 实现
- 虚拟内窥镜之CUDA实现
- 电子秤程式
- 电子秤显示
- ATL 实现IObjectSafety接口
- ATL 实现IObjectSafety 接口
- ATL 实现COM
- ATL入门之配置ATL环境
- ATL容器之map
- ATL之thunk技术
- 实现虚拟服务器篇之Debian+Apache,
- 在ATL中实现窗口
- ATL窗口继承实现机制
- 在ATL中实现窗口
- ATL窗口实现的学习
- 在ATL中实现窗口
- 静下心来写算法(KMP算法)
- 【菜鸟C++学习笔记】24. 常见的引用注意问题
- 双线程实现迷宫破解程序框架
- 黑马程序员 关于包装类的自动封箱与拆箱操作需要注意的地方
- 笔试题2:C/C++ 笔试、面试题目大汇总
- 虚拟电子秤之Atl实现02
- 程序员如何使用google搜索
- 常用算法经典代码(C++版)
- 解决安装vmware以后,系统服务增多,系统变慢的问题。
- 美团笔试
- 上电瞬间电容相当于短路
- Oracle中存储过程和函数的区别
- java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
- 51 数码管静态显示 [李园7舍_404]