浅谈多线程串口DLL在称重软件中的应用
在汽车衡称重管理软件中, 经常要读写串口。由于不同厂家的仪表, 通讯协议往往不同, 因此在具体应用时有诸多不便。本文介绍了使用 C++builder编写 DLL, 封装称重仪表的通讯协议并给出主要代码。这种方法符合 OIMLD- SW 中, 将软件部件之间隔离的标准。
在 Win16 中, 可以利用 OpenComm、CloseComm和 WriteComm 等函数打开、关闭和读写串口。但在Win32 中, 串口和其他通信设备均被作为文件处理,串口的打开、关闭和读写等操作所用的 API 函数与操作文件的函数相同。可通过 CreateFile 函数打开串口, 通过 CloseFile 函数关闭串口, 通过 Comm-Prop、DCB 结 构 、GetCommProperties、SetCommProp-erties、GetCommState 及 SetCommState 等函数设置串口状态, 通过函数 ReadFile 和 WritFile 读写串口。
采用 C++builder 进行串口编程, 可以很方便的编译 DLL。而且可以利用它提供的线程类, 使 DLL使用多线程, 减少资源的占用。本文将以柯力公司的 D2002C/E 和上海耀华的 XK3190A9 表为例, 介绍编写多线程串口 DLL 的过程。

为了减少读串口函数占用系统资源问题, 采用多线程来解决, TformThread 为自定义线程类, 它继承父类 TThread



1.打开串口, 并设置串口相关参数。


2.读取重量函数

3.当应用程序中不再使用时, 应将串口设备关闭, 同时关闭线程, 停止取数。
![]()

将工程名称命名为 D2002E, 编译后将在当前目录下生成存 D2002E.dll 文件。我们在编写称重软件时, 可以调用这个函数库。
在 VB 中调用如下:


在易语言中调用如下:

上述程序修改后, 也可工作在指令模式下, 如上海耀华 XK3190A9 系列仪表, 有两种数据传送方式:一种是连续传送( tF=0) , 一种是指令传送( tF=1) 。此时需要在 DLL 程序中处理串口写函数 WriteFile( hCom, &order, lenght, &k, NULL) , 第二个参数为仪表指令, 第三个参数为指令长度。发送完指令后, 立即读取结果。
而且, 当使用 RS485- 232 转换器, 将电脑和数字传感器连接起来时, 可以通过扩充上述程序, 将标定、调角差等过程封装成 DLL 给客户调用。其目的是方便用户进行软件功能的二次开发。
参考文献:
[1] C++builder6.0 程序设计开发[M].电子工业出版社.
[2] D2002E/XK3190A9 使用手册.
本文作者:喻 刚
( 作者通讯地址: 浙江省宁波市北区长兴路 199 号邮 政 编 码: 315033收 稿 日 期: 2007- 09- 17)
相关文章
- 2024-02-26实现同一分析周期内两流路并行分析的技术改造
- 2024-07-31铁路客车提速轴承外圈非基准端面挡边平行度测量仪的研制
- 2023-03-02智能化色谱分析软件的研究与应用探讨
- 2024-07-09多CCD拼接相机中图像传感器不均匀性校正
- 2022-04-27监控摄像机日夜及彩色黑白转换两用简析



请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。