你可以安装mscomm这个ocx元件来读com口,或用汇编语言编一段函数插进去也可以,好想用读文件的方式也可以。

解决方案 »

  1.   

    1.用CreateFile( )打开通信串口;
    2.然后用BuildCommDCB( )和SetCommState( )函数设置串口通信参数
    3.用GetCommState()得到当前的DCB参数值,SetCommTimeouts()和GetCommTomeouts() 设置读写的超时参数;SetupComm()设置读写缓冲区。 
    4.CreateEvent()返回一事件句柄
    5.SetCommMask()定义用户程序可监视的通信事件
      以上设置完成后,调用函数WaitCommEvent()监视通信事件,
      当有通信事件产生时,就用ReadFile()和WriteFile()直接对串口缓冲区进行读写操作。通信结束后,调用函数CloseHandle()将串口关闭。 在以下网页有详细介绍:
    "http://www.yesky.com/33554432/34603008/34668544/34672640/34672768/35999.htm"
      

  2.   

    找个串口控件装上,调用控件的方法即可实现!
    好的串口控件到处都是,如MSCOMM32、SPCOMM等等。
      

  3.   

    首先,初始化串口
    function T_DR.IniComm(commstring: string): integer;
    var
       hdcb: tdcb;
       myhandle: integer;
    begin
       myhandle:=createFile(pchar(uppercase(commstring)),(GENERIC_READ or GENERIC_WRITE),0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
       if myhandle<>INVALID_HANDLE_VALUE then
       begin
          getcommstate(myhandle,hdcb);   
          hdcb.BaudRate:=CBR_9600;
          hdcb.Parity:=NOPARITY;
          hdcb.StopBits:=ONESTOPBIT;
          setcommstate(myhandle,hdcb);   //参数随意
          purgecomm(myhandle,purge_txabort);   
          purgecomm(myhandle,purge_rxabort);
       end;
       result:=myhandle;
    end;
    然后...用 READFILE(...,MYHANDLE,...)即可.