设置了
   setupcomm(hcom,1024,1024);//设置输入,输出缓冲区皆为1024字节
      PurgeComm( hCom, PURGE_TXABORT or PURGE_RXABORT or
                           PURGE_TXCLEAR or PURGE_RXCLEAR ) ;      getcommstate(hcom,lpdcb); //获取串行口当前默认设置
      lpdcb.baudrate:=CBR_9600;
      lpdcb.StopBits:=0;
      lpdcb.ByteSize:=8;
      lpdcb.Parity:=NoParity;

解决方案 »

  1.   

    不会吧,我作的win98下的东西都可以在win2000下用的,好好看看你的设置
      

  2.   

    我的程序就是在win2000下运行,怎么能行。
    你是怎么做的??
      

  3.   

    to chll()你有源码给我参考吗?第一次做串口通讯很头疼
      

  4.   

    这是以前做串口通讯的初始化程序.
    procedure InitComm(ComPort:string);
    var
      lpDCB:TDCB;
      CTO  :TCommTimeOuts;
     // flag :Boolean;
    begin
      //打开串口
      hcom:=createfile(pchar(ComPort),generic_read or generic_write,0,nil,open_existing,
                       file_attribute_normal or file_flag_overlapped,0);  if hcom=Invalid_handle_value then
      begin
        Application.MessageBox('Can not Open COM Port!',pchar('错误'),MB_OK+MB_ICONERROR);
        CloseHandle(hCom);
        exit;
      end
      else
        //设置输入缓冲区、输出缓冲区为4096
        SetupComm(hcom,4096,4096);   //清空发送、接收缓冲区
       if not PurgeComm(hcom, PURGE_RXABORT or PURGE_RXCLEAR or
                        PURGE_TXABORT or PURGE_TXCLEAR) then
       begin  //出错处理
         Application.MessageBox('Can''t Clear Buffer!',pchar('错误'),MB_OK+MB_ICONERROR);
         CloseHandle(hcom);
         Exit;
       end;
      CTO.ReadIntervalTimeout :=0;//$ffffffff;   //MaxDword
      CTO.ReadTotalTimeoutMultiplier :=0;
      CTO.ReadTotalTimeoutConstant :=0;      //1000
      CTO.WriteTotalTimeoutMultiplier :=0;   //2*CBR_9600 div CBR_19200;
      CTO.WriteTotalTimeoutConstant := 0;  SetCommTimeOuts(hcom, CTO);  { 使RTS和DTR设置为高电平 }
      if not EscapeCommFunction(hcom, SETDTR) then
      begin
        Application.MessageBox(PCHAR('Can''t Set DTR!'),pchar('错误'),MB_OK+MB_ICONERROR);
        CloseHandle(hcom);
        Exit;
      end;
      if not EscapeCommFunction(hcom, SETRTS) then
      begin
        Application.MessageBox(PCHAR('Can''t Set RTS'),pchar('错误'),MB_OK+MB_ICONERROR);
        CloseHandle(hcom);
        Exit;
      end;  //获取系统默认通信参数
      GetCommState(hcom,lpDCB);
      //设置串口通信参数
      lpDCB.DCBlength:=sizeof(TDCB);
      lpDCB.BaudRate:=9600;         //波特率
      lpDCB.StopBits:=OneStopBit;   //停止位
      lpDCB.ByteSize:=8;            //数据位
      lpDCB.Parity:=NOParity;       //无奇偶校验(Even-奇,ODD-偶)  SetCommState(hcom,lpDCB);
      

  5.   

    to wzrlover 我初始化都没有问题,就是ReadFile时98下没问题,2000下读取不正确,不知如何修改,