精通delphimscomm串口通信主要属性及事

DelphiMSComm串口通信Delphi2009-08-2811:07:51阅读214评论0字号:大中小用Delphi开发串口通信软件一般有两种方法:一是利用Windows的通信API函数,另一种是采用Microsoft的MSComm控件。利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更强大,应用面更广泛,更适合于编写较为复杂的低层次通信程序。而利用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)字符。二、程序样例在Delphi3.0中无法使用MSComm控件,笔者使用的是Delphi5.0。MSComm控件是VB中的OCX控件,首先需要将其添加到Delphi中,选择菜单“Component”→“ImportActiveXControl”,在“ImportActiveX”页内选择“MicrosoftCommControl”,点击“Install”安装安装后在“ActiveX”组件板中出现MSComm图标,即可被使用。有一点要注意,在ObjectInspector中MSComm控件的Input和Output属性是不可见的,但它们仍然存在,这两个属性的类型是OleVariant(Ole万能变量)。下面是一接收程序的样例(主要部分),大家可根据实际需要进行完善。在Form中放置一Memo控件用于显示接收的数据,Combobox1选择通信参数(Setting属性值),Combobox2选择串口(CommPort属性值),按Button1开始接收数据,按Button2停止接收。procedureTForm1.FormCreate(Sender:TObject);beginMscomm1.InBufferCount:=0;//清空接收缓冲区Mscomm1.InputLen:=0;//Input读取整个缓冲区内容Mscomm1.RThreshold:=1;//每次接收到字符即产生OnComm事件end;procedureTForm1.Button1Click(Sender:TObject);beginMscomm1.Settings:=ComboBox1.Text;ifComboBox2.Text='com1'then//假设只考虑com1和com2两种情况Mscomm1.CommPort:=1elseMscomm1.CommPort:=2;Mscomm1.PortOpen:=true;//打开串口Mscomm1.DTREnable:=true;//数据终端准备好Mscomm1.RTSEnable:=true;//请求发送end;procedureTForm1.Button2Click(Sender:TObject);beginMscomm1.PortOpen:=false;//关闭串口Mscomm1.DTREnable:=false;Mscomm1.RTSEnable:=false;end;procedureTForm1.MSComm1Comm(Sender:TObject);varrecstr:Olevariant;beginifMscomm1.CommEvent=2thenbeginrecstr:=Mscomm1....

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?