DLL文件定义
int RdrGetReaderStatus(char *readercode)
int RdrGetCardid(char *readercode, char *outcardid)
下面是代码
int retval = -1;
char outmachinecode[1025] = {0};
char outdata[4096] = {0};

int i=0;
while (1)
{
printf("-----------------------------------------------%d\r\n",i++);
// 查询UDP数据
ZeroMemory(outmachinecode,sizeof(outmachinecode));
RdrGetRecvUdpData(outmachinecode);
if (strlen(outmachinecode)>0)
{
printf(">>本地网UDP数据>>");
printf("\r\n%s", outmachinecode);
printf("\r\n");
} // 查询被管理读卡器的连接状态
ZeroMemory(outmachinecode,sizeof(outmachinecode));
RdrGetReaderStatus(outmachinecode);
printf(">>读卡器状态>>");
printf("\r\n%s", outmachinecode);
printf("\r\n"); // 指定读卡器的机器号进行卡号数据的读取
// 读卡器内的读卡记录,先由动态库自动的收集缓存到本地
// 用户可以按照每500ms的节奏进行查询
ZeroMemory(outdata,sizeof(outdata));
RdrGetCardid("031211110426",outdata);
if (strlen(outdata)>0)
{
printf("%s", outdata);
printf("\r\n\r\n\r\n");
}
Sleep(50);
}
麻烦各位大侠把代码转成delphi 主要是读卡部分。谢谢~

解决方案 »

  1.   


    program Project1;{$APPTYPE CONSOLE}uses
      SysUtils;function RdrGetReaderStatus(var readercode: PChar): Integer; stdcall; external
    '你的.DLL';function RdrGetCardid(readercode: PChar; var outcardid: PChar): Integer;
      stdcall; external '你的.DLL';const
      omcSize = 1025;
      odSize = 4096;
    var
      //retval: Integer = -1;
      outmachinecode: PChar;
      outdata: PChar;
      i: Integer = 0;
    begin
      outmachinecode := GetMemory(omcSize);
      outdata := GetMemory(odSize);
      try
        outmachinecode := '';
        outdata := '';    while True do
        begin
          Inc(i);
          Writeln(Format('----------------------------------------------- %d', [i]));
          // 查询UDP数据
          outmachinecode := '';
          //RdrGetRecvUdpData(outmachinecode);   { 没交代 RdrGetRecvUdpData }
          if (StrLen(outmachinecode) > 0) then
          begin
            Writeln('>>本地网UDP数据>>');
            Writeln(Format('%s', [outmachinecode]));
          end;      // 查询被管理读卡器的连接状态
          outmachinecode := '';
          RdrGetReaderStatus(outmachinecode);
          Writeln('>>读卡器状态>>');
          Writeln(Format('%s', [outmachinecode]));      // 指定读卡器的机器号进行卡号数据的读取
          // 读卡器内的读卡记录,先由动态库自动的收集缓存到本地
          // 用户可以按照每500ms的节奏进行查询
          outdata := '';
          RdrGetCardid(PChar('031211110426'), outdata);
          if (StrLen(outdata) > 0) then
          begin
            Writeln(Format('%s', [outdata]));
          end;      Sleep(50);
        end;
      finally
        FreeMemory(outmachinecode);
        FreeMemory(outdata);
      end;  readln;
    end.