#ifndef MARKEZDDLL_H #define MARKEZDDLL_H #include "windows.h" #pragma region Return Value //所有函数都返回一个整形值 #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 //当前状态下不能执行此操作 #define LMC1_ERR_PARAM 20 //参数错误 #define LMC1_ERR_DEVICE 21 //硬件错误 #pragma endregion #pragma region Device //初始化lmc1控制卡 //输入参数: strEzCadPath EzCad软件的执行路径 // bTestMode = TRUE 表示测试模式 bTestMode = FALSE 表示正常模式,默认TRUE // pOwenWnd 表示父窗口对象,如果需要实现停止打标,则系统会从此窗口截取消息 typedef int(*LMC1_INITIAL)(TCHAR* strEzCadPath,//ezcad的工作目录 BOOL bTestMode,//是否是测试模式 HWND hOwenWnd);//父窗口 //关闭lmc1控制卡 typedef int(*LMC1_CLOSE)(); //调用设置设备参数的对话框 typedef int(*LMC1_SETDEVCFG)(); //调用设置设备参数的对话框,显示扩展轴参数 typedef int(*LMC1_SETDEVCFG2)(BOOL bAxisShow0, BOOL bAxisShow1); #pragma endregion #pragma region Mark //标刻当前数据库里的所有数据 //输入参数: bFlyMark = TRUE 使能飞动打标 bFlyMark = FALSE 使能飞动打标 //此函数一直等待设备加工完毕后,或者用户停止才返回。即函数结束表示加工结束 typedef int(*LMC1_MARK)(BOOL bFlyMark); //标刻当前数据库里的指定对象 //输入参数: strEntName 要加工的指定对象的名称 //此函数一直等待设备加工完毕后才返回 typedef int(*LMC1_MARKENTITY)(TCHAR* strEntName); //飞行标刻当前数据库里的所有数据 //在使用此函数后,软件开始等待飞行硬件信号(IN8/IN9,在飞行界面中设置的),有信号后开始加工 typedef int(*LMC1_MARKFLYBYSTARTSIGNAL)(); //飞动标刻当前数据库里的指定对象 //输入参数: strEntName 飞动打标指定对象的名称 //此函数一直等待设备加工完毕后才返回 typedef int(*LMC1_MARKENTITYFLY)(TCHAR* strEntName); //标刻指定线段 //输入参数 x1,y1起点坐标,x2y2终点坐标,pen 使用的笔号 typedef int(*LMC1_MARKLINE)(double x1, double y1, double x2, double y2, int pen); //标刻指定点 //输入参数 x,y点坐标,delay打标时间,pen 使用的笔号 typedef int(*LMC1_MARKPOINT)(double x, double y, double delay, int pen); //标刻指定的多个点 //输入参数 ptBuf点坐标组;ptBuf[n][0]表示第n个点的x坐标,ptBuf[n][1]表示第n个点的y坐标,dJumpSpeed在点之间的跳转速度,dLaserOnTimeMs点的打标时间,单位ms typedef int(*LMC1_MARKPOINTBUF2)(double ptBuf[][2], double dJumpSpeed, double dLaserOnTimeMs); //判断卡正在处于工作状态 typedef int(*LMC1_ISMARKING)(); //强制停止当前标刻 typedef int(*LMC1_STOPMARK)(); //标刻一次红光显示框 //预览一次全部对象的打标范围,即数据的包围盒 typedef int(*LMC1_REDLIGHTMARK)(); //红光预览当前数据库里面所有数据轮廓一次 //预览轨迹与打标轨迹一致。如果预览圆,轨迹就是一个圆 typedef int(*LMC1_REDLIGHTMARKCONTOUR)(); //红光预览当前数据库里面指定对象 //输入参数 strEntName对象名称;bContour显示的是否是轮廓,true显示轮廓,false显示范围 typedef int(*LMC1_REDLIGHTMARKBYENT)(TCHAR* strEntName, BOOL bContour); //获取当前的飞行速度 //输入参数: FlySpeed流水线当前速度 //在设备空闲时可查询流水线速度,即加工或红光过程中不可使用 typedef int(*LMC1_GETFLYSPEED)(double& FlySpeed); #pragma endregion #pragma region EzdFile //载入ezd文件,并清除数据库所有对象 //输入参数: strFileName EzCad文件名称 typedef int(*LMC1_LOADEZDFILE)(TCHAR* strFileName); //保存当前数据库里所有对象到指定ezd文件里 //输入参数: strFileName ezd文件名称 typedef int(*LMC1_SAVEENTLIBTOFILE)(TCHAR* strFileName); #pragma endregion #pragma region Preview //得到当前数据库里的所有数据的预览图像 //输入参数: hwnd需要显示当前图像的窗口句柄,nBMPWIDTH 需要生成的图像的像素宽度,nBMPHEIGHT需要生成的图像的像素高度 //在程序中调用lmc1_GetPrevBitmap得到当前数据库里的所有对象的预览图像的指针,可以用于更新界面显示 //typedef CBitmap* (*LMC1_GETPREVBITMAP)(HWND hwnd, int nBMPWIDTH, int nBMPHEIGHT); //得到当前数据库里的指定对象数据的预览图像 //输入参数: pWnd 预览图像显示到哪个窗口 // nBMPWIDTH 预览图像的宽度 // nBMPHEIGHT 预览图像的高度 // strEntName 指定对象的名称 //typedef CBitmap* (*LMC1_GETPREVBITMAPBYNAME)(TCHAR* strEntName, HWND hwnd, int nBMPWIDTH, int nBMPHEIGHT); #pragma endregion #pragma region Operation Ent //得到指定对象的最大最小坐标,如果pEntName==NULL表示读取数据库所有对象的最大最小坐标 typedef int(*LMC1_GETENTSIZE)(TCHAR* pEntName,//字符串对象名称 double& dMinx,//最小x坐标 double& dMiny,//最小y坐标 double& dMaxx,//最大x坐标 double& dMaxy,//最大y坐标 double& dZ);//对象的z坐标 //移动指定对象相对坐标 typedef int(*LMC1_MOVEENT)(TCHAR* pEntName,//字符串对象名称 double dMovex,//对象移动x距离 double dMovey);//对象移动y距离 //缩放指定对象, typedef int(*LMC1_SCALEENT)(TCHAR* pEntName,//字符串对象名称 double dCenx,//缩放的X中心 double dCeny,//缩放的Y中心 double dScaleX,//缩放的X比例 double dScaleY);//缩放的Y比例 //镜像指定对象 typedef int(*LMC1_MIRRORENT)(TCHAR* pEntName,//字符串对象名称 double dCenx,// 镜像的X中心 double dCeny,//镜像的Y中心 BOOL bMirrorX,//是否X方向镜像,true表示镜像 BOOL bMirrorY);//是否Y方向镜像,true表示镜像 //旋转指定对象 typedef int(*LMC1_ROTATEENT)(TCHAR* pEntName,//字符串对象名称 double dCenx,//旋转的X中心 double dCeny,//旋转的Y中心 double dAngle);//旋转的角度,(逆时针为正,单位为度) //复制粘贴指定对象,并对新对象命名 //输入参数:PEntName要复制的对象,pNewEntName复制后的对象名称 typedef int(*LMC1_COPYENT)(TCHAR* pEntName, TCHAR* pNewEntName); //得到当前数据库中的对象总数 //输出参数: 对象总数 typedef int(*LMC1_GETENTITYCOUNT)(); //得到指定序号的对象名称 //输入参数: nEntityIndex 指定对象的序号(范围: 0 - (lmc1_GetEntityCount()-1)) //输出参数: szEntName 对象的名称 typedef int(*LMC1_GETENTITYNAME)(int nEntityIndex, TCHAR szEntName[256]); //设置指定序号的对象名称 typedef int(*LMC1_SETENTITYNAME)(int nEntityIndex, TCHAR* pEntName); //修改对象名称 typedef int(*lmc1_ChangeEntName)(TCHAR* pEntName, TCHAR* pNewEntName); //设置旋转变换参数 //输入参数: dCenterX 旋转中心x坐标 // dCenterY 旋转中心y坐标 // dRotateAng 旋转角度(弧度值) typedef void(*LMC1_SETROTATEPARAM)(double dCenterX, double dCenterY, double dRotateAng); //设置旋转变换参数 不影响数据的显示,只是加工时才对对象进行旋转。 typedef void(*LMC1_SETROTATEMOVEPARAM)( double dMoveX,//X方向移动距离 double dMoveY,//Y方向移动距离 double dCenterX, //旋转中心X坐标 double dCenterY,//旋转中心Y坐标 double dRotateAng); //旋转角度(弧度值) //更改当前数据库里的指定文本对象的文本 //输入参数: strTextName 要更改内容的文本对象的名称 // strTextNew 新的文本内容 typedef int(*LMC1_CHANGETEXTBYNAME)(TCHAR* strTextName, TCHAR* strTextNew); //得到指定对象的文本 //strTextName 要获取内容的文本对象的名称,szEntText 文本内容 typedef int(*LMC1_GETTEXTBYNAME)(TCHAR* strTextName, TCHAR strText[256]); //序列号复位为开始序号 //输入参数:PTextName文本对象名称 typedef int(*LMC1_TEXTRESETSN)(TCHAR* pTextName); //群组2个对象,并设置群组新的对象名称,以及笔号 typedef int(*LMC1_GROUPENT)(TCHAR* pEntName1,//群组对象1名称 TCHAR* pEntName2,//群组对象2名称 TCHAR* pEntNameNew,//群组后新对象名称 int pen);//新对象使用的笔号 //解散群组 //输入参数:pGroupEntName群组对象名称 typedef int(*LMC1_UNGROUPENT)(TCHAR* pGroupEntName); //群组N个对象,并设置群组新的对象名称,以及笔号 typedef int(*LMC1_GROUPENT2)(TCHAR** strEntNameList,//对象名称列表 int nEntCount,//群组对象数量 TCHAR* strGroupName,//群组后对象名 int nGroupPen);//新对象使用的笔号 //彻底解散群组对象为曲线 typedef int(*LMC1_UNGROUPENT2)(TCHAR* pGroupEntName,//群组对象名称 int nFlag);//标志位,默认=0 //向前移动对象 typedef int(*LMC1_MOVEENTITYBEFORE)(int nMoveEnt, //要移动的对象在对象列表中的位置 int nGoalEnt);//对象要在对象列表中移动到的位置 //向后移动对象 typedef int(*LMC1_MOVEENTITYAFTER)(int nMoveEnt, //要移动的对象在对象列表中的位置 int nGoalEnt);//对象要在对象列表中移动到的位置 //颠倒所有对象在对象列表中的顺序 typedef int(*LMC1_REVERSEALLENTORDER)(); //获取指定位图的参数 typedef int(*LMC1_GETBITMAPENTPARAM)(TCHAR* strEntName,//位图对象名称 TCHAR BmpPath[256],//位图对象路径 int& nBmpAttrib,//位图参数 int& nScanAttrib,//扫描参数 double& dBrightness,//亮度设置[-1, 1] double& dContrast,//对比度设置[-1, 1] double& dPointTime,//打点时间设置 int& nImportDpi);//DPI const int BMPSCAN_INVERT = 0x0001;//图像反转 const int BMPSCAN_GRAY = 0x0002;//图像灰度 const int BMPSCAN_LIGHT = 0x0004;//图像亮度 const int BMPSCAN_DITHER = 0x0010;//网点处理 const int BMPSCAN_BIDIR = 0x1000;//双向扫描 const int BMPSCAN_YDIR = 0x2000;//Y向扫描 const int BMPSCAN_DRILL = 0x4000;//打点模式 const int BMPSCAN_POWER = 0x8000;//调整功率 const int BMPATTRIB_DYNFILE = 0x1000;//动态文件 const int BMPATTRIB_IMPORTFIXED_WIDTH = 0x2000;//固定文件输入宽 const int BMPATTRIB_IMPORTFIXED_HEIGHT = 0x4000;//固定文件输入高 const int BMPATTRIB_IMPORTFIXED_DPI = 0x8000;//固定DPI //设置指定位图的参数 typedef int(*LMC1_SETBITMAPENTPARAM2)(TCHAR* strEntName,//位图对象名称 TCHAR* strBmpPath,//位图对象路径 int nBmpAttrib,//位图参数 int nScanAttrib,//扫描参数 double dBrightness,//亮度设置[-1, 1] double dContrast,//对比度设置[-1, 1] double dPointTime,//打点时间设置 int nImportDpi);//DPI //获取指定文本的字体参数 typedef int(*LMC1_GETTEXTENTPARAM2)(TCHAR* strTextName,//文本名称 TCHAR sFontName[256],//字体名称 double& dCharHeight,//字符高度 double& dCharWidth,//字符宽度 double& dCharAngle,//字符倾角(弧度值) double& dCharSpace,// 字符间距 double& dLineSpace,//行间距 double& dSpaceWidth,//空字符宽带 BOOL& bEqualCharWidth);//等字符宽度模式 //设置指定文本的字体参数 typedef int(*LMC1_SETTEXTENTPARAM2)(TCHAR* strTextName,//文本名称 TCHAR* strFontName,//字体名称 double dCharHeight,//字符高度 double dCharWidth,//字符宽度 double dCharAngle,//字符倾角(弧度值) double dCharSpace,//字符间距 double dLineSpace,//行间距 double dSpaceWidth,//空字符宽带 BOOL bEqualCharWidth);//等字符宽度模式 //获取指定文本的字体参数 typedef int(*LMC1_GETTEXTENTPARAM4)(TCHAR* strTextName,//文本名称 TCHAR sFontName[256],//字体名称 int& nTextSpaceMode,//文本间距模式 double& dTextSpace,//文本间距距离 double& dCharHeight,// 字符高度 double& CharWidthRatio,//字符宽度 double& dCharAngle,// 字符倾角(弧度值) double& dCharSpace,//字符间距 double& dLineSpace,// 行间距 double& spaceWidthRatio,//空字符宽带 int& nTextAlign,//文本对齐方式 BOOL& bBold,//粗体 BOOL& bItalic);//斜体 //设置指定文本的字体参数 typedef int(*LMC1_SETTEXTENTPARAM4)(TCHAR* strTextName,//文本名称 TCHAR* strFontName,//字体名称 int nTextSpaceMode,//文本间距模式 double dTextSpace,//文本间距距离 double dCharHeight,//字符高度 double CharWidthRatio,//字符宽度 double dCharAngle,//字符倾角(弧度值) double dCharSpace,// 字符间距 double dLineSpace,//行间距 double spaceWidthRatio,//空字符宽带 int nTextAlign,//文本对齐方式 bool bBold,//粗体 bool bItalic);//斜体 //删除对象库里指定对象 typedef int(*LMC1_DELETEENT)(TCHAR* pEntName); //清除对象库里所有数据 typedef int(*LMC1_CLEARENTLIB)(); #pragma endregion #pragma region AddEnt //对齐方式时数字代表的意义 // 6 --- 5 --- 4 // | | // | | // 7 8 3 // | | // | | // 0 --- 1 --- 2 //加入新文本到数据库中 typedef int(*LMC1_ADDTEXTTOLIB)(TCHAR* pStr,//要添加的字符串 TCHAR* pEntName,//字符串对象名称 double dPosX,//字符串的左下角基点的x坐标 double dPosY,//字符串的左下角基点的y坐标 double dPosZ,//字符串对象的z坐标 int nAlign,//对齐方式0-8 double dTextRotateAngle,//字符串绕基点旋转的角度值(弧度值) int nPenNo,//对象使用的加工参数 BOOL bHatchText);//是否填充文本对象 #define CIRTEXTFLAG_REVERSE 0x0001 //反转 #define CIRTEXTFLAG_UPDOWN 0x0002 //上下反转 //添加圆弧文本 typedef int(*LMC1_ADDCIRCLETEXTTOLIB)(TCHAR* pStr,//要添加的字符串 TCHAR* pEntName,//字符串对象名称 double dPosX,//文本所在基准圆的x坐标 double dPosY,//文本所在基准圆的y坐标 double dPosZ,//字符串对象的z坐标 int nPenNo,//文本对象使用的笔号 int bHatchText,//是否填充文本 double dCirDiameter,//基准圆直径 double dCirBaseAngle,//文字基准角度 BOOL bCirEnableAngleLimit,//是否使能角度限制 double dCirAngleLimit, //限制的角度 int nCirTextFlag);//文本在圆上的方向 //获得指定圆弧文本对象的参数 typedef int(*LMC1_GETCIRCLETEXTPARAM)( TCHAR* pEntName,//字符串对象名称 double& dCenX,//文本所在基准圆的x坐标 double& dCenY,//文本所在基准圆的y坐标 double &dCenZ,//字符z坐标 double& dCirDiameter,//基准圆直径 double& dCirBaseAngle,//文字基准角度 BOOL& bCirEnableAngleLimit,//是否使能角度限制 double & dCirAngleLimit,//限制的角度 int& nCirTextFlag); //文本在圆上的方向 //设置指定圆弧文本对象的参数 typedef int(*LMC1_SETCIRCLETEXTPARAM)( TCHAR* pEntName,//字符串对象名称 double dCenX,//文本所在基准圆的x坐标 double dCenY,//文本所在基准圆的y坐标 double dCenZ,//字符z坐标 double dCirDiameter,//基准圆直径 double dCirBaseAngle,//文字基准角度 BOOL bCirEnableAngleLimit,//是否使能角度限制 double dCirAngleLimit,//限制的角度 int nCirTextFlag);//文本在圆上的方向 //加入指定文件到数据库中 //支持的文件有ezd,dxf,dst,plt,ai,bmp,jpg,tga,png,gif,tiff等 typedef int(*LMC1_ADDFILETOLIB)(TCHAR* pFileName, //文件名称 TCHAR* pEntName,//字符串对象名称 double dPosX, //文件左下角基点x坐标 double dPosY, //文件左下角基点y坐标 double dPosZ, //文件z坐标 int nAlign,//对齐方式0-8 double dRatio,//文件缩放比例 int nPenNo,//对象使用的加工参数 BOOL bHatchFile);//是否填充文件对象 如果是ezd文件或位图文件此参数无效 //加入曲线到数据库中 typedef int(*LMC1_ADDCURVETOLIB)(double ptBuf[][2],//曲线顶点数组 int ptNum,//曲线顶点数 TCHAR* pEntName,//曲线对象名称 int nPenNo,//曲线对象使用的笔号 int bHatch);//曲线是否填充 //加入一组点到数据库中 typedef int(*LMC1_ADDCURVETOLIB2)(double* ptBuf,//曲线顶点数组 int ptNum,//曲线顶点数 TCHAR* pEntName,//曲线对象名称 int nPenNo,//曲线对象使用的笔号 int bHatch);//曲线是否填充 //加入延时到数据库中 //输入参数:延时时长,单位ms typedef int(*LMC1_ADDDELAYTOLIB)(double dDelayMs); //加入输出口到数据库中 typedef int(*lmc1_AddWritePortToLib)( int nOutPutBit,//输出口的值,0到15 BOOL bHigh, //是否是高电平 BOOL bPluse, //是否是脉冲 double dPulseTimeMs);//脉冲长的,单位ms #define BARCODETYPE_39 0 #define BARCODETYPE_93 1 #define BARCODETYPE_128A 2 #define BARCODETYPE_128B 3 #define BARCODETYPE_128C 4 #define BARCODETYPE_128OPT 5 #define BARCODETYPE_EAN128A 6 #define BARCODETYPE_EAN128B 7 #define BARCODETYPE_EAN128C 8 #define BARCODETYPE_EAN13 9 #define BARCODETYPE_EAN8 10 #define BARCODETYPE_UPCA 11 #define BARCODETYPE_UPCE 12 #define BARCODETYPE_25 13 #define BARCODETYPE_INTER25 14 #define BARCODETYPE_CODABAR 15 #define BARCODETYPE_PDF417 16 #define BARCODETYPE_DATAMTX 17 #define BARCODETYPE_USERDEF 18 #define BARCODETYPE_QRCODE 19 #define BARCODETYPE_MINIDATAMTX 20 #define BARCODEATTRIB_REVERSE 0x0008 //条码反转 #define BARCODEATTRIB_HUMANREAD 0x1000 //显示人识别字符 #define BARCODEATTRIB_CHECKNUM 0x0004 //需要校验码 #define BARCODEATTRIB_PDF417_SHORTMODE 0x0040 //PDF417为缩短模式 #define BARCODEATTRIB_DATAMTX_DOTMODE 0x0080 //DataMtrix为点模式 #define BARCODEATTRIB_CIRCLEMODE 0x0100 //自定义二维码为圆模式 #define DATAMTX_SIZEMODE_SMALLEST 0 #define DATAMTX_SIZEMODE_10X10 1 #define DATAMTX_SIZEMODE_12X12 2 #define DATAMTX_SIZEMODE_14X14 3 #define DATAMTX_SIZEMODE_16X16 4 #define DATAMTX_SIZEMODE_18X18 5 #define DATAMTX_SIZEMODE_20X20 6 #define DATAMTX_SIZEMODE_22X22 7 #define DATAMTX_SIZEMODE_24X24 8 #define DATAMTX_SIZEMODE_26X26 9 #define DATAMTX_SIZEMODE_32X32 10 #define DATAMTX_SIZEMODE_36X36 11 #define DATAMTX_SIZEMODE_40X40 12 #define DATAMTX_SIZEMODE_44X44 13 #define DATAMTX_SIZEMODE_48X48 14 #define DATAMTX_SIZEMODE_52X52 15 #define DATAMTX_SIZEMODE_64X64 16 #define DATAMTX_SIZEMODE_72X72 17 #define DATAMTX_SIZEMODE_80X80 18 #define DATAMTX_SIZEMODE_88X88 19 #define DATAMTX_SIZEMODE_96X96 20 #define DATAMTX_SIZEMODE_104X104 21 #define DATAMTX_SIZEMODE_120X120 22 #define DATAMTX_SIZEMODE_132X132 23 #define DATAMTX_SIZEMODE_144X144 24 #define DATAMTX_SIZEMODE_8X18 25 #define DATAMTX_SIZEMODE_8X32 26 #define DATAMTX_SIZEMODE_12X26 27 #define DATAMTX_SIZEMODE_12X36 28 #define DATAMTX_SIZEMODE_16X36 29 #define DATAMTX_SIZEMODE_16X48 30 //加入条码到数据库中 typedef int(*LMC1_ADDBARCODETOLIB)(TCHAR* pStr, //字符串 TCHAR* pEntName,//字符串对象名称 double dPosX, //字符左下角基点x坐标 double dPosY, //字符左下角基点y坐标 double dPosZ, //字符z坐标 int nAlign,//对齐方式0-8 int nPenNo, int bHatchText, int nBarcodeType,//条码类型 WORD wBarCodeAttrib,//条码属性 double dHeight,//整个条码的高 double dNarrowWidth,//最窄模块宽 double dBarWidthScale[4],//条宽比例 (与最窄模块宽相比) double dSpaceWidthScale[4],//空宽比例(与最窄模块宽相比) double dMidCharSpaceScale,//字符间隔比例(与最窄模块宽相比) double dQuietLeftScale,//条码左空白宽度比例(与最窄模块宽相比) double dQuietMidScale,//条码中空白宽度比例(与最窄模块宽相比) double dQuietRightScale,//条码右空白宽度比例(与最窄模块宽相比) double dQuietTopScale,//条码上空白宽度比例(与最窄模块宽相比) double dQuietBottomScale,//条码下空白宽度比例(与最窄模块宽相比) int nRow,//二维码行数 int nCol,//二维码列数 int nCheckLevel,//pdf417错误纠正级别0-8 int nSizeMode,//DataMatrix尺寸模式0-30 double dTextHeight,//人识别字符字体高度 double dTextWidth,//人识别字符字体宽度 double dTextOffsetX,//人识别字符X方向偏移 double dTextOffsetY,//人识别字符Y方向偏移 double dTextSpace,//人识别字符间距 double dDiameter, TCHAR* pTextFontName);//文本字体名称 //获取条码参数 typedef int(*LMC1_GETBARCODEPARAM)( TCHAR* pEntName,//对象名称 WORD&wBarCodeAttrib,//条码属性 int& nSizeMode,//尺寸模式 int& nCheckLevel,//错误纠正级别 int& nLangPage,//语言编码页 double& dDiameter, int&nPointTimesN,//点倍数 double& dBiDirOffset);//双向扫描补偿 //语言编码 int //Default 0 //ANSI(7Bit 1252) 437 //Latin - 1(ISO 8859 - 1) 850 //Japanese(SHIFT - JIS, 932) 932 //Korea(Hangul, 949) 949 //Simple Chinses(GB2312, 936) 936 //Trad chinese(BIG5, 950) 950 //UNICODE(UTF8) 65001 //设置条码参数 typedef int(*LMC1_SETBARCODEPARAM)(TCHAR* pEntName,//对象名称 WORD wBarCodeAttrib,//条码属性 int nSizeMode,// 尺寸模式 int nCheckLevel,//错误纠正级别 int nLangPage,//语言编码页 double dDiameter,//圆模式直径(矩形模式单元模块高) int nPointTimesN,//点倍数 double dBiDirOffset);//双向扫描补偿 #pragma endregion #pragma region IO // 读lmc1的输入端口 //输入参数: 读入的输入端口的数据 typedef int(*LMC1_READPORT)(WORD& data); // 读lmc1的输出端口 //输入参数: 读入的输出端口的数据 typedef int(*LMC1_GETOUTPORT)(WORD& data); // 写lmc1的输出端口 //输入参数: 要写到的输出端口的数据 typedef int(*LMC1_WRITEPORT)(WORD data); #pragma endregion #pragma region Hatch const int HATCHATTRIB_ALLCALC = 0x01;//全部对象整体计算 const int HATCHATTRIB_EDGE = 0x02;//绕边走一次 const int HATCHATTRIB_MINUP = 0x04;//最少起笔 const int HATCHATTRIB_BIDIR = 0x08;//双向填充 const int HATCHATTRIB_LOOP = 0x10;//环行填充 const int HATCHATTRIB_OUT = 0x20;//环行由内向外 const int HATCHATTRIB_AUTOROT = 0x40;//自动角度旋转 const int HATCHATTRIB_AVERAGELINE = 0x80;//自动分布填充线 const int HATCHATTRIB_CROSELINE = 0x400;//交叉填充 typedef int(*LMC1_GETHATCHPARAM3)(bool& bEnableContour, int nParamIndex, int& bEnableHatch, int& nPenNo, int& nHatchType, bool& bHatchAllCalc, bool& bHatchEdge, bool& bHatchAverageLine, double& dHatchAngle, double& dHatchLineDist, double& dHatchEdgeDist, double& dHatchStartOffset, double& dHatchEndOffset, double& dHatchLineReduction,//直线缩进 double& dHatchLoopDist,//环间距 int& nEdgeLoop,//环数 bool& nHatchLoopRev,//环形反转 bool& bHatchAutoRotate,//是否自动旋转角度 double& dHatchRotateAngle, bool& nHatchCross); typedef int(*LMC1_SETHATCHPARAM3)(BOOL bEnableContour,//使能轮廓本身 int nParamIndex,//填充参数序号值为1,2,3 int bEnableHatch,//使能填充 int nPenNo,//填充参数笔号 int nHatchType,//填充类型 0单向 1双向 2回形 3弓形 4弓形不反向 bool bHatchAllCalc,//是否全部对象作为整体一起计算 bool bHatchEdge,//绕边一次 bool bHatchAverageLine,//自动平均分布线 double dHatchAngle,//填充线角度 double dHatchLineDist,//填充线间距 double dHatchEdgeDist,//填充线边距 double dHatchStartOffset,//填充线起始偏移距离 double dHatchEndOffset,//填充线结束偏移距离 double dHatchLineReduction,//直线缩进 double dHatchLoopDist,//环间距 int nEdgeLoop,//环数 bool nHatchLoopRev,//环形反转 bool bHatchAutoRotate,//是否自动旋转角度 double dHatchRotateAngle,//自动旋转角度 bool bHatchCross); typedef int(*LMC1_GETHATCHENTPARAM2)(TCHAR* HatchName, bool& bEnableContour, int nParamIndex, int& bEnableHatch, bool& bContourFirst, int& nPenNo, int& nHatchType, bool& bHatchAllCalc, bool& bHatchEdge, bool& bHatchAverageLine, double& dHatchAngle, double& dHatchLineDist, double& dHatchEdgeDist, double& dHatchStartOffset, double& dHatchEndOffset, double& dHatchLineReduction,//直线缩进 double& dHatchLoopDist,//环间距 int& nEdgeLoop,//环数 bool& nHatchLoopRev,//环形反转 bool& bHatchAutoRotate,//是否自动旋转角度 double& dHatchRotateAngle, bool& bHatchCrossMode, int& dCycCount); typedef int(*LMC1_SETHATCHENTPARAM2)(TCHAR* HatchName, bool bEnableContour, int nParamIndex, int bEnableHatch, bool bContourFirst, int nPenNo, int nHatchType, bool bHatchAllCalc, bool bHatchEdge, bool bHatchAverageLine, double dHatchAngle, double dHatchLineDist, double dHatchEdgeDist, double dHatchStartOffset, double dHatchEndOffset, double dHatchLineReduction,//直线缩进 double dHatchLoopDist,//环间距 int nEdgeLoop,//环数 bool nHatchLoopRev,//环形反转 bool bHatchAutoRotate,//是否自动旋转角度 double dHatchRotateAngle, bool bHatchCrossMode, int dCycCount); typedef int(*LMC1_HATCHENT)(TCHAR* strEntName, TCHAR* strHatchEntName); typedef int(*LMC1_UNHATCHENT)(TCHAR* strHatchEntName); #pragma endregion #pragma region Font //获取当前默认的字体参数 typedef int(*LMC1_GETFONTPARAM3)(TCHAR* strFontName, //字体名称 double& dCharHeight, //字符高度 double& dCharWidth, //字体宽度 double& dCharAngle, //字体角度 double& dCharSpace, //字体间距 double& dLineSpace, //行间距 BOOL& EqualCharWidth,//空字符宽度 int& nTextAlign, //文本对齐方式 BOOL& bBold, //粗体 BOOL& bItalic); //斜体 //设置当前默认的字体参数 typedef int(*LMC1_SETFONTPARAM3)(TCHAR* strFontName, //字体名称 double dCharHeight, //字符高度 double dCharWidth, //字体宽度 double dCharAngle, //字体角度 double dCharSpace, //字体间距 double dLineSpace, //行间距 BOOL EqualCharWidth,//空字符宽度 int nTextAlign, //文本对齐方式 BOOL bBold, //粗体 BOOL bItalic );//斜体 //字体类型属性定义 #define FONTATB_JSF 0x0001 //JczSingle字型 #define FONTATB_TTF 0x0002 //TrueType字型 #define FONTATB_DMF 0x0004 //DotMatrix字型 #define FONTATB_BCF 0x0008 //BarCode字型 //字型记录 struct lmc1_FontRecord { TCHAR szFontName[256]; //字体名字 DWORD dwFontAttrib; //字体属性 }; typedef int(*LMC1_GETFONTRECORDCOUNT)(int& nFontNum); //得到当前系统支持的所有字体参数 //输入参数: 无 //输出参数: nFontNum 字体数目 //返回参数: lmc1_FontRecord* 字体记录数组 typedef lmc1_FontRecord* (*LMC1_GETALLFONTRECORD)(int Index, TCHAR*FontName, DWORD & FontAttrib); #pragma endregion #pragma region Pen //得到指定笔号对应的加工参数 typedef int(*LMC1_GETPENPARAM)( int nPenNo,//要设置的笔号(0-255) int& nMarkLoop,//加工次数 double& dMarkSpeed,//标刻次数mm/s double& dPowerRatio,//功率百分比(0-100%) double& dCurrent,//电流A int& nFreq,//频率HZ double& dQPulseWidth,//Q脉冲宽度us int& nStartTC,//开始延时us int& nLaserOffTC,//激光关闭延时us int& nEndTC,//结束延时us int& nPolyTC,//拐角延时us double& dJumpSpeed, //跳转速度mm/s int& nJumpPosTC, //跳转位置延时us int& nJumpDistTC,//跳转距离延时us double& dEndComp,//末点补偿mm double& dAccDist,//加速距离mm double& dPointTime,//打点延时 ms BOOL& bPulsePointMode,//脉冲点模式 int& nPulseNum,//脉冲点数目 double& dFlySpeed); //得到对应笔号的参数 typedef int(*LMC1_GETPENPARAM2)(int nPenNo,//要设置的笔号(0-255) int& nMarkLoop,//加工次数 double& dMarkSpeed,//标刻次数mm/s double& dPowerRatio,//功率百分比(0-100%) double& dCurrent,//电流A int& nFreq,//频率HZ double& dQPulseWidth,//Q脉冲宽度us int& nStartTC,//开始延时us int& nLaserOffTC,//激光关闭延时us int& nEndTC,//结束延时us int& nPolyTC,//拐角延时us // double& dJumpSpeed, //跳转速度mm/s int& nJumpPosTC, //跳转位置延时us int& nJumpDistTC,//跳转距离延时us double& dPointTime,//打点延时 ms int& nSpiWave,//SPI波形 BOOL& bWobbleMode,//抖动模式 double& bWobbleDiameter,//抖动直径 double& bWobbleDist);//抖动间距 //得到对应笔号的参数 typedef int(*LMC1_GETPENPARAM4)(int nPenNo,//要设置的笔号(0-255) TCHAR sPenName[256],// 笔名字,默认default int& clr,//笔颜色 BOOL& bDisableMark,//是否使能笔号,true关闭笔号不标刻 BOOL& bUseDefParam,//是否使用默认值 int& nMarkLoop,//加工次数 double& dMarkSpeed,//标刻次数mm/s double& dPowerRatio,//功率百分比(0-100%) double& dCurrent,//电流A int& nFreq,//频率HZ double& dQPulseWidth,//Q脉冲宽度us int& nStartTC,//开始延时us int& nLaserOffTC,//激光关闭延时us int& nEndTC,//结束延时us int& nPolyTC,//拐角延时us // double& dJumpSpeed, //跳转速度mm/s int& nMinJumpDelayTCUs, //最小跳转延时us int& nMaxJumpDelayTCUs,//最大跳转延时us double& dJumpLengthLimit,//跳转长的极限 double& dPointTime,//打点时间 ms BOOL& nSpiSpiContinueMode,//SPI连续模式 int& nSpiWave,// SPI波形选择 int& nYagMarkMode,// YAG优化填充模式 BOOL& bPulsePointMode,//脉冲点模式 int& nPulseNum,// 脉冲点数 BOOL& bEnableACCMode,//使能加速模式 double & dEndComp,//末点补偿 double& dAccDist,//加速距离 double& dBreakAngle,//中断角度,角度值 BOOL& bWobbleMode,//抖动模式 double & bWobbleDiameter,//抖动直径 double& bWobbleDist);//抖动间距 //设置指定笔号对应的加工参数 typedef int(*LMC1_SETPENPARAM)(int nPenNo,//要设置的笔号(0-255) int nMarkLoop,//加工次数 double dMarkSpeed,//标刻次数mm/s double dPowerRatio,//功率百分比(0-100%) double dCurrent,//电流A int nFreq,//频率HZ double dQPulseWidth,//Q脉冲宽度us int nStartTC,//开始延时us int nLaserOffTC,//激光关闭延时us int nEndTC,//结束延时us int nPolyTC,//拐角延时us // double dJumpSpeed, //跳转速度mm/s int nJumpPosTC, //跳转位置延时us int nJumpDistTC,//跳转距离延时us double dEndComp,//末点补偿mm double dAccDist,//加速距离mm double dPointTime,//打点延时 ms BOOL bPulsePointMode,//脉冲点模式 int nPulseNum,//脉冲点数目 double dFlySpeed);//飞行速度==0 //设置指定笔号对应的加工参数 typedef int(*LMC1_SETPENPARAM2)(int nPenNo,//要设置的笔号(0-255) int nMarkLoop,//加工次数 double dMarkSpeed,//标刻次数mm/s double dPowerRatio,//功率百分比(0-100%) double dCurrent,//电流A int nFreq,//频率HZ double dQPulseWidth,//Q脉冲宽度us int nStartTC,//开始延时us int nLaserOffTC,//激光关闭延时us int nEndTC,//结束延时us int nPolyTC,//拐角延时us // double dJumpSpeed, //跳转速度mm/s int nJumpPosTC, //跳转位置延时us int nJumpDistTC,//跳转距离延时us double dPointTime,//打点延时 ms int nSpiWave,//SPI激光器波形设置 BOOL bWobbleMode,//是否开启抖动功能 double bWobbleDiameter,//抖动直径 double bWobbleDist);//抖动间距 //设置对应笔号的参数 typedef int(*LMC1_SETPENPARAM4)(int nPenNo,//要设置的笔号(0-255) TCHAR* sPenName,// 笔名字,默认default int clr,//笔颜色 BOOL bDisableMark,//是否使能笔号,true关闭不标刻 BOOL bUseDefParam,//是否使用默认值 int nMarkLoop,//加工次数 double dMarkSpeed,//标刻次数mm/s double dPowerRatio,//功率百分比(0-100%) double dCurrent,//电流A int nFreq,//频率HZ double dQPulseWidth,//Q脉冲宽度us int nStartTC,//开始延时us int nLaserOffTC,//激光关闭延时us int nEndTC,//结束延时us int nPolyTC,//拐角延时us // double dJumpSpeed, //跳转速度mm/s int& nMinJumpDelayTCUs, //最小跳转延时us int nMaxJumpDelayTCUs,//最大跳转延时us double dJumpLengthLimit,//跳转长的极限 double dPointTime,//打点时间 ms BOOL nSpiSpiContinueMode,//SPI连续模式 int nSpiWave,// SPI波形选择 int nYagMarkMode,// YAG优化填充模式 BOOL bPulsePointMode,//脉冲点模式 int& nPulseNum,// 脉冲点数 BOOL bEnableACCMode,//使能加速模式 double dEndComp,//末点补偿 double dAccDist,//加速距离 double dBreakAngle,//中断角度 BOOL bWobbleMode,//抖动模式 double bWobbleDiameter,//抖动直径 double bWobbleDist);//抖动间距 #pragma endregion #pragma region Axis //复位扩展轴坐标 //输入参数: bEnAxis0 = 使能轴0 bEnAxis1 = 使能轴1 //在程序中调用扩展轴相关的函数,必须先调用lmc1_Reset来设置使能对应的轴;当扩展轴运动到极限位置时,可以用此函数复位扩展轴坐标。 typedef double(*LMC1_RESET)(BOOL bEnAxis0, BOOL bEnAxis1); //扩展轴移动到指定坐标位置 //输入参数: axis 扩展轴 0 = 轴0 1 = 轴1 // GoalPos 坐标位置 //在程序中调用lmc1_AxisMoveTo可以使扩展轴移动到指定坐标位置,扩展轴的运动速度使用设备参数里定义的最大速度。 typedef int(*LMC1_AXISMOVETO)(int axis, double GoalPos); //扩展轴校正原点 //输入参数: axis 扩展轴 0 = 轴0 1 = 轴1 //在程序中调用lmc1_AxisCorrectOrigin可以使扩展轴自动校正原点。 typedef int(*LMC1_AXISCORRECTORIGIN)(int axis); //得到扩展轴的当前坐标 //输入参数: axis扩展轴 0 = 轴0 1 = 轴1 typedef double(*LMC1_GETAXISCOOR)(int axis); //扩展轴移动到指定脉冲坐标位置 //输入参数: axis 扩展轴 0 = 轴0 1 = 轴1 // nGoalPos 脉冲坐标位置 typedef int(*LMC1_AXISMOVETOPULSE)(int axis, int nGoalPos); //得到扩展轴的当前脉冲坐标 //输入参数: axis扩展轴 0 = 轴0 1 = 轴1 typedef int(*LMC1_GETAXISCOORPULSE)(int axis); #pragma endregion #endif