资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

请问DELPHI中有关MSCOMM的用法!!!急/急

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

我想有DELPHI写一个有关串口通信的程序,想使用MSCOMM控件,在添加了控件以后想在它的ONCOMM添加低层控制事件,但我双击MSCOMM控件时却是弹出属性面板,怎样也弹不出有关MSCOMM的代码部分,请教高手如何能好像双击其它控件一样弹出有关MSCOMM的代码部分??万分感谢!!

网友回答:

发表者:feitian2004

用DELPHI开发串口通信软件    
    用Delphi开发串口通信软件一般有两种方法:一是利用Windows的通信API函数,另一种是采用Microsoft的MSComm控件。利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是实现的功能强大,应用面广泛,适合于编写较为复杂的低层次通信程序。而利用MSComm控件则相对较简单,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作。  
   
      
   
    一、MSComm控件的主要属性及事件  
   
      
   
    CommPort:设置或返回串行端口号,缺省值1。  
   
      
   
    Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:=′9600,n,8,1′  
   
      
   
    PortOpen:打开或关闭串行端口,格式为:MSComm1.PortOpen:={True|False}  
   
      
   
    InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。  
   
      
   
    InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。  
   
      
   
    RThreshold:该属性为一阀值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。  
   
      
   
    SThreshold:该属性为一阀值,它确定当发送缓冲区内的字节个数少于该值后就产生代码为ComEvSend的OnComm事件。  
   
      
   
    InputLen:设置或返回接收缓冲区内用Input读入的字节数,设置该属性为0表示Input读取整个缓冲区的内容。  
   
      
   
    Input:从接收缓冲区读取一串字符。  
   
      
   
    OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。  
   
      
   
    OutBufferCount:返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空缓冲区。  
   
      
   
    OutPut:向发送缓冲区传送一串字符。  
   
      
   
    如果在通信过程中发生错误或事件,就会触发OnComm事件,并由CommEvent属性代码反映错误类型,在通信程序的设计中可根据该属性值来执行不同的操作。CommEvent属性值及其含义如下:  
   
    ComEvSend:值为1,发送缓冲区的内容少于SThreshold指定的值。  
   
    ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold指定的值。  
   
    ComEvFrame:值为1004,硬件检测到帧错误。  
   
    ComEvRxOver:值为1008,接收缓冲区溢出。  
   
    ComEvTxFull:值为1010,发送缓冲区溢出。  
   
    ComEvRxParity:值为1009,奇偶校验错误。  
   
    ComEvEOF:值为7,接收数据中出现文件尾字符。  
   
      
   
    二、程序样例  
   
      
   
    在Delphi3.0中无法使用MSComm控件,笔者使用的是Delphi5.0。MSComm控件是VB中的OCX控件,首先需要将其添加到Delphi中,选择菜单“Component”→“Import   ActiveX   Control”,在“Import   ActiveX”页内选择“Microsoft   Comm   Control”,点击“Install”安装,安装后在“ActiveX”组件板中出现MSComm图标,即可被使用。有一点要注意,在Object   Inspector中MSComm控件的Input和Output属性是不可见的,但它们仍然存在,这两个属性的类型是OleVariant。  
   
      
   
    下面是一接收程序的样例,大家可根据实际需要进行完善。  
   
    在Form中放置一Memo控件用于显示接收的数据,Combobox1选择通信参数,Combobox2选择串口,按Button1开始接收数据,按Button2停止接收。  
   
    procedure   TForm1.FormCreate(Sender:   TObject);  
   
    begin  
   
    Mscomm1.InBufferCount   :=0;   //   清空接收缓冲区  
   
    Mscomm1.InputLen   :=0;   //   Input读取整个缓冲区内容  
   
    Mscomm1.RThreshold   :=1;   //   每次接收到字符即产生OnComm事件  
   
    end;  
   
    procedure   TForm1.Button1Click(Sender:   TObject);  
   
    begin  
   
    Mscomm1.Settings   :=ComboBox1.Text;  
   
    if   ComboBox2.Text   =′com1′   then   //   假设只考虑COM1和COM2两种情况  
   
    Mscomm1.CommPort   :=1  
   
    else  
   
    Mscomm1.CommPort   :=2;  
   
    Mscomm1.PortOpen   :=true;   //   打开串口  
   
    Mscomm1.DTREnable   :=true;   //   数据终端准备好  
   
    Mscomm1.RTSEnable   :=true;   //   请求发送  
   
    end;  
   
    procedure   TForm1.Button2Click(Sender:   TObject);  
   
    begin  
   
    Mscomm1.PortOpen   :=false;   //   关闭串口  
   
       Mscomm1.DTREnable   :=false;  
   
    Mscomm1.RTSEnable   :=false;  
   
    end;  
   
    procedure   TForm1.MSComm1Comm(Sender:   TObject);  
   
    var  
   
    recstr:Olevariant;  
   
    begin  
   
     if   Mscomm1.CommEvent   =   2   then  
   
    begin  
   
    recstr   :=   Mscomm1.Input   ;  
   
    Memo1.text   :=   Memo1.Text   +   recstr;  
   
    end;  
   
     
 


 

 
热门推荐笔记本: 宏碁笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved