`
java-mans
  • 浏览: 11456279 次
文章分类
社区版块
存档分类
最新评论

Delphi MSComm 实时串口通讯

 
阅读更多
MSComm控件具有丰富的与串口通信密切相关的属性,提供了对串口进行的多种操作,进而使串行通信变得十分简便。MSComm的控件属性较多,常用的属性如下:
1).CommPort:设置或返回串行端口号,缺省为1。
2).Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:=9600,n,8,1
3).PortOpen:打开或关闭串行端口,格式为:MSComm1.PortOpen:={True|False}
4).InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
5).InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。
6).RThreshold:该属性为一阈值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。
7).SThreshold:该属性为一阈值,它确定当发送缓冲区内的字节个数少于该值后就产生代码为ComEvSend的OnComm事件。
8).InputLen:设置或返回接收缓冲区内用Input读入的字节数,设置该属性为0表示Input读取整个缓冲区的内容。
9).Input:从接收缓冲区读取一串字符。
10).OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。
11).OutBufferCount:返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空缓冲区。  
12).OutPut:向发送缓冲区传送一串字符。
在通信过程中发生的错误或事件会引发OnComm事件,并由CommEvent属性值反映错误类型,程序根据该属性值来执行不同的操作。CommEvent属性值及其含义如下:
1).ComEvSend:值为1,发送缓冲区的内容少于SThreshold指定的值。
2).ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold指定的值。
3).ComEvFrame:值为1004,硬件检测到帧错误。
4).ComEvRxOver:值为1008,接收缓冲区溢出。
5).ComEvTxFull:值为1010,发送缓冲区溢出。
6).ComEvRxParity:值为1009,奇偶校验错误。
7).ComEvEOF:值为7,接收数据中出现文件尾(ASCII码为26)字符。
4.应用实例
下面通过一个实例介绍Delphi利用MSComm通信控件,开发PC机通过串口对某试验厂路面荷载进行实时数据采集的编程技术。给出的程序代码具有通用性,并有详细的注释,可以直接或稍加改动就可用于其它数据采集或者实时控制程序中。
该项目上位机采用Delphi编写,数据采集仪采用研华ADAM5510作为下位机采集实时压力数据,采用AscII方式传送数据,数据传输速率为9600bps,1位开始位,8位数据位,1位停止位,无奇偶校验位。数据通信的具体格式为:。
程序用到的全局变量为:
ReceiveStr :String; //接受Ascii码字符数据字符串
F1,F2,F3,F4,Fz,Fa:Double; //四路压力值数据,总压力值,平均压力值
程序中绘制的压力曲线采用TChart组件,变量定义为:
FChart: TChart;
1).串口初始化
with MSComm do
begin
CommPort:=1; //使用Com1
Settings:=9600,n,8,1; //设置通信口参数
InputLen:=1; //设置Input一次从接受缓冲区读取字节数为1
InBufferCount:=0; //清除接受缓冲区
OutBufferCount:=0; //清除发送缓冲区
InBufferSize:=50; //设置接受缓冲区为50字节
OutBufferSize:=2; //设置发送缓冲区为2字节
RThreshold:=1; //设置接受一个字节产生OnComm事件
InputMode:=ComInputModeText; // 设置接受数据模式为二进制方式
If (not PortOpen )then //判断通信口是否打开
PortOpen:=True
else
ShowMessage(串口已经打开!);
end;
2).数据接收与处理
为了达到实时数据采集的目的,实时数据采集处理程序采用MSComm的事件驱动方式。
procedure TForm1.MSCommComm(Sender: TObject);
var
buffer :Olevariant;
sTemp:string;
cNow :Char;
tmpX:Double;
begin
if MSComm.CommEvent = comEvReceive then //接受事件
begin
buffer:=MSComm.Input; //读取接受到的数据
sTemp:=buffer;
cNow:=sTemp[1];
if((cLast=Chr(13))and(cNow=Chr(10)))then
begin
sF1:=Trim(sF1);
dF1:=StrToFloat(sF1);
with SeriesDepth do //利用TChart绘制深度曲线
begin
tmpX:=XValues[1]-XValues[0];
Delete(0);
AddXY( XValues.Last+tmpX,dF1,,clGed);
end;
sF1:=;
end;
if((cLast<>Chr(13))and(cNow<>Chr(10)))then
begin
sF1:=sF1+cNow;
end;
cLast:=cNow;
end;
end;
3).串口关闭
If (MSComm.PortOpen) then
MSComm.PortOpen:=False;
分享到:
评论

相关推荐

    DELPHI+MSComm串口通讯实例

    DELPHI+MSComm串口通讯实,网上能找到的关于DELPHI+MSCOMM的串口通讯实例不是很多,而且大部分在onComm那块都不能正常应用。所以这个实例做了些改进,希望对其它人有所帮助。

    delphi源码 mscomm组件实现串口通讯

    delphi开发,利用mscomm组件实现串口通讯,经调试可用,欢迎大家提出指导性的意见和建议~

    delphi MSCOMM 串口通讯

    dephi 串口通讯开发组件,压缩包有安装说明,适合任何串口通讯取数,称重仪等硬件必须用串口线连接。

    Delphi MSComm控件简单的串口助手

    我写的使用Delphi7、MSComm控件写的简单串口助手,提供一个使用MSComm通讯的实例,分享给大家,代码是已经调试通过了的。

    delphi Mscomm控件注册

    delphi Mscomm控件注册 VB中的串口通讯控件 MSCOMM32.ocx

    delphi编写的Mscomm程序

    使用Mscomm控件编写的delphi串口通讯程序,简洁易用,非常适合初学者学习使用。

    MSComm-suer.rar_delphi mscomm_event_mscomm_vb MSComm_vb 串口收发

    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下...

    delphi7下实现串口通讯控件spcomm

    好资源啊,已证实delphi7下可用,我xp3系统,刚试过忍不住马上...压缩包中有spcomm.pas、spcomm_d7.dak文件,用于delphi7完成串口通讯。包内有安装方法,文档中还有一个简单例子!文档中还有介绍关于mscomm的使用方法。

    利用delphi环境开发的串口通讯

    利用delphi环境开发的串口通讯,已经通过调试,运行成功

    delphi 串口通讯

    delphi 开发环境的串口组件,附带源码案例,安装方式可以参照其他组件安装方法。 与MSCOMM组件类似,看个人需要。

    MSComm控件使用详解

    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下...

    通信控件MSComm使用详解

    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下...

    MSCOMM32.rar

    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下...

    托利多Mscomm地磅调试

    delphi程序源码,托利多Mscomm地磅调试

    MSComm控件详解

    本文详细介绍了MSComm控件在串口编程中使用: MSComm 控件通过串行端口传输和接收数据,为...MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。

    串口传送文件

    用D7使用MsComm接口写的一个串口通讯的测试例子,用来传送文件,包括发送端和接收端的程序,为了测试稳定性,这个例子里还包含了一个自动产生文件的程序,用来测试通讯的稳定性。 使用时必须是两台电脑用串口线连接...

    MSComm控件的手记

    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下...

    MSCOMM.rar

    VS2010 2015 添加串口 亲测有效MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中...

    com口控件安装.rar

    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下...

Global site tag (gtag.js) - Google Analytics