73 lines
1.4 KiB
ObjectPascal
73 lines
1.4 KiB
ObjectPascal
unit Unit2;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
|
|
|
|
type
|
|
TForm2 = class(TForm)
|
|
procedure FormShow(Sender: TObject);
|
|
private
|
|
fIsCommopen: Boolean;
|
|
procedure OpenCom(DllName: string);
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form2: TForm2;
|
|
newh: hwnd;
|
|
|
|
implementation
|
|
uses
|
|
U_iniParam;
|
|
{$R *.dfm}
|
|
procedure TForm2.OpenCom(DllName: string);
|
|
type
|
|
TMyFunc = function(fhandle: hwnd; sCommName: PAnsiChar; IntTime: Integer; IsMessage: Integer): hwnd; stdcall;
|
|
var
|
|
Tf: TMyFunc;
|
|
Tp: TFarProc;
|
|
Th: Thandle;
|
|
begin
|
|
Th := LoadLibrary(pchar(trim(DllName)));
|
|
if Th > 0 then
|
|
begin
|
|
try
|
|
Tp := GetProcAddress(Th, 'CommOpen');
|
|
if Tp <> nil then
|
|
begin
|
|
Tf := TMyFunc(Tp);
|
|
newh := Tf(Self.Handle, 'Comm1', 500, 1);
|
|
if newh < 1 then
|
|
begin
|
|
Application.MessageBox(pchar('打开串口失败!'), '提示');
|
|
end
|
|
else
|
|
fIsCommopen := true;
|
|
end
|
|
else
|
|
begin
|
|
fIsCommopen := false;
|
|
end;
|
|
finally
|
|
// FreeLibrary(Th);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
fIsCommopen := false;
|
|
Application.MessageBox(pchar('找不到 ' + trim(DllName) + ' 文件!'), '提示');
|
|
end;
|
|
end;
|
|
procedure TForm2.FormShow(Sender: TObject);
|
|
begin
|
|
if trim(MBDYDllName) <> '' then
|
|
OpenCom(MBDYDllName);
|
|
end;
|
|
|
|
end.
|