代码如下:
unit DllExport;interfaceuses
windows, SysUtils;
type
TKzString = packed record
returnlength: byte; //?????
returnstring: array[0..255] of char;
end; TReturnParam = packed record
lx: byte; //命令类型
mon: integer; //监视器号
cam: integer; //摄像头号
controlindex: integer; //镜头控制类型
Runtime: integer; //镜头控制时间,0为直至收到下一个控制命令,其它为动多长时间
param1, param2, param3, Param4: integer; //镜头控制的参数
end;
//lx=1 选取mon,
//lx=2 选取Cam
//lx=3 将Cam切至MON
//lx=4 镜头控掉
//矩阵库命令
function GetVideoMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall; //
//得到矩阵切换命令
//输入 mon,cam 监视器号和镜头号
//keyID键盘ID号
//输出 kzstring,不超过255function GetAudioMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
function NeedGetMonitor(): boolean; stdcall;
function GetMonitor(site, mon,cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
function GetControlCode(site,mon, cam, controlindex, param1, param2, param3, Param4, keyid: integer; var sendnostop: Boolean; var ConTime: Integer; var kzString: TkzString): boolean; stdcall;
//Sendnostrop发送代码是否要不停,true需一直发送,FALSE不停要,Contime指的需多少长时再发送一次,毫秒
{镜头控制参数列表
controlindex 镜头控制类型, 1-8为方向,即上下左右,左上,右上,左下,右下。此时节param1和Param2起作用,
分别为Param1为动作类型,开始还是停止,Param2为速度。 }
implementationfunction GetVideoMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall; //
var
s: string;
begin
s := Format('%d#a', [cam]);
s := #$55#$AA#$55#$00 + s;
kzString.returnlength := Length(s);
Move(s[1], kzString.returnstring[0], kzString.returnlength);
Result := True;
end;function GetAudioMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
begin
Result := True;
end;function NeedGetMonitor(): boolean; stdcall;
begin
result := True;
end;function GetMonitor(site, mon,cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
var
s: string;
begin
s := Format('%dMa', [mon]);
s := #$55#$AA#$55#$00 + s;
kzString.returnlength := Length(s);
Move(s[1], kzString.returnstring[0], kzString.returnlength);
Result := True;
end;function GetControlCode(site,mon, cam, controlindex, param1, param2, param3, Param4, keyid: integer; var sendnostop: Boolean; var ConTime: Integer; var kzString: TkzString): boolean; stdcall;
//Controlindex 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 上,下,左,右,左上,右上,左下,右下,复位,景深大,景深小,焦距大、焦距小,光圈大,光圈小
//const kzcode: array[0..15] of string = ('', '%dUa', '%dDa', '%dLa', '%dRa', '%dLa%dUa', '%dRa%dUa', '%dLa%dDa', '%dRa%dDa', '', 'Ta', 'Wa', 'Na', 'Fa', 'Oa', 'Ca');
const kzcode: array[0..15] of string = ('', '%dUa', '%dDa', '%dLa', '%dRa', '%dLa%dUa', '%dRa%dUa', '%dLa%dDa', '%dRd%dDa', '', 'Wa' ,'Ta', 'Na', 'Fa', 'Oa', 'Ca');
var
s, sendstring: string;
camstring: string;
begin
result := False;
if param1 = 1 then begin
if controlindex in [1..4] then begin
s := Format(kzcode[controlindex], [param2]);
end;
if controlindex in [5..8] then s := Format(kzcode[controlindex], [param2, param2]);
if controlindex in [10..15] then s := kzcode[controlindex];
end;
if (controlindex = 0) or (param1 = 0) then begin
kzString.returnlength := 0;
sendnostop := true;
ConTime := 0;
Result := True;
Exit;
end;
if (controlindex in [1..8, 10..15]) and (param1 = 1) then begin
camstring := IntToStr(cam);
while Length(camstring) < 4 do camstring := '0' + camstring;
// sendstring := #$55#$AA#$55#$00 + Format('%s:%s', [camstring, s]);
sendstring := #$55#$AA#$55#$00 + Format('%s:%s', [camstring, s]);
sendnostop := True;
ConTime := 50; //50毫秒
kzstring.returnlength := Length(sendstring);
Move(sendstring[1], kzString.returnstring[0], kzString.returnlength);
result := true;
end;
end;end.
unit DllExport;interfaceuses
windows, SysUtils;
type
TKzString = packed record
returnlength: byte; //?????
returnstring: array[0..255] of char;
end; TReturnParam = packed record
lx: byte; //命令类型
mon: integer; //监视器号
cam: integer; //摄像头号
controlindex: integer; //镜头控制类型
Runtime: integer; //镜头控制时间,0为直至收到下一个控制命令,其它为动多长时间
param1, param2, param3, Param4: integer; //镜头控制的参数
end;
//lx=1 选取mon,
//lx=2 选取Cam
//lx=3 将Cam切至MON
//lx=4 镜头控掉
//矩阵库命令
function GetVideoMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall; //
//得到矩阵切换命令
//输入 mon,cam 监视器号和镜头号
//keyID键盘ID号
//输出 kzstring,不超过255function GetAudioMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
function NeedGetMonitor(): boolean; stdcall;
function GetMonitor(site, mon,cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
function GetControlCode(site,mon, cam, controlindex, param1, param2, param3, Param4, keyid: integer; var sendnostop: Boolean; var ConTime: Integer; var kzString: TkzString): boolean; stdcall;
//Sendnostrop发送代码是否要不停,true需一直发送,FALSE不停要,Contime指的需多少长时再发送一次,毫秒
{镜头控制参数列表
controlindex 镜头控制类型, 1-8为方向,即上下左右,左上,右上,左下,右下。此时节param1和Param2起作用,
分别为Param1为动作类型,开始还是停止,Param2为速度。 }
implementationfunction GetVideoMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall; //
var
s: string;
begin
s := Format('%d#a', [cam]);
s := #$55#$AA#$55#$00 + s;
kzString.returnlength := Length(s);
Move(s[1], kzString.returnstring[0], kzString.returnlength);
Result := True;
end;function GetAudioMatrix(site, mon, cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
begin
Result := True;
end;function NeedGetMonitor(): boolean; stdcall;
begin
result := True;
end;function GetMonitor(site, mon,cam, keyid: integer; var kzString: TkzString): boolean; stdcall;
var
s: string;
begin
s := Format('%dMa', [mon]);
s := #$55#$AA#$55#$00 + s;
kzString.returnlength := Length(s);
Move(s[1], kzString.returnstring[0], kzString.returnlength);
Result := True;
end;function GetControlCode(site,mon, cam, controlindex, param1, param2, param3, Param4, keyid: integer; var sendnostop: Boolean; var ConTime: Integer; var kzString: TkzString): boolean; stdcall;
//Controlindex 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 上,下,左,右,左上,右上,左下,右下,复位,景深大,景深小,焦距大、焦距小,光圈大,光圈小
//const kzcode: array[0..15] of string = ('', '%dUa', '%dDa', '%dLa', '%dRa', '%dLa%dUa', '%dRa%dUa', '%dLa%dDa', '%dRa%dDa', '', 'Ta', 'Wa', 'Na', 'Fa', 'Oa', 'Ca');
const kzcode: array[0..15] of string = ('', '%dUa', '%dDa', '%dLa', '%dRa', '%dLa%dUa', '%dRa%dUa', '%dLa%dDa', '%dRd%dDa', '', 'Wa' ,'Ta', 'Na', 'Fa', 'Oa', 'Ca');
var
s, sendstring: string;
camstring: string;
begin
result := False;
if param1 = 1 then begin
if controlindex in [1..4] then begin
s := Format(kzcode[controlindex], [param2]);
end;
if controlindex in [5..8] then s := Format(kzcode[controlindex], [param2, param2]);
if controlindex in [10..15] then s := kzcode[controlindex];
end;
if (controlindex = 0) or (param1 = 0) then begin
kzString.returnlength := 0;
sendnostop := true;
ConTime := 0;
Result := True;
Exit;
end;
if (controlindex in [1..8, 10..15]) and (param1 = 1) then begin
camstring := IntToStr(cam);
while Length(camstring) < 4 do camstring := '0' + camstring;
// sendstring := #$55#$AA#$55#$00 + Format('%s:%s', [camstring, s]);
sendstring := #$55#$AA#$55#$00 + Format('%s:%s', [camstring, s]);
sendnostop := True;
ConTime := 50; //50毫秒
kzstring.returnlength := Length(sendstring);
Move(sendstring[1], kzString.returnstring[0], kzString.returnlength);
result := true;
end;
end;end.
分数多少对大家真的这么重要?
谁搞出来我再给200分