These are the function declarations for Delphi:
Function CreatePair(Port1, Port2 : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeletePair(Port : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeleteAll : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetStrictBaudrateName(Port: PChar, StrictBaudrate: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetStrictBaudrateHandle(hPort: THandle, StrictBaudrate: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function CreatePair(Port1, Port2 : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeletePair(Port : PChar) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function DeleteAll : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetStrictBaudrate(Port: PChar, StrictBaudrate: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetBreak (Port: PChar, bBreak: Boolean) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function QueryBus (InBuffer: Pointer, sizeInBuffer: Integer, OutBuffer: Pointer, sizeOutBuffer: Integer) : Boolean; stdcall; external 'VSPDCTL.DLL';
Function SetWiring (Port: PChar Buffer: Pointer, sizeBuffer: Integer) : Boolean; stdcall; external 'VSPDCTL.DLL';
Delphi can load ArmAccess either dynamically or statically. Here is a sample code for dynamic loading:
| Function CreatePairFn(PortName1, PortName2 : String) : Boolean; Type TCreatePair = function(Port1, Port2 : PChar) : Boolean; stdcall; Var Handle : THandle; CreatePair : TCreatePair; Begin CreatePairFn := False; Handle := LoadLibrary('VSPDCTL.DLL'); If (Handle <> 0) Then Begin @CreatePair:=GetProcAddress(Handle, 'CreatePair'); If (CreatePair <> Nil) Then CreatePairFn := CreatePair(PChar(PortName1), PChar(PortName2)); FreeLibrary(Handle); End; End; |
Note: In Delphi since version 2009 PAnsiChar variable type should be used instead of PChar.