金橙子dll使用說明
1. 概述
MarkEzd.dll 是北京金橙子科技有限公司提供給用戶用于ezcad2和lmc1控制卡二次開發(fā)的動態(tài)連接庫。
MarkEzdDll.h是MarkEzd.dll中輸出的函數(shù)的頭文件。
用戶可以使用VC6.0來進行開發(fā)。
MarkEzd.dll動態(tài)鏈接庫函數(shù)的調(diào)用方法為顯示調(diào)用,顯式調(diào)用方法需要調(diào)用Windows API函數(shù)加載和釋放動態(tài)鏈接庫。
顯式調(diào)用方法如下:
1.調(diào)用Windows API函數(shù)LoadLibrary()動態(tài)加載DLL;
2.調(diào)用Windows API函數(shù)GetProcAddress()取得將要調(diào)用的DLL中函數(shù)的指針;用函數(shù)指針調(diào)用DLL中函數(shù)完成相應功能;
3.在程序結(jié)束時或不再使用DLL中函數(shù)時,調(diào)用Windows API函數(shù)FreeLibrary()釋放動態(tài)鏈接庫。
注意:調(diào)用MarkEzd.dll的程序必須放在ezcad2.exe同一個目錄下,否則MarkEzd.dll將無法正常工作;而且ezcad2.exe在運行的時候MarkEzd.dll將無法正常使用,所以在使用MarkEzd.dll時必須關閉ezcad2.exe。
2.函數(shù)說明
在MarkEzd.dll中所有函數(shù)(個別函數(shù)除外)返回值均為一個整形的通用錯誤碼
通用錯誤碼定義如下:
#define LMC1_ERR_SUCCESS 0 //成功
#define LMC1_ERR_EZCADRUN 1 //發(fā)現(xiàn)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 //當前狀態(tài)下不能執(zhí)行此操作
注意:MarkEzd.dll中所有函的TCHAR對象都必須是UNICODE字符。關于如何把項目設置為UNICODE版請參考附錄一。
函 數(shù) 名:lmc1_Initial
目 的:初始化lmc1控制卡。
語 法:int lmc1_Initial(TCHAR* strEzCadPath,BOOL bTestMode,HWND hOwenWnd);
strEzCadPath是ezcad2.exe所處的目錄的全路徑名稱;
bTestMode 指是否是測試模式
hOwenWnd 指擁有用戶輸入焦點的窗口,用于檢測用戶暫停消息。
描 述:在程序中必須首先調(diào)用lmc1_Initial,其它函數(shù)才能工作。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_Close
目 的:關閉lmc1控制卡。
語 法:int lmc1_Close();
描 述:在程序中退出時必須調(diào)用lmc1_Close來關閉lmc1控制卡。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_LoadEzdFile
目 的:打開指定的ezd文件,并清除當前數(shù)據(jù)庫中的所有對象。
語 法:int lmc1_LoadEzdFile(TCHAR* strFileName);
描 述:在程序中一般用此函數(shù)來打開一個用戶建立ezd模板文件,這樣用戶就不需要在程序中設置加工參數(shù),因為模板中的加工參數(shù)會自動導入。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_Mark
目 的:標刻當前數(shù)據(jù)庫里的所有數(shù)據(jù)。
語 法:int lmc1_Mark(BOOL bFlyMark);
bFlyMark= TRUE 使能飛動打標
描 述:在使用lmc1_LoadEzdFile載入ezd文件后即可以使用此函數(shù)開始打標加工,此函數(shù)一直等待設備加工完畢后才返回。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_ChangeTextByName
目 的:更改指定名稱的文本對象的文本內(nèi)容。
語 法:int lmc1_ChangeTextByName(TCHAR* strTextName, TCHAR* strTextNew);
strTextName 要更改內(nèi)容的文本對象的名稱
strTextNew 新的文本內(nèi)容
描 述:在使用lmc1_LoadEzdFile載入ezd文件后,在每次加工前即可以使用此函數(shù)更改指定對象的內(nèi)容。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_MarkEntity
目 的:標刻當前數(shù)據(jù)庫里的指定名稱的對象。
語 法:int lmc1_MarkEntity(TCHAR* strEntName);
描 述:在使用lmc1_LoadEzdFile載入ezd文件后即可以使用此函數(shù)開始加工指定名稱的對象,此函數(shù)一直等待設備加工完畢后才返回。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_ReadPort
目 的:讀lmc1的輸入端口。
語 法:int lmc1_ReadPort(WORD& data);
data 輸入端口的數(shù)據(jù)
描 述:在程序中調(diào)用lmc1_ReadPort來讀入當前輸入端口的數(shù)據(jù)。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_WritePort
目 的:寫lmc1的輸出端口。
語 法:int lmc1_WritePort(WORD data);
data 輸出端口的數(shù)據(jù)
描 述:在程序中調(diào)用lmc1_WritePort來輸出數(shù)據(jù)到當前輸出端口。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_GetPrevBitmap
目 的:得到當前數(shù)據(jù)庫里的所有對象的預覽圖像。
語 法:Cbitmap* lmc1_GetPrevBitmap(HWND hwnd,int nBMPWIDTH,int nBMPHEIGHT);
hwnd需要顯示當前圖像的窗口句柄
nBMPWIDTH 需要生成的圖像的像素寬度
nBMPHEIGHT需要生成的圖像的像素高度
描 述:在程序中調(diào)用lmc1_GetPrevBitmap得到當前數(shù)據(jù)庫里的所有對象的預覽圖像,可以用于更新界面顯示。
返 回 值:如果成功會返回圖像,返回值為空表示失敗
函 數(shù) 名:lmc1_SetDevCfg
目 的:設置設備參數(shù)
語 法:int lmc1_SetDevCfg();
描 述:調(diào)用lmc1_SetDevCfg會自動彈出設備參數(shù)設置對話框,用戶可以設置設備參數(shù)。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_SetHatchParam
目 的:設置當前填充參數(shù)。
語 法:int lmc1_SetHatchParam(BOOL bEnableContour,//使能輪廓本身
int bEnableHatch1,//使能填充1
int nPenNo1,//填充筆
int nHatchAttrib1,//填充屬性
double dHatchEdgeDist1,//填充線邊距
double dHatchLineDist1,//填充線間距
double dHatchStartOffset1,//填充線起始偏移距離
double dHatchEndOffset1,//填充線結(jié)束偏移距離
double dHatchAngle1,//填充線角度 (弧度值)
int bEnableHatch2,//使能填充1
int nPenNo2,//填充筆
int nHatchAttrib2,//填充屬性
double dHatchEdgeDist2,//填充線邊距
double dHatchLineDist2,//填充線間距
double dHatchStartOffset2,//填充線起始偏移距離
double dHatchEndOffset2,//填充線結(jié)束偏移距離
double dHatchAngle2);//填充線角度 (弧度值)
);
bEnableContour 是否使能輪廓
bEnableHatch1 使能填充
nPenNo1 填充筆號
nHatchAttrib1 填充屬性,填充屬性由下面幾個屬性相或組合
const int HATCHATTRIB_ALLCALC = 0x01;//全部對象作為整體一起計算
const int HATCHATTRIB_BIDIR = 0x08;//雙向填充
const int HATCHATTRIB_EDGE = 0x02;//走一次邊
const int HATCHATTRIB_LOOP = 0x10;//環(huán)形填充
dHatchEdgeDist1 填充線邊距
dHatchLineDist1 填充線間距
dHatchStartOffset1 填充線起始偏移距離
dHatchEndOffset1 填充線結(jié)束偏移距離
dHatchAngle1 填充線角度 (弧度值)
填充2參數(shù)意義同填充1參數(shù)一樣。
描 述:在程序中調(diào)用lmc1_SetHatchParam來設置當前填充參數(shù),當下次向數(shù)據(jù)庫添加對象使能填充時,即使用此填充參數(shù)。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_SetFontParam
目 的:設置當前默認的字體參數(shù)。
語 法:int lmc1_SetFontParam(TCHAR* strFontName
double dCharHeight,
double dCharWidth,
double dCharAngle,
double dCharSpace,
double dLineSpace,
BOOL bEqualCharWidth);
StrFontName 字體名稱
dCharHeight 字符高度
dCharWidth 字符寬度
dCharAngle 字符傾角
dCharSpace 字符間距
dLineSpace 行間距
bEqualCharWidth 等字符寬度模式
描 述:在程序中調(diào)用lmc1_ SetFontParam來設置當前字體參數(shù),當下次向數(shù)據(jù)庫添加文本對象時即使用此字體參數(shù)來生成文本對象。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_GetPenParam
目 的:得到對應筆號的參數(shù)。
語 法:int lmc1_GetPenParam(int nPenNo,//要設置的筆號(0-255) int& nMarkLoop,//加工次數(shù)
double& dMarkSpeed,//標刻次數(shù)mm/s
double& dPowerRatio,//功率百分比(0-100%)
double& dCurrent,//電流A
int& nFreq,//頻率HZ
int& nQPulseWidth,//Q脈沖寬度us
int& nStartTC,//開始延時us
int& nLaserOffTC,//激光關閉延時us
int& nEndTC,//結(jié)束延時us
int& nPolyTC,//拐角延時us //
double& dJumpSpeed, //跳轉(zhuǎn)速度mm/s
int& nJumpPosTC, //跳轉(zhuǎn)位置延時us
int& nJumpDistTC,//跳轉(zhuǎn)距離延時us
double& dEndComp,//末點補償mm
double& dAccDist,//加速距離mm
double& dPointTime,//打點延時 ms
BOOL& bPulsePointMode,//脈沖點模式
int& nPulseNum,//脈沖點數(shù)目
double& dFlySpeed);//流水線速度
描 述:在程序中調(diào)用lmc1_GetPenParam來讀出數(shù)據(jù)庫中對應筆號的參數(shù)。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_SetPenParam
目 的:設置設備參數(shù)
語 法:int lmc1_SetPenParam(int nPenNo,//要設置的筆號(0-255)
int nMarkLoop,//加工次數(shù)
double dMarkSpeed,//標刻次數(shù)mm/s
double dPowerRatio,//功率百分比(0-100%)
double dCurrent,//電流A
int nFreq,//頻率HZ
int nQPulseWidth,//Q脈沖寬度us
int nStartTC,//開始延時us
int nLaserOffTC,//激光關閉延時us
int nEndTC,//結(jié)束延時us
int nPolyTC,//拐角延時us //
double dJumpSpeed, //跳轉(zhuǎn)速度mm/s
int nJumpPosTC, //跳轉(zhuǎn)位置延時us
int nJumpDistTC,//跳轉(zhuǎn)距離延時us
double dEndComp,//末點補償mm
double dAccDist,//加速距離mm
double dPointTime,//打點延時 ms
BOOL bPulsePointMode,//脈沖點模式
int nPulseNum, //脈沖點數(shù)目
double dFlySpeed); //流水線速度s
描 述:在程序中調(diào)用lmc1_SetPenParam來設置數(shù)據(jù)庫中對應筆號的參數(shù)。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_ClearEntLib
目 的:清除對象庫里所有對象。
語 法:int lmc1_ClearEntLib();
描 述:在程序中調(diào)用lmc1_ ClearEntLib來清除對象庫里所有對象。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_AddTextToLib
目 的:加入新文本到數(shù)據(jù)庫中。
語 法:int lmc1_AddTextToLib(TCHAR* pStr,
TCHAR* pEntName,
double dPosX,
double dPosY,
double dPosZ,
int nAlign
double dTextRotateAngle,
int nPenNo,
BOOL bHatchText);//是否填充文本對象
pStr 要添加的字符串
pEntName 字符串對象名稱
dPosX 字符串的左下角基點的x坐標
dPosY 字符串的左下角基點的y坐標
dPosZ 字符串對象的z坐標
nAlign 對齊方式0-8
//對齊方式時數(shù)字代表的意義
// 6 --- 5 --- 4
// | |
// | |
// 7 8 3
// | |
// | |
// 0 ----- 1 --- -- 2
dTextRotateAngle 字符串繞基點旋轉(zhuǎn)的角度值(弧度值)
nPenNo 文本對象使用的筆號
bHatchText 是否填充文本對象
描 述:在程序中調(diào)用lmc1_AddTextToLib加入新文本對象到數(shù)據(jù)庫中。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_AddCurveToLib
目 的:加入曲線到數(shù)據(jù)庫中。
語 法:int lmc1_AddCurveToLib(double ptBuf[][2],//曲線頂點數(shù)組
int ptNum,//曲線頂點數(shù)
TCHAR* pEntName,//曲線對象名稱
int nPenNo,//曲線對象使用的筆號
int bHatch);//曲線是否填充
描 述:在程序中調(diào)用lmc1_AddCurveToLib加入曲線對象到數(shù)據(jù)庫中。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_AddFileToLib
目 的:加入指定文件到數(shù)據(jù)庫中。
語 法:int lmc1_AddFileToLib(TCHAR* pFileName, //文件名稱
TCHAR* pEntName,// 文件對象名稱
double dPosX, //文件左下角基點x坐標
double dPosY, //文件左下角基點y坐標
double dPosZ, //文件z坐標
int nAlign,//對齊方式0-8
double dRatio,//文件縮放比例
int nPenNo,//對象使用的加工參數(shù)
BOOL bHatchFile)
pFileName要添加的文件名稱,支持的文件格式有ezd,dxf,dst,
plt,ai,bmp,jpg,tga,png,gif,tiff等
pEntName 文件對象名稱
dPosX 文件的左下角基點的x坐標
dPosY 文件的左下角基點的y坐標
dPosZ 文件對象的z坐標
nAlign 對齊方式0-8
dRatio 文件縮放比例
nPenNo 文件對象使用的筆號
bHatchFile 是否填充文件對象
描 述:在程序中調(diào)用lmc1_AddFileToLib加入新文件對象到數(shù)據(jù)庫中。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_AddBarCodeToLib
目 的:增加條碼對象到數(shù)據(jù)庫里。
語 法:int lmc1_AddBarCodeToLib((TCHAR* pStr,
TCHAR* pEntName,
double dPosX,
double dPosY,
double dPosZ,
int nAlign,
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,
int nSizeMode,
double dTextHeight,
double dTextWidth,
double dTextOffsetX,
double dTextOffsetY,
double dTextSpace,
TCHAR* pTextFontName);
pStr 條碼表示的字符串
pEntName 條碼對象名稱
dPosX, 條碼左下角基點x坐標
dPosY 條碼左下角基點y坐標
dPosZ 條碼z坐標
nAlign, 對齊方式0-8
nPenNo 使用的筆號
bHatchText 是否填充條碼
nBarcodeType 條碼類型
#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
wBarCodeAttrib 條碼屬性
#define BARCODEATTRIB_REVERSE 0x0008 //條碼反轉(zhuǎn)
#define BARCODEATTRIB_HUMANREAD 0x1000 //顯示人識別字符
#define BARCODEATTRIB_CHECKNUM 0x0004 //需要校驗碼
#define BARCODEATTRIB_PDF417_SHORTMODE 0x0040 //PDF417為縮短模式
#define BARCODEATTRIB_DATAMTX_DOTMODE 0x0080 //DataMtrix為點模式
dHeight 整個條碼的高
dNarrowWidth 最窄模塊寬
dBarWidthScale 條寬比例(與最窄模塊寬相比)
dSpaceWidthScale 空寬比例(與最窄模塊寬相比)
dMidCharSpaceScale 字符間隔比例(與最窄模塊寬相比)
dQuietLeftScale 條碼左空白寬度比例(與最窄模塊寬相比)
dQuietMidScale 條碼中空白寬度比例(與最窄模塊寬相比)
dQuietRightScale 條碼右空白寬度比例(與最窄模塊寬相比)
dQuietTopScale 條碼上空白寬度比例(與最窄模塊寬相比)
dQuietBottomScale 條碼下空白寬度比例(與最窄模塊寬相比) nRow 二維碼行數(shù)
nCol 二維碼列數(shù)
nCheckLevel,//pdf417錯誤糾正級別0-8
nSizeMode,//DataMatrix尺寸模式0-30
#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
dTextHeight人識別字符字體高度
dTextWidth人識別字符字體寬度
dTextOffsetX人識別字符X方向偏移
dTextOffsetY 人識別字符Y方向偏移
dTextSpace 人識別字符間距
pTextFontName 文本字體名稱
描 述:在程序中調(diào)用lmc1_ AddBarCodeToLib增加條碼對象到數(shù)據(jù)庫里。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_SetRotateParam
目 的:設置旋轉(zhuǎn)變換參數(shù)。
語 法:int lmc1_SetRotateParam(double dCenterX,double dCenterY,double dRotateAng);
dCenterX 旋轉(zhuǎn)中心x坐標
dCenterY 旋轉(zhuǎn)中心y坐標
dRotateAng 旋轉(zhuǎn)角度(弧度值)
描 述:在程序中調(diào)用lmc1_ SetRotateParam來設置旋轉(zhuǎn)變換參數(shù),使數(shù)據(jù)庫中所有對象繞指定中心旋轉(zhuǎn)。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_AxisMoveTo
目 的:擴展軸移動到指定坐標位置。
語 法:int lmc1_AxisMoveTo(int axis,double GoalPos);
axis 指定要運動的擴展軸號 0 = 軸0 1 = 軸1
GoalPos 坐標絕對位置
描 述:在程序中調(diào)用lmc1_ AxisMoveTo可以使擴展軸移動到指定坐標位置,擴展軸的運動速度使用設備參數(shù)里定義的最大速度。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_AxisCorrectOrigin
目 的:擴展軸校正原點。
語 法:int lmc1_AxisCorrectOrigin(int axis);
axis 指定要校正原點的擴展軸號 0 = 軸0 1 = 軸1
描 述:在程序中調(diào)用lmc1_ AxisCorrectOrigin可以使擴展軸自動校正原點。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_GetAxisCoor
目 的:得到擴展軸的當前坐標。
語 法:int lmc1_GetAxisCoor(int axis);
axis 指定的擴展軸號 0 = 軸0 1 = 軸1
描 述:在程序中調(diào)用lmc1_ GetAxisCoor得到擴展軸的當前坐標。
返 回 值:擴展軸的當前坐標
函 數(shù) 名:lmc1_Reset
目 的:復位擴展軸坐標。
語 法:int lmc1_Reset(BOOL bEnAxis0 , BOOL bEnAxis1);
bEnAxis0 是否使能擴展軸號 0
bEnAxis1 是否使能擴展軸號 1
描 述:在程序中調(diào)用擴展軸相關的函數(shù),必須先調(diào)用lmc1_Reset來設置使能對應的軸,當擴展軸運動到極限位置時,可以用此函數(shù)復位擴展軸坐標。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_GetAllFontRecord
目 的:得到當前系統(tǒng)支持的所有字體參數(shù)。
語 法:lmc1_FontRecord* lmc1_GetAllFontRecord(int& nFontNum);
nFontNum 字體數(shù)目
//字體類型屬性定義
#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; //字體屬性
};
描 述:得到當前系統(tǒng)支持的所有字體參數(shù)。
返 回 值:字型記錄數(shù)組指針
函 數(shù) 名:lmc1_SaveEntLibToFile
目 的:保存當前數(shù)據(jù)庫里所有對象到指定ezd文件里。
語 法:int lmc1_SaveEntLibToFile(TCHAR* strFileName);
strFileName ezd文件名稱
描 述:保存當前數(shù)據(jù)庫里所有對象到指定ezd文件里。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_GetEntSize
目 的:得到指定對象的最大最小坐標。
語 法:int lmc1_GetEntSize(TCHAR* pEntName,
double& dMinx,
double& dMiny,
double& dMaxx,
double& dMaxy ,
double& dZ);
pEntName 對象名稱
dMinx 最小x坐標
dMiny 最小y坐標
dMaxx 最大x坐標
dMaxy 最大y坐標
dZ 對象的Z 坐標
描 述:得到指定對象的最大最小坐標。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_MoveEnt
目 的:指定對象移動相對位置。
語 法:int lmc1_GetEntSize(TCHAR* pEntName,
double dMovex,
double dMovey);
pEntName 對象名稱
dMovex 對象移動的x坐標
dMovey 對象移動的y坐標
描 述:指定對象移動相對位置。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_RedLightMark
目 的:標刻一次紅光顯示框。
語 法:int lmc1_RedLightMark();
描 述:標刻一次紅光顯示框。
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_MarkLine
目 的:標刻指定線段。
語 法:int lmc1_MarkLine(double x1,
double y1
double x2,
double y2,
int pen);
x1,y1起點坐標
x2y2終點坐標
pen 使用的筆號
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_MarkPoint
目 的:標刻指定點。
語 法:int lmc1_MarkPoint(double x,
double y
double delay,
int pen);
x,y點坐標
delay打點時間
pen 使用的筆號
描 述:在指定位置打點
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_GetCurCoor
目 的:得到當前振鏡坐標。
語 法:int lmc1_GetCurCoor(double& x,
double& y);
x,y點坐標
delay打點時間
pen 使用的筆號
描 述:得到當前振鏡坐標
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_GetEntityCount
目 的:得到當前數(shù)據(jù)庫中的對象總數(shù)。
語 法:int lmc1_GetEntityCount();
描 述:得到當前數(shù)據(jù)庫中的對象總數(shù)
返 回 值:數(shù)據(jù)庫內(nèi)對象總數(shù)
函 數(shù) 名:lmc1_GetEntityName
目 的:得到指定序號的對象名稱。
語 法:int lmc1_GetEntityName(int nEntityIndex,
TCHAR szEntName[256]);
nEntityIndex指定序號,范圍值為 0-對象總數(shù)(對象總數(shù)由函數(shù)lmc1_GetEntityCount得到)
szEntName得到的對象名稱
描 述:得到指定序號的對象名稱
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_AddPointToLib
目 的:向數(shù)據(jù)庫添加一組點對象。
語 法:int lmc1_AddPointToLib(double[,] PtBuf,
int ptNum,
string strEntName,
int nPenNo
);
PtBuf點位置的二維數(shù)組,第一為必須為2,如double[n,2]
ptNum點位置的個數(shù)
szEntName得到的對象名稱
nPenNo添加點的筆號
描 述:向數(shù)據(jù)庫添加一組點對象
返 回 值:通用錯誤碼
函 數(shù) 名:lmc1_ StopMark
目 的:停止標刻
語 法:int lmc1_ StopMark();
描 述:調(diào)用lmc1_ StopMark會停止標刻。
返 回 值:通用錯誤碼
3.開發(fā)步驟
下面我們結(jié)合一個實例來講解如何進行二次開發(fā)。
客戶要求在一個矩形工件中心加工一行文本(如下圖所示),每個工件要加工的文本都必須從網(wǎng)絡服務器上去在線查詢獲得。
用戶要進行二次開發(fā)一般的步驟如下:
1. 先用ezcad2建立一個模板文件test.ezd,然后新建一個文本對象,把文本對象命名為”name”。然后調(diào)節(jié)文本大小,位置和加工參數(shù)使加工效果達到客戶要求,此時保存文件并退出ezcad2。
2. 編寫專用軟件調(diào)用MarkEzd.dll動態(tài)鏈接庫
第一步:.動態(tài)加載MarkEzd.dll
HINSTANCE hEzdDLL = LoadLibrary(_T("MarkEzd.dll"));
第二步:.取得將要調(diào)用的DLL中函數(shù)的指針
lmc1_Initial=(LMC1_INITIAL)GetProcAddress(hEzdDLL, _T("lmc1_Initial"));
lmc1_Close=(LMC1_CLOSE)GetProcAddress(hEzdDLL, _T("lmc1_Close")); lmc1_LoadEzdFile=(LMC1_LOADEZDFILE)GetProcAddress(hEzdDLL,_T("lmc1_LoadEzdFile"));
lmc1_Mark=(LMC1_MARK)GetProcAddress(hEzdDLL,_T("lmc1_Mark"));
lmc1_ChangeTextByName=(LMC1_CHANGETEXTBYNAME)GetProcAddress(hEzdDLL,_T("lmc1_ChangeTextByName"));
第三步:用函數(shù)指針調(diào)用DLL中函數(shù)完成相應功能
1)初始化lmc1控制卡 lmc1_Initial()
2)打開test.ezd lmc1_LoadEzdFile(_T(“test.ezd”))。
3)從網(wǎng)絡服務器上去在線查詢獲得要加工的文本 (需要用戶自己編寫這段程序)
4)更新更改指定名稱的文本對象的文本內(nèi)容
假設上一步取得的文本是“1234567”
lmc1_ChangeTextByName(_T(“name”),_T(“1234567”) );
5)調(diào)用lmc1_Mark加工
6)如果還要加工則返回第3步繼續(xù)。
7)關閉lmc1控制卡 lmc1_Close();
第四步:
調(diào)用Windows API函數(shù)釋放動態(tài)鏈接庫。
FreeLibrary(hEzdDLL)
附錄一:如何把VC項目設置為 UNICODE版
1. 在安裝visual studio的時候 在安裝界面上options選項里上選擇如圖選項
2. 點擊changeoption選項,選擇如圖,然后點擊change option 選擇如圖
3. 點擊change option選項,選擇如圖
點擊change option選擇如圖,然后點擊ok按鈕。
點擊菜單project->Settings彈出項目設置對話框,點擊C/C++屬性頁,在Preprocessor definitions一欄中加入UNICODE字符串,去除MCBS字符串。
1. 點擊Link屬性頁,在Category一欄中選擇Output,然后在Entry-point symbol一欄中加入wWinMainCRTStartup字符串
2. 把項目中所有源碼中的char改成TCHAR
3. 把所有用“…”包含的字符串改成_T(“ … ”)
4. 重新編譯即可
本文鏈接:http://91840.cn/news/861.html 轉(zhuǎn)載需授權!