有谁能够提供串口学习实例,帮助我学习了解串口编程,小弟在此谢过了!

解决方案 »

  1.   

    //一小段应用了串口相关函数的程序
    unit comdemou;
    interface
    uses
    Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs;const
    Wm_commNotify=Wm_User+12;
    type
    TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    private
    Procedure comminitialize;
    Procedure MsgcommProcess(Var Message:Tmessage); Message Wm_commnotify;
    { Private declarations }
    public
    { Public declarations }
    end;//线程声明
    TComm=Class(TThread)
    protected
    procedure Execute;override;
    end;var
    Form1: TForm1;
    hcom,Post_Event:Thandle;
    lpol:Poverlapped;
    implementation{$R *.DFM}Procedure TComm.Execute; //线程执行过程
    var
    dwEvtMask:Dword;
    Wait:Boolean;
    Begin
    fillchar(lpol,sizeof(toverlapped),0);
    While True do Begin
    dwEvtMask:=0;
    Wait:=WaitCommEvent(hcom,dwevtmask,lpol);
    //等待串行口事件;
    if Wait Then Begin
    waitforsingleobject(post_event,infinite);//等待同步事件置位;
    resetevent(post_event);  //同步事件复位;
    PostMessage(Form1.Handle, WM_COMMNOTIFY,0,0);//发送消息;
    end;
    end;
    end;procedure Tform1.comminitialize;
    //串行口初始化
    var
    lpdcb:Tdcb;
    Begin
    hcom:=createfile('com2',generic_read or generic_write,0,nil,open_existing,
    file_attribute_normal or file_flag_overlapped,0);//打开串行口
    if hcom=invalid_handle_value then
    else
    setupcomm(hcom,4096,4096);//设置输入,输出缓冲区皆为4096字节
    getcommstate(hcom,lpdcb);//获取串行口当前默认设置
    lpdcb.baudrate:=2400;
    lpdcb.StopBits:=1;
    lpdcb.ByteSize:=8;
    lpdcb.Parity:=EvenParity;     //偶校验
    Setcommstate(hcom,lpdcb);
    setcommMask(hcom,ev_rxchar);//指定串行口事件为接收到字符;
    end;Procedure TForm1.MsgcommProcess(Var Message:Tmessage);
    var
    Clear:Boolean;
    Coms:Tcomstat;
    cbNum,ReadNumber,lpErrors:Integer;
    Read_Buffer:array[1..100]of char;
    Begin
    Clear:=Clearcommerror(hcom,lpErrors,@Coms);
    if Clear Then Begin
    cbNum:=Coms.cbInQue;
    ReadFile(hCom,Read_Buffer,cbNum,ReadNumber,lpol);//处理接收数据
    SetEvent(Post_Event);//同步事件置位
    end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    comminitialize;
    post_event:=CreateEvent(nil,true,true,nil); //创建同步事件;
    Tcomm.Create(False);
    //创建串行口监视线程;
    end;
    end.
      

  2.   

    不管对不对,在此先谢过了,大哥有没有delphi介面和原程序一起发给我好不好啊,