用Delphi开发二进制方式的多线程串行通讯程序.docx

用Delphi开发二进制方式的多线程串行通讯程序.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用Delphi开发二进制方式的多线程串行通讯程序

文章编号: 1001—9944 (2001) 04—0058—03Ξ用 D e lph i 开发二进制方式的多线程串行通讯程序朱耀东1, 2 , 经亚枝1 , 张焕春1(1. 南京航空航天大学 自动化学院, 南京 210016; 2. 盐城工学院 电气工程系, 江苏盐城224003)摘 要: 本文介绍了在 D e lp h i 环境下如何采用控件方法实现上位机与单片机之间的二进制方式的多线程串行通讯。 文中给出了一个编程示例, 具体说明了这种软件的使用方法。关键词: 串行通讯; 多线程; W indow s; D e lp h i中图分类号: T P 311. 1文献标识码: B1 引言某型大坝自动监测系统的研制要求主机能对 多至 255 个测控模块进行管理并能对每个测控模块进行程序的远程升级, 即测控模块中的程序运行代码可以通过网络下载。对此, 我们研制了一套 基于 R S2485 串行总线的测控网络, 测控模块采 用基于A T 89C 51 的单片机系统, 并采用D e lp h i5.0 编制了上位机通讯软件。 由于上位机与单片机的之间的通讯涉及到控制字符和单片机二进制程序代码的传输, 而控制字符与程序代码有可能是 A SC II 值大于 80H 的 字符, 因此常用的基于文本的传输方式已经不适用, 必须编写二进制方式的串行通讯程序。 同时,为了提高效率, 使在程序下载时能动态地显示下 载 进 度, 在 软 件 中 引 入 D e lp h i 的 多 线 程 工 作 模 型。 用 D e lp h i 编制基于W indow s 平台下的串行 通信程序一般有两种方法: 一种方法是通过调用 W indow s 的应用程序接口 A P I 函数的方法来实 现; 另一种方法是使用现成的串行通信控件的方 法。A P I 函数方法, 使用复杂繁琐, 但灵活, 功能 强; 控件方法编程简单, 可靠, 用户无须深入串行 口的编程, 只需设置几个参数就可以按查询或中 断方式实现串行通讯, 使通讯编程大为简化, 对于 一般的应用, 用控件的方法就足够了。本文介绍如 何用 D e lp h i 并使用M SCOM M 32. O CX 控件编制 二进制方式的多线程串行通讯程序。M SCOM M 32. O CX 控 件 是 微 软 公 司 在 V B和 V C 开发软件中随带的串行通信控件, 该控件 屏蔽了通信过程中的底层操作。 程序员应用时只需设置和监视该控件的属性和事件即可完成对串行 口 的 初 始 化 和 数 据 的 输 入 和 输 出 工 作, 当 在 D e lp h i5. 0 中安装该控件后, D e lp h i 自动将它重定 义为 TM SComm 类。 它的一些重要属性如下:Comm po r t :Se t t ing s :设置并返回通讯端口号以字符串的形式设置并返回波特率、奇偶校验、数据位和停止位Inp u t : 从接收缓冲区返回和删除字符O u tp u t :Po r tO p en :向传输缓冲区写一个字符串设置并返回通讯端口的状态有关该控件的详细说明, 可从相应的帮助文档中得到, 在此不再赘述。3 二进制方式通讯编程有关上位机与单片机通讯编程的文章不少, 但大都局限于以文本方式发送与接收数据。 这样 的通讯方式虽然可以满足特定需要, 但是缺乏通用性, 当待传输数据包含非文本字符, 如控制字符、N u ll 及 一 些 包 含 A SC II 码 大 于 80H 的 字 符 时, 则必须进行二进制方式的串行通讯编程。 在 TM SComm 类中有一项 Inp u tM o de 属性, 当设置 Inp u tM o de = 0 时, 数据是以文本方式取回, 即从 数 据 缓 冲 区 取 回 的 是 字 符 串; 当 Inp u tM o de = 1 时, 数据是以二进制方式取回, 即取回的是二进制 字节数组。 而发送二进制数据则需要依照 TM 22 串行通信控件简介收稿日期: 2001201215 (磁盘稿)ΞSComm 类的规则通过动态数组和变体 (V a r ian t)的方法实现。 TM SComm 类规定它的 O u tp u t 属 性可以传输文本数据或二进制数据。 当发送二进制数据时, 必须传递一个包含字节数组的变体到O u tp u t 属性。 因此在发送二进制数时, 必须定义 一个字节类型的动态数组和一个变体, 将待发送的二进制数放入动态数组, 再将该动态数组赋给 变体, 由该包含了字节数组的变体赋给串口控件的 o u tp u t 属性, 完成二进制数据的发送。接调用W indow s A P I 的 C rea teT h read 函数或直接采

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档