以下spcomm源程序在win98下测试通过
而在win2000下则不行, 请高手帮忙查错.
var
  rbuf: array[1..25] of char;
  viewstring:string;
  i:integer;
  f_kqj: Tf_kqj;implementation{$R *.dfm}procedure Tf_kqj.Button1Click(Sender: TObject);
var s: string;
begin
  s := '0900:33'; //将时间改为09:00   33是校验码
  with comm1 do
  begin
    StartComm;
    WriteCommData(chr(10),1);
    StopComm;    StartComm;
    WriteCommData(pchar(s), length(s));
    StopComm;    StartComm;
    WriteCommData(chr(13),1);
    StopComm;
  end;
end;
//接收考勤机的数据
procedure Tf_kqj.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
  i:integer;
begin
  viewstring := '';
  move(buffer^, rbuf, bufferlength);
  for i := 1 to bufferlength do viewstring := viewstring + rbuf[i];
  memo1.lines.add(viewstring);
  comm1.StopComm;
end;//修改日期
procedure Tf_kqj.Button2Click(Sender: TObject);
var s: string;
begin
  s := '010503/28';  //修改日期为03.05.01   /28为校验码
  with comm1 do
  begin
    StartComm;
    WriteCommData(chr(10),1);
    StopComm;    StartComm;
    WriteCommData(pchar(s), length(s));
    StopComm;    StartComm;
    WriteCommData(chr(13),1);
    StopComm;
  end;
end;//读取日期 时间
procedure Tf_kqj.Button3Click(Sender: TObject);
var s: string;
begin
  s := '#23';
  with comm1 do
  begin
    StartComm;
    WriteCommData(chr(10),1);
    StopComm;    StartComm;
    WriteCommData(pchar(s), length(s));
    StopComm;    StartComm;
    WriteCommData(chr(13),1);
//    StopComm;  end;
end;
//读取考勤记录
procedure Tf_kqj.Button4Click(Sender: TObject);
var s: string;
begin
  s := 'R52';
  with comm1 do
  begin
    StartComm;
    WriteCommData(chr(10),1);
    StopComm;    StartComm;
    WriteCommData(pchar(s), length(s));
    StopComm;    StartComm;
    WriteCommData(chr(13),1);
//    StopComm;  end;
end;end.