我是用WINDOWS API写的接收与发送函数,因为MSCOMM和SPCOMM老是出问题,接收的数据是乱码,不知道为什么!
   现在说说我遇到的问题吧,希望你们能帮我指出问题所在!!
   用同一个接收数据的函数,在没有给单片机发送数据的前提下,我能收到单片机发送上来的数据。但是,我一旦给单片机发送数据,单片机并返
回数据,这个数据却得不到,单步运行通过串口监视工具,我看见数据已经在缓冲区,但就是
读取不了!这是接收数据的函数!!

function TForm4.receive(i:integer):string;
var
  temp:string;//接收到的数据
  inbuff:array[0..100] of char;
  nbytesread,dwevent,dwerror:longWORD;
  CS:TCOMSTAT;
  len:integer;
begin
      ClearCommError(hcomm,dwError,@cs);
      if cs.cbInQue>sizeof(inbuff) then begin
      purgeComm(hcomm,PURGE_RXCLEAR);
      EXIT;
      END;
      ReadFile(hcomm,inbuff,cs.cbInQue,nbytesread,nil);//inbuff缓冲区已经有数据了,但单步运行却发现temp,result中没任何数据,len为0
      temp:=copy(inbuff,1,cs.cbInQue);                 //而不给单片机写数据,让单片机直接把数据发送上来,这个函数接收是没问题!!
      result:=temp;
      len:=length(result);
end;