delphi自定义控件调用动态库,静态网页测试-创新互联

折腾着,自己摸索着走,会的,不会的,自己查。一门没学过的语言,虽然说很多的语法和用法和之前所学的很多的一样,但是句型和基础结构都不一样。会点,记点,防忘~~

连山ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

摸索着做了个demo.ocx控件,步骤如下:

    file -> new -> other -> ActiveForm ,为何用这个俺也不懂,从网上看到的。然后 edite -> add to interface 编写function 或者procedure,自己做了个function函数Get_DeviceOpen(Port, BaudRate: Integer): WideString; 输入两个int参数,输出的是WideString

    但不知道为何,add to Interface这个菜单按钮总是灰色的,使用不了,问了同事,在view -> type Library那里右键选择 new -> method ,然后在 parameters那里编辑相应的参数;如图:使用的是function有返回的值,折磨了下将modify的值设置为图的类型就可以了。

一直的在想着,pascal 没有用return来返回值,到底在函数里面,返回的是哪个的值,昨天想到今天,网上查不到,弄了弄,早上无意中看到人家将函数的名称进行赋值,才明白:

function TActiveFormX.Get_DeviceOpen(Port, BaudRate: Integer): WideString;
   var resulted: Integer;
begin
 resulted := open_device(Port,BaudRate);
 if(resulted <> 0) then
    begin
       Get_DeviceOpen := '打开端口失败'         //函数返回值
    end                            //此没有“;”
 else
    begin
       Get_DeviceOpen := '打开端口成功,波特率为'+inttostr(BaudRate)   //函数返回值
 end;

end;

在应用层上调用底层动态库接口函数,调用如下:

 function open_device(const port:integer; const baud:integer):word; stdcall ;external 'mw_mt32.dll';
  function get_version(const icdev:integer;const Ver,Verlen:PAnsiChar):word;stdcall ;external 'mw_mt32.dll';

其中接口文档的说明如下:

打开通讯接口

HANDLE open_device(__int16 port,unsigned long baud);

功能:初始化通讯端口

参数:

Port:通讯端口号,0、1、2、3分别代表串口1、2、3、4;

    对于USB口,该参数无效,可以设置为0.

baud:通讯口为串口时表示波特率,其值可为1200~115200。

    对于USB口,该参数无效,可以设置为0.

返回值:

2.读取硬件版本号

 __int16 get_version(HANDLE icdev,unsigned char *Ver);

功能:读硬件版本信息

参数:icdev:通讯设备标识符

 len:硬件版本长度

 data_buffer:硬件版本信息

返回值:

<>0 失败

=0 成功

    <=0 错误

>0  通讯设备标识符

使用静态网页调用我的中间ocx控件,在网页中插入控件的内容(如下):


使用js脚本,在js脚本中调用控件的function如下: resulted = dtm.Get_DeviceOpen(port,BaudRate);


分享名称:delphi自定义控件调用动态库,静态网页测试-创新互联
链接URL:http://myzitong.com/article/cchisc.html