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 主要是读卡部分。谢谢~
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 主要是读卡部分。谢谢~
解决方案 »
- 局域网内两台机器如何传递信息?
- 如何在DELPHI一创建窗体的时候就关闭调自己
- 菜鸟请高手帮忙,这种情况程序是否要改成三层架构
- ******关于进销存软件,大家都来谈谈心得体会,做为技术总结贴,请斑主置顶。。。。
- 这个问题怎么解决??
- 为什么我这个SQL语句在查询分析器上没有数据得出select personnerid,makeid,workid,pricefrom dbo.countmakeid where gzdate BETWEEN 20
- Application.Terminate 结束程序出现非法操作, 答者有分.
- 简单问题:模糊查询的语句在delphi中应当怎么表达?
- 哪些 数据库支持 多用户查寻?
- 一个record的数组,怎样在const中设置初始值?
- 关于回调 学习
- 一个简单的语法,放在线程中程序就崩溃,放在BUTTON下就没问题,有代码
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.