# EzCad_Dev_Dome
A EzCad laser mark develop dome whit EzCad 2.7.0 in C#
![image](https://raw.githubusercontent.com/ospanic/EzCad_Dev_Dome/master/EzCad_Dev_Dome.png)
此软件开发包是我在淘宝上买的,连同加密狗一共380元,且没有任何技术支持。我买下后研究了一下,实现了我需要的功能,现在开放给大家,只是没有加密狗无法打标,可以显示预览图等等。如果哪位同学有免狗版的开发包,希望能分享下。
开发过程中如遇到问题,可发邮件给我一起讨论:ospanic@qq.com
# 1. 概述
MarkEzd.dll 是北京金橙子科技有限公司提供给用户用于ezcad2和lmc1控制卡二次开发的动态连接库。
MarkEzdDll.h是MarkEzd.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 //当前状态下不能执行此操作
注意:MarkEzd.dll中所有函的TCHAR对象都必须是UNICODE字符。关于如何把项目设置为UNICODE版请参考附录一。
## 函 数 名:lmc1_Initial
#### 目 的:初始化lmc1控制卡。
#### 语 法:`int lmc1_Initial(TCHAR* strEzCadPath,BOOL bTestMode,HWND hOwenWnd);`
- strEzCadPath是ezcad2.exe所处的目录的全路径名称;
- bTestMode 指是否是测试模式
- hOwenWnd 指拥有用户输入焦点的窗口,用于检测用户暂停消息。
#### 描 述:在程序中必须首先调用lmc1_Initial,其它函数才能工作。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_Close
#### 目 的:关闭lmc1控制卡。
#### 语 法:`int lmc1_Close();`
#### 描 述:在程序中退出时必须调用lmc1_Close来关闭lmc1控制卡。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_LoadEzdFile
#### 语 法:`int lmc1_LoadEzdFile(TCHAR* strFileName);`
#### 描 述:在程序中一般用此函数来打开一个用户建立ezd模板文件,这样用户就不需要在程序中设置加工参数,因为模板中的加工参数会自动导入。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_Mark
#### 目 的:标刻当前数据库里的所有数据。
#### 语 法:`int lmc1_Mark(BOOL bFlyMark);`
- bFlyMark= TRUE 使能飞动打标
#### 描 述:在使用lmc1_LoadEzdFile载入ezd文件后即可以使用此函数开始打标加工,此函数一直等待设备加工完毕后才返回。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_ChangeTextByName
#### 目 的:更改指定名称的文本对象的文本内容。
#### 语 法:`int lmc1_ChangeTextByName(TCHAR* strTextName, TCHAR* strTextNew);`
- strTextName 要更改内容的文本对象的名称
- strTextNew 新的文本内容
#### 描 述:在使用lmc1_LoadEzdFile载入ezd文件后,在每次加工前即可以使用此函数更改指定对象的内容。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_MarkEntity
#### 目 的:标刻当前数据库里的指定名称的对象。
#### 语 法:`int lmc1_MarkEntity(TCHAR* strEntName);`
#### 描 述:在使用lmc1_LoadEzdFile载入ezd文件后即可以使用此函数开始加工指定名称的对象,此函数一直等待设备加工完毕后才返回。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_ReadPort
#### 目 的:读lmc1的输入端口。
#### 语 法:`int lmc1_ReadPort(WORD& data);`
- data 输入端口的数据
#### 描 述:在程序中调用lmc1_ReadPort来读入当前输入端口的数据。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_WritePort
#### 目 的:写lmc1的输出端口。
#### 语 法:`int lmc1_WritePort(WORD data);`
- data 输出端口的数据
#### 描 述:在程序中调用lmc1_WritePort来输出数据到当前输出端口。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_GetPrevBitmap
#### 目 的:得到当前数据库里的所有对象的预览图像。
#### 语 法:`Cbitmap* lmc1_GetPrevBitmap(HWND hwnd,int nBMPWIDTH,int nBMPHEIGHT);`
- hwnd需要显示当前图像的窗口句柄
- nBMPWIDTH 需要生成的图像的像素宽度
- nBMPHEIGHT需要生成的图像的像素高度
#### 描 述:在程序中调用lmc1_GetPrevBitmap得到当前数据库里的所有对象的预览图像,可以用于更新界面显示。
#### 返 回 值:如果成功会返回图像,返回值为空表示失败
## 函 数 名:lmc1_SetDevCfg
#### 目 的:设置设备参数
#### 语 法:`int lmc1_SetDevCfg();`
#### 描 述:调用lmc1_SetDevCfg会自动弹出设备参数设置对话框,用户可以设置设备参数。
#### 返 回 值:通用错误码
## 函 数 名:lmc1_SetHatchParam
#### 目 的:设置当前填充参数。
#### 语 法:
int lmc1_SetHatchParam(BOOL bEnableContour,//使能轮廓本身
int bEnableHatch1,//使能填充1
int nPenNo1,//填充笔
int nHatchAttrib1,//填充属性
double dHatchEdgeDist1,//填充线边距
double dHatchLineDist1,//填充线间距
double dHatchStartOffset1,//填充线起始偏移距离
double dHatchEndOffset1,//填充线结束偏移距离
double dHatchAngle1,//填充线角度 (弧度值)
int bEnableHatch2,//使能填充1
int nPenNo2,//填充笔
int nHatchAttrib2,//填充属性
double dHatchEdgeDist2,//填充线边距
double dHatchLineDist2,//填充线间距
double dHatchStartOffset2,//填充线起始偏移距离
double dHatchEndOffset2,//填充线结束偏移距离
double dHatchAngle2);//填充线角度 (弧度值)
);
- bEnableContour 是否使能�