function OpenComm(CommPort: Integer): THandle; stdcall; external 'dascomm.dll';
function Hand_Shake(Handle: THandle; Node_Addr: Integer; Password: pChar): Integer; stdcall; external 'dascomm.dll';
//int Hand_Shake(HANDLE icdev,int Node_Addr,LPCSTR Password) 这是VB的Dllprocedure TForm1.Button1Click(Sender: TObject);
var
HandInt: Integer;
ComHandle: THandle;
begin
ComHandle := OpenComm(0);
if ComHandle > 0 then
Memo1.Lines.Add('打开串口成功' + IntToStr(ComHandle)); HandInt := Hand_Shake(ComHandle, StrToInt(Edit1.Text), pChar('19550930')); //返回0为正确
if HandInt = 0 then
Memo1.Lines.Add('握手成功')
else
Memo1.Lines.Add(IntToStr(HandInt));
end;这里面有一个问题是Password: pChar是不是写对了。我不知道VB里面LPCSTR是不是跟delphi里面的pChar相对应。
他说我密码错误,可是密码就是那个。
这里有二个可能,一个就是调用约定的问题。一个就是类型的问题。
你大家看看。
function Hand_Shake(Handle: THandle; Node_Addr: Integer; Password: pChar): Integer; stdcall; external 'dascomm.dll';
//int Hand_Shake(HANDLE icdev,int Node_Addr,LPCSTR Password) 这是VB的Dllprocedure TForm1.Button1Click(Sender: TObject);
var
HandInt: Integer;
ComHandle: THandle;
begin
ComHandle := OpenComm(0);
if ComHandle > 0 then
Memo1.Lines.Add('打开串口成功' + IntToStr(ComHandle)); HandInt := Hand_Shake(ComHandle, StrToInt(Edit1.Text), pChar('19550930')); //返回0为正确
if HandInt = 0 then
Memo1.Lines.Add('握手成功')
else
Memo1.Lines.Add(IntToStr(HandInt));
end;这里面有一个问题是Password: pChar是不是写对了。我不知道VB里面LPCSTR是不是跟delphi里面的pChar相对应。
他说我密码错误,可是密码就是那个。
这里有二个可能,一个就是调用约定的问题。一个就是类型的问题。
你大家看看。
int Hand_Shake(HANDLE icdev,int Node_Addr,LPCSTR Password)
上面是一个调用的例子。。 用delphi怎么写呀。。
procedure TForm1.Button1Click(Sender: TObject);
var
HandInt: Integer;
ComHandle: THandle;
Psw:PChar
begin
New(Psw); //<--创建指针
StrPCopy(Psw,'19550930'); //<--传入密码
ComHandle := OpenComm(0);
if ComHandle > 0 then
Memo1.Lines.Add('打开串口成功' + IntToStr(ComHandle)); HandInt := Hand_Shake(ComHandle, StrToInt(Edit1.Text), Psw);
if HandInt = 0 then
Memo1.Lines.Add('握手成功')
else
Memo1.Lines.Add(IntToStr(HandInt));
Dispose(Psw); //<--释放指针
end;
procedure TForm1.Button1Click(Sender: TObject);
var
HandInt: Integer;
ComHandle: THandle;
Psw:PChar; //<--定义密码指针
begin
New(Psw); //<--创建指针
StrPCopy(Psw,'19550930'); //<--传入密码
ComHandle := OpenComm(0);
if ComHandle > 0 then
Memo1.Lines.Add('打开串口成功' + IntToStr(ComHandle)); HandInt := Hand_Shake(ComHandle, StrToInt(Edit1.Text), Psw);
if HandInt = 0 then
Memo1.Lines.Add('握手成功')
else
Memo1.Lines.Add(IntToStr(HandInt));
Dispose(Psw); //<--释放指针
end;