知识大全 Delphi实现远程串口的数据采集[2]

Posted

篇首语:宁可身骨苦,不叫面皮羞。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi实现远程串口的数据采集[2]相关的知识,希望对你有一定的参考价值。

Delphi实现远程串口的数据采集[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   . 使用MSComm控件进行串口编程  Microsoft Communication Control(MSComm)是Microsoft公司提供的Windows下串行通信编程的AcitiveX控件 该控件具有丰富的与串口通信密切相关的属性及事件 提供了一系列标准通信命令接口 可以用它创建全双工 事件驱动 高效实用的通信程序 MSComm控件通过串口传输和接收数据 为应用程序提供串行通信功能   MSComm的主要属性及事件   ( ) CommPort 设置或返回串行端口号 缺省值   ( ) Setting 设置或返回串口通信参数 格式为 波特率 奇偶校验位 数据位 停止位   ( ) PortOpen 打开或关闭串行端口   ( ) InBufferSize 设置或返回接收缓冲区的大小 缺省值为 字节   ( ) InBufferCount 返回接收缓冲区内等待读取的字节数 可通过设置该属性为 来清空接收缓冲区   ( ) RThreshold 该属性为一阀值 它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件   ( ) SThreshold 该属性为一阀值 它确定当发送缓冲区内的字节个数少于该值后就产生代码为ComEvSend的OnComm事件   ( ) InputLen 设置或返回接收缓冲区内用Input读入的字节数 设置该属性为 表示Input读取整个缓冲区的内容   ( ) Input 从接收缓冲区读取一串字符   ( ) InputMode 返回从Input中取回的数据类型 可以是ANSI码和二进制数据数组   ( ) OutBufferSize 设置或返回发送缓冲区的大小 缺省值为 字节   ( ) OutBufferCount 返回发送缓冲区内等待发送的字节数 可通过设置该属性为 来清空缓冲区   ( ) OutPut 向发送缓冲区传送一串字符   如果在通信过程中发生错误或事件 就会触发OnComm事件 并由CommEvent属性代码反映错误类型 在通信程序的设计中可根据该属性值来执行不同的操作 CommEvent属性值及其含义如下   ( ) ComEvSend 值为 发送缓冲区的内容少于SThreshold指定的值   ( ) ComEvReceive 值为 接收缓冲区内字符数达到RThreshold指定的值   ( ) ComEvFrame 值为 硬件检测到帧错误   ( ) ComEvRxOver 值为 接收缓冲区溢出   ( ) ComEvTxFull 值为 发送缓冲区溢出   ( ) ComEvRxParity 值为 奇偶校验错误   ( ) ComEvEOF 值为 接收数据中出现文件尾(ASCII码为 )字符   所以 MSComm控件主要提供下列两种处理通信的方式   ( ) 事件驱动通信方式 当串口发送或接收到数据时 可以利用MSComm控件OnComm事件捕获并处理这些通信事件 OnComm事件还可以检查和处理通信错误   ( ) 查询方式 在关键程序之后可以通过检查CommEvent属性来查询事件和错误    系统功能设计  本远程数据采集子系统就是利用MSComm控件 通过Moderm同远端的下位机进行通信 发送命令 获得下位机采集的实时数据 通信流程如下   当PC机检测到下位机摘机的信号 将控制命令写入MSComm的发送缓冲区 控制命令为定长的数据报 格式如下   其中 当命令代码不是向下位机要数据的命令的时候 起始时间和终止时间均为 下位机上传的数据报也为定长数据报 格式如下   数据报标志表明正在传输是数据 为 xFFFF 数据报序号说明当前传输的是第几个数据报 当序号校验码出错时 PC机停止接收数据 并向下位机发重传命令 此时控制命令的起始时间字段填入需要重传的数据报的序号 最后一个数据报将结束标志置为 xFFFF 检测线程检测到该标志时 认为数据接收完毕 向主线程发消息 通知主线程做进一步的处理   数据传输模式采用二进制数据流形式即MSComm的InputMode属性设置为ComInputModeBinary 收到数据之后使用如下程序进行转换 vDataBuffer: oleVariant;DataBuffer: variant;vDataBuffer := MSComm Input;DataBuffer := VarArrayCreate([ ] varByte);DataBuffer := vDataBuffer;  主线程向下位机发要数据命令的同时 生成检测线程 每收到 个字节 检测线程对收到的数据报的结束标志和数据报序号进行检验 发现数据报序号错误立即向主线程发错误消息 主线程停止从缓冲中取数据 向下位机发重传数据报的命令 检测线程发现数据报接收完毕 向主线程发消息 主线程结束检测线程 回收资源    结论  整个系统在远程心电医疗诊断软件上已经得到了应用 实际运行表明 该通信方式简单 可靠 稳定 具有比较高的效率和很好的差错控制功能 可供其他远程通信系统借鉴参考 cha138/Article/program/Delphi/201311/24927

相关参考

知识大全 delphi中,让程序只运行一次的方法[1]

  公司开发的软件需要对串口进行操作每次打开软件后程序自动去打开串口寻找连接到串口上的设备但是如果用户不知道打开了两次那么第二次打开的程序是不能正常使用的因为对串口的操作时独占的第一个程序独占了串口的

知识大全 Delphi中用ICMP探测远程主机是否存活

Delphi中用ICMP探测远程主机是否存活  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!网络通讯

知识大全 如何用Delphi6实现对计算机的远程控制

如何用Delphi6实现对计算机的远程控制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Win

知识大全 51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几

51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几?用串口的模式1,是10位异步通信方式。1起始位,8数据位,1停止位,没有奇偶校验位。这种模式就是:8-n-

知识大全 .NET 2.0远程传输数据集的优化方法

.NET2.0远程传输数据集的优化方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于当前维

知识大全 单片机串口通信的波特率有什么用

单片机串口通信的波特率有什么用两个串口之间通讯的速率,两个串口的波特率设置成一样才能互相发送和接收数据单片机串口通信的波特率如何计算教材上都有计算公式的,还可以用波特率计算软件来计算STC单片机下载入

知识大全 开发Delphi对象式数据管理功能(一)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(二)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(三)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(三)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(四)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(四)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快