我用DELPHI实现WINDOWS超级终端功能,写了个DLL文件来获取COM端口的获取的值,但是就是连接不上 以下是我的代码:
const
  MaxM = 12;{$R *.res}function ReadCard(filepathP, wsnmP, keyidP, errstrP: Pchar): Boolean;
var
  Comport: TComPort;
  fini: TIniFile;
  filepath, wsnm, keyid, errstr: string;
  str, comPundRateStr, comStr, stopBitsStr, DataBitsStr, ParityStr: string;
  i, com, LsRet: byte;
  //buf: array[0..100] of char;
begin
  filepath := strpas(filepathP);
  wsnm := strpas(wsnmP);
  keyid := strpas(keyidP);
  errstr := strpas(errstrP);
  i := 1;
  com := 1;
  keyid := '';
  if not fileExists(filepath + 'posini.ini') then
  begin
    errstr := '未发现ID读卡机配置文件posini.ini';
    Result := false;
    Exit;
  end
  else
  begin
    try
      fini := TIniFile.Create(filepath + 'posini.ini');
      comPundRateStr := fini.ReadString('ID卡', 'ID卡波特率', '1200');
      comStr := fini.ReadString('ID卡', 'ID卡串口号', 'com1');
      stopBitsStr := fini.ReadString('ID卡', '终止位', '0');
      DataBitsStr := fini.ReadString('ID卡', '数据位', '8');
      ParityStr := fini.ReadString('ID卡', '校验位', '0');
    finally
      fini.Free;
    end;
    if Comport = nil then
      Comport := Tcomport.Create(Application);
    Comport.Port := comStr;
    case strtoInt(comPundRateStr) of
      110: Comport.BaudRate := br110;
      11520: Comport.BaudRate := br115200;
      1200: Comport.BaudRate := br1200; //ID卡刷卡机器默认值
      128000: Comport.BaudRate := br128000;
      14400: Comport.BaudRate := br14400;
      19200: Comport.BaudRate := br19200;
      2400: Comport.BaudRate := br2400;
      256000: Comport.BaudRate := br256000;
      300: Comport.BaudRate := br300;
      38400: Comport.BaudRate := br38400;
      4800: Comport.BaudRate := br4800;
      56000: Comport.BaudRate := br56000;
      57600: Comport.BaudRate := br57600;
      600: Comport.BaudRate := br600;
      9600: Comport.BaudRate := br9600;
    else
      Comport.BaudRate := br1200;
    end;
    Comport.stopBits := sbonestopbit;
    case strtoInt(DataBitsStr) of
      5: Comport.DataBits := dbfive;
      6: Comport.DataBits := dbsix;
      7: Comport.DataBits := dbseven;
      8: Comport.DataBits := dbEight; //ID卡刷卡机器默认值
    else
      Comport.DataBits := dbEight;
    end;    case strtoInt(ParityStr) of
      0: Comport.Parity.bits := prNone; //ID卡刷卡机器默认值
      1: Comport.Parity.bits := prodd;
      2: Comport.Parity.bits := preven;
      3: Comport.Parity.bits := pr;
      4: Comport.Parity.bits := prspace;
    else
      Comport.Parity.bits := prNone;
    end;
    Comport.Buffer.InputSize := 3072;
    Comport.Buffer.OutputSize := 2048;
    if not Comport.Connected then
    begin
      try
        Comport.Open;
      except
        str := '';
        errstr := '打开失败';
        Result := false;
      end;
    end;
    while com < 2000 do
    begin
      sleep(300);
      while i < MaxM do
      begin
        sleep(50);
        LsRet := Comport.ReadStr(str, 1);
        if LsRet <= 0 then
          break;
        keyid := str + keyid;
        i := i + 1;
      end;
      com := com + 1;
    end;
    if errstr <> '' then
    begin
      Result := false; //表示有错误
    end
    else
    begin
      Result := true; //无错误
    end;
    Comport.Close;
    Comport.Free;
    Comport := nil;  end;
end;exports ReadCard;读取的是配置文件里的信息,已经读取成功.我自己写了一个DEMO,但是刷卡后就是读不出数据.我可以肯定的是DEMO没问题.请各位大侠们看看我这个DLL函数,是不是没有实现超级终端功能