public
PServerEqaddr:PEquip_addr;
{ Public declarations }
end;
------------------------------------------------------------------------------------
begin
new(PServerEqaddr);
new(PServerEqaddr);
PServerEqaddr^.nport :=byte(strtoint(edtCom.Text)); ;
PServerEqaddr^.ntype := $10; //服务器默认的机器类型
PServerEqaddr^.number_addr := gByteConvert(word(1)); //高低位互换 //注意:服务器默认为1号机
end;---------------------------------------------------------------------------------------
//设备信息结构定义
type
PEquip_addr = ^TEquip_addr;
TEquip_addr = record
nport:Byte; //串口号1 2 3 4 5 6分别表示com1,com2,com3,com4,com5,com6
ntype:Byte; //设备类型:你这里直接调用为 $10或16
number_addr:word; ////设备编号地址 (0X0001-0X7000)
end;
------------------------------------------------------------------
begin
iReturn:=Ysn_SetTempUserStatus(PServerEqaddr,gByteConvert(longword(StrToInt64("1"))),2);
end------------------------------------------------------------------------------------------
function Ysn_SetTempUserStatus(machine_add:PEquip_addr;card_id:longWORD;stateflag:BYTE):integer; far;stdcall; external 'Ysn_Y3ID.dll';--------------------------------------------------------------------------------
function TForm1.gByteConvert(const Source: Cardinal): Cardinal;
var
I: Integer;
x:Byte;
ab: array[0..3] of Byte;
s: Cardinal absolute ab[0];
begin
s:=source;
for I := 1 to 2 do // Iterate
begin
x:=ab[I-1];
ab[I-1]:= ab[4-I];
ab[4-I]:=x;
end; // for
result:=s;
end;
PServerEqaddr:PEquip_addr;
{ Public declarations }
end;
------------------------------------------------------------------------------------
begin
new(PServerEqaddr);
new(PServerEqaddr);
PServerEqaddr^.nport :=byte(strtoint(edtCom.Text)); ;
PServerEqaddr^.ntype := $10; //服务器默认的机器类型
PServerEqaddr^.number_addr := gByteConvert(word(1)); //高低位互换 //注意:服务器默认为1号机
end;---------------------------------------------------------------------------------------
//设备信息结构定义
type
PEquip_addr = ^TEquip_addr;
TEquip_addr = record
nport:Byte; //串口号1 2 3 4 5 6分别表示com1,com2,com3,com4,com5,com6
ntype:Byte; //设备类型:你这里直接调用为 $10或16
number_addr:word; ////设备编号地址 (0X0001-0X7000)
end;
------------------------------------------------------------------
begin
iReturn:=Ysn_SetTempUserStatus(PServerEqaddr,gByteConvert(longword(StrToInt64("1"))),2);
end------------------------------------------------------------------------------------------
function Ysn_SetTempUserStatus(machine_add:PEquip_addr;card_id:longWORD;stateflag:BYTE):integer; far;stdcall; external 'Ysn_Y3ID.dll';--------------------------------------------------------------------------------
function TForm1.gByteConvert(const Source: Cardinal): Cardinal;
var
I: Integer;
x:Byte;
ab: array[0..3] of Byte;
s: Cardinal absolute ab[0];
begin
s:=source;
for I := 1 to 2 do // Iterate
begin
x:=ab[I-1];
ab[I-1]:= ab[4-I];
ab[4-I]:=x;
end; // for
result:=s;
end;
delphi2cs.msi
你去Google查吧,很多地方有得下,好像还蛮好用。。
http://www.google.com/search?hl=en&q=delphi2cs.msi
unsigned char nport;
unsigned char ntype;
unsigned short number_addr;
}Equip_addr, *PEquip_addr;PEquip_addr lpServerEqaddr;unsigned long gByteConvert(const unsigned long source)
{
unsigned long s = source;
unsigned char (*ab)[4] = (unsigned char (*)[4])&s;
unsigned char x;
for(int i=1; i<3; i++){
x = (*ab)[i-1];
(*ab)[i-1] = (*ab)[4-i];
(*ab)[4-i] = x;
}
return s;
}int main(int argc, char* argv[])
{
lpServerEqaddr = new Equip_addr;
lpServerEqaddr->nport = 1;
lpServerEqaddr->ntype = 0x10;
lpServerEqaddr->number_addr = gByteConvert(1);
//system("pause");
return 0;
}