Foxtable(狐表)用户栏目专家坐堂 → 求dll调用指点。


  共有3692人关注过本帖平板打印复制链接

主题:求dll调用指点。

帅哥哟,离线,有人找我吗?
54292550
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:283 积分:4135 威望:0 精华:0 注册:2011/8/19 10:07:00
求dll调用指点。  发帖心情 Post By:2017/2/17 14:49:00 [只看该作者]

我有一个二次开发需求,一下内容是金橙子打标软件的二次开发接口。我只用到标识成黄色的那四个函数。
Markezd.dll是直接复制在foxtable目录下面就不用引用了吧?
跪求高手指点一下,在代码中如何引用markezd.dll,如何使用那四个函数?
——————————————————————————————————————————————————————————

1. 概述

MarkEzd.dll 是金橙子提供给用户用于ezcad2lmc1控制卡二次开发的动态连接库。

MarkEzdDll.hMarkEzd.dll中输出的函数的头文件。

 

用户可以使用VC6.0来进行开发。

MarkEzd.dll动态链接库函数的调用方法为显示调用,显式调用方法需要调用Windows API函数加载和释放动态链接库。

显式调用方法如下:

1.调用Windows API函数LoadLibrary()动态加载DLL

2.调用Windows API函数GetProcAddress()取得将要调用的DLL中函数的指针;用函数指针调用DLL中函数完成相应功能;

3.在程序结束时或不再使用DLL中函数时,调用Windows API函数FreeLibrary()释放动态链接库。

注意:调用MarkEzd.dll的程序必须放在ezcad2.exe同一个目录下,否则MarkEzd.dll将无法正常工作;而且ezcad2.exe在运行的时候MarkEzd.dll将无法正常使用,所以在使用MarkEzd.dll时必须关闭ezcad2.exe

2.函数说明

MarkEzd.dll中所有函数(个别函数除外)返回值均为一个整形的通用错误码

通用错误码定义如下:

#define LMC1_ERR_SUCCESS         0  //成功

#define LMC1_ERR_EZCADRUN        1  //发现EZCAD在运行

#define LMC1_ERR_NOFINDCFGFILE   2  //找不到EZCAD.CFG

#define LMC1_ERR_FAILEDOPEN      3  //打开LMC1失败

#define LMC1_ERR_NODEVICE        4  //没有有效的lmc1设备

#define LMC1_ERR_HARDVER         5  //lmc1版本错误

#define LMC1_ERR_DEVCFG          6  //找不到设备配置文件

#define LMC1_ERR_STOPSIGNAL      7  //报警信号

#define LMC1_ERR_USERSTOP        8  //用户停止

#define LMC1_ERR_UNKNOW         9  //不明错误

#define LMC1_ERR_OUTTIME         10 //超时

#define LMC1_ERR_NOINITIAL       11 //未初始化

#define LMC1_ERR_READFILE        12 //读文件错误

#define LMC1_ERR_OWENWNDNULL     13 //窗口为空

#define LMC1_ERR_NOFINDFONT      14 //找不到指定名称的字体

#define LMC1_ERR_PENNO           15 //错误的笔号

#define LMC1_ERR_NOTTEXT         16 //指定名称的对象不是文本对象

#define LMC1_ERR_SAVEFILE        17 //保存文件失败

#define LMC1_ERR_NOFINDENT           18 //找不到指定对象

#define LMC1_ERR_STATUE        19 //当前状态下不能执行此操作

名:lmc1_Initial

    :初始化lmc1控制卡。

    int lmc1_InitialTCHAR* strEzCadPath,BOOL bTestMode,HWND hOwenWnd);

                     strEzCadPathezcad2.exe所处的目录的全路径名称;

                     bTestMode  指是否是测试模式

                     hOwenWnd 指拥有用户输入焦点的窗口,用于检测用户暂停消息。

    :在程序中必须首先调用lmc1_Initial,其它函数才能工作。

值:通用错误码

 

名:lmc1_Close

    :关闭lmc1控制卡。

    int lmc1_Close();

    :在程序中退出时必须调用lmc1_Close来关闭lmc1控制卡。

值:通用错误码

 

名:lmc1_LoadEzdFile

    :打开指定的ezd文件,并清除当前数据库中的所有对象。

    int lmc1_LoadEzdFile(TCHAR* strFileName);

    :在程序中一般用此函数来打开一个用户建立ezd模板文件,这样用户就不需要在程序中设置加工参数,因为模板中的加工参数会自动导入。

值:通用错误码

 

名:lmc1_Mark

   标刻当前数据库里的所有数据

    int lmc1_MarkBOOL bFlyMark);

                     bFlyMark= TRUE 使能飞动打标

    :在使用lmc1_LoadEzdFile载入ezd文件后即可以使用此函数开始打标加工,此函数一直等待设备加工完毕后才返回。

值:通用错误码

 

 

 

 

 

 

3.开发步骤

下面我们结合一个实例来讲解如何进行二次开发。

客户要求在一个矩形工件中心加工一行文本,每个工件要加工的文本都必须从网络服务器上去在线查询获得。


<!--[endif]--><!--[if gte mso 9]> <![endif]-->

用户要进行二次开发一般的步骤如下:

<!--[if !supportLists]-->1.<!--[endif]-->先用ezcad2建立一个模板文件test.ezd,然后新建一个文本对象,把文本对象命名为”name”。然后调节文本大小,位置和加工参数使加工效果达到客户要求,此时保存文件并退出ezcad2


<!--[endif]--><!--[if gte mso 9]> <![endif]-->

 

<!--[if !supportLists]-->2.<!--[endif]-->编写专用软件调用MarkEzd.dll动态链接库

第一步:.动态加载MarkEzd.dll

HINSTANCE hEzdDLL = LoadLibrary(_T("MarkEzd.dll"));     

 

第二步:.取得将要调用的DLL中函数的指针

lmc1_Initial=(LMC1_INITIAL)GetProcAddress(hEzdDLL,"lmc1_Initial");

lmc1_Close=(LMC1_CLOSE)GetProcAddress(hEzdDLL,"lmc1_Close");              

lmc1_LoadEzdFile=(LMC1_LOADEZDFILE)GetProcAddress(hEzdDLL,"lmc1_LoadEzdFile");         

           lmc1_Mark=(LMC1_MARK)GetProcAddress(hEzdDLL,"lmc1_Mark");

           lmc1_ChangeTextByName=(LMC1_CHANGETEXTBYNAME)GetProcAddress(hEzdDLL,"lmc1_ChangeTextByName");      

第三步:用函数指针调用DLL中函数完成相应功能

 

1)初始化lmc1控制卡  lmc1_Initial()

2)打开test.ezd  lmc1_LoadEzdFile(“test.ezd”)

3)从网络服务器上去在线查询获得要加工的文本 (需要用户自己编写这段程序)

  

4)更新更改指定名称的文本对象的文本内容

假设上一步取得的文本是“1234567

lmc1_ChangeTextByName(“name”,“1234567 );

5)调用lmc1_Mark加工

6)如果还要加工则返回第3步继续。

7)关闭lmc1控制卡 lmc1_Close();

 

第四步:

调用Windows API函数释放动态链接库。

FreeLibrary(hEzdDLL)

 

 

 


 回到顶部