This commit is contained in:
Chenwenxuan
2024-03-06 14:54:30 +08:00
commit edac2715f0
1525 changed files with 809982 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,103 @@
#ifndef LASERMARK_H
#define LASERMARK_H
#include "LaserMark_global.h"
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QDateTime>
//
#include <QString>
#include <QMessageBox>
#include <QThread>
#include <QMutex>
#include "LaserMark_global.h"
#include "MarkEzdDll.h"
#ifdef UNICODE
#define QStringToTCHAR(x) (wchar_t*) x.utf16()
#define PQStringToTCHAR(x) (wchar_t*) x->utf16()
#define TCHARToQString(x) QString::fromUtf16((x))
#define TCHARToQStringN(x,y) QString::fromUtf16((x),(y))
#else
#define QStringToTCHAR(x) x.local8Bit().constData()
#define PQStringToTCHAR(x) x->local8Bit().constData()
#define TCHARToQString(x) QString::fromLocal8Bit((x))
#define TCHARToQStringN(x,y) QString::fromLocal8Bit((x),(y))
#endif
class LASERMARK_EXPORT LaserMark : public QThread
{
Q_OBJECT
public:
LaserMark();
private:
QSqlDatabase db;
private:
HINSTANCE m_hEzdDLL;
LMC1_INITIAL lmc1_Initial;
LMC1_CLOSE lmc1_Close;
LMC1_STOPMARK lmc1_StopMark;
LMC1_LOADEZDFILE lmc1_LoadEzdFile;
LMC1_MARKENTITY lmc1_MarkEntity;
LMC1_SETDEVCFG lmc1_SetDevCfg;
LMC1_GETPENPARAM lmc1_GetPenParam;
LMC1_SETPENPARAM lmc1_SetPenParam;
LMC1_DELETEENT lmc1_DeleteEnt;
LMC1_CLEARENTLIB lmc1_ClearEntLib;
LMC1_ADDTEXTTOLIB lmc1_AddTextToLib;
LMC1_MARK lmc1_Mark;
LMC1_ISMARKING lmc1_IsMarking; //为判断是否正在标刻
LMC1_SETTEXTENTPARAM2 lmc1_SetTextEntParam2;
LMC1_SETTEXTENTPARAM4 lmc1_SetTextEntParam4;
LMC1_SETPENPARAM4 lmc1_SetPenParam4;
LMC1_SAVEENTLIBTOFILE lmc1_SaveEntLibToFile;
LMC1_SETFONTPARAM3 lmc1_SetFontParam3;
private:
QString TempMarkTitle;
bool IsMarkStatus{false};
int MarkCount{0};
int _nFreq{0};
double _dQPulseWidth{0};
private:
bool InitSQL();
bool InitLaser(QString); //QString为 ezcad2.exe所处的目录的全路径名称例如C:\WorkBook\20180528\EzCAD2\Debug
QString GetMarkTitle(QString);
//多线程打标
QMutex mutex;
protected:
void run() override;
public:
bool Init(QString); //初始化
void Start(QString,QString*,int,bool); //打标的字符 返回打标的字符 打标次数 true为自动false为手动
void Abort(); //停止打标
void SetParam(); //设置金橙子参数
bool GetMyMarkStatus(); //获取激光打标状态true为正在打标false为空闲状态
bool SetFontParam(double, double, double, int,double); //字符高度 字体宽度 字体间距 频率 脉宽
};
#endif // LASERMARK_H

Binary file not shown.

View File

@@ -0,0 +1,12 @@
#ifndef LASERMARK_GLOBAL_H
#define LASERMARK_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(LASERMARK_LIBRARY)
# define LASERMARK_EXPORT Q_DECL_EXPORT
#else
# define LASERMARK_EXPORT Q_DECL_IMPORT
#endif
#endif // LASERMARK_GLOBAL_H

View File

@@ -0,0 +1,945 @@
#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,//对齐方式08
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,//对齐方式08
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,//对齐方式08
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

Binary file not shown.