我用过TVaComm来编程,这个东西很好用,首先要设置COM口的波特率、停止位、起始位、奇偶校验等信息,然后就可以在ONRECHAR事件中通过Comm1.ReadText()或Comm1.ReadBuffer()等方法来获得传来的数据了。当然也提供捕捉错误的方法,这个在事件栏中也很容易的得到了。

解决方案 »

  1.   

    1)查阅 WINDOWS 编程方面的资料,不是DELPHI的。好象是 WINDOWS API 函数大全中有介绍的。
      

  2.   

    给你邮个例子吧!mail to ?
      

  3.   

    能也给我邮个例子吗?谢谢!
    [email protected]
      

  4.   

    1.初始化、打开串口
      try
        Mscomm1.CommPort:=3;            //指定串口
        Mscomm1.Settings:='9600,n,8,1'; //串口通讯方式设置
        Mscomm1.InBufferCount:=0;       //清空接受缓冲区
        Mscomm1.OutBufferCount:=0;      //清空发送缓冲区
        Mscomm1.PortOpen:=true;         //打开串口
      except
        ShowMessage('端口初始化错误!');
      end;2.向端口写数据
      MSComm1.Output:=字符串内容;3.从端口获得数据
      如果你知道应该接收的数据长度(假设为8):
      var
        st: DWORD;
        TempStr: string;
      ...
      st:=GetTickCount();
      while ((MSComm1.InBufferCount<8) and (GetTickCount()-st<50)) do
        Application.ProcessMessage;
      TempStr := '';
      try
        TempStr := MSComm1.InPut;
        ...//处理接收到的信息
      except
      end;
      如果你不知道应该接收的数据长度可以设置它的RThreshold与InpuLen属性,
    分别表示接收多少个字符产生一个OnComm事件和一个Input方法从缓冲区中获取
    多少个字符。TempStr := MSComm1.InPut;放到OnComm事件里写。
    例如,你可以设置RThreshold=1,InputLen=1在OnComm事件里这样写:
      TempStr := MSComm1.InPut;
      if TempStr<>#13 then //还没有接收完数据
        ReceiveStr := ReceiveStr + TempStr
      else
        ...                //处理接收到的数据(这些记得不是太清楚了,原来写的程序今天不在身边)