1. 学习C++基本语法
    C++教程从零到一
  2. 学习Qt
    Qt从入门到实战
  3. 学习动态调用动态链接库,观看EZCAD2开发者手册
    3.1 调用Windows API函数LoadLibrary()动态加载DLL;
    3.2 调用Windows API函数GetProcAddress()取得将要调用的DLL中函数的指
    针;用函数指针调用DLL中函数完成相应功能;
    3.3 在程序结束时或不再使用DLL中函数时,调用Windows API函数
    FreeLibrary()释放动态链接库。
    注意:调用MarkEzd.dll的程序必须放在ezcad2.exe同一个目录下,否则MarkEzd.dll将无法正常工作;而且ezcad2.exe在运行的时候MarkEzd.dll将无法正常使用,所以在使用MarkEzd.dll时必须关闭ezcad2.exe。
    首先要把MarkEzdDll.h文件加入头文件

    再创建lmc1.h和lmc1.cpp文件
    lmc1.h中声明变量
#pragma once
#include "MarkEzdDll.h"class LMC1
{public:LMC1();~LMC1();HINSTANCE m_hEzdDLL;LMC1_INITIAL       lmc1_Initial;LMC1_INITIAL2       lmc1_Initial2;LMC1_CLOSE         lmc1_Close;LMC1_STOPMARK      lmc1_StopMark;LMC1_LOADEZDFILE   lmc1_LoadEzdFile;LMC1_MARK          lmc1_Mark;LMC1_MARKENTITY    lmc1_MarkEntity;LMC1_ISMARKING      lmc1_IsMarking;LMC1_SETBARCODEPARAM  lmc1_SetBarcodeParam;LMC1_RESET  lmc1_Reset;LMC1_AXISMOVETOPULSE  lmc1_AxisMoveToPulse;LMC1_GETAXISCOORPULSE  lmc1_GetAxisCoorPulse;LMC1_SETDEVCFG2  lmc1_SetDevCfg2;LMC1_GETENTITYCOUNT  lmc1_GetEntityCount;LMC1_REDLIGHTMARK  lmc1_RedLightMark;LMC1_GETBARCODEPARAM   lmc1_GetBarcodeParam;LMC1_READPORT  lmc1_ReadPort;LMC1_GETOUTPORT lmc1_GetOutPort;LMC1_WRITEPORT lmc1_WritePort;LMC1_UNGROUPENT2 lmc1_UnGroupEnt2;LMC1_UNGROUPENT lmc1_UnGroupEnt;LMC1_SETDEVCFG     lmc1_SetDevCfg;LMC1_GROUPENT2    lmc1_GroupEnt2;LMC1_GETPENPARAM   lmc1_GetPenParam;LMC1_SETPENPARAM   lmc1_SetPenParam;LMC1_CLEARENTLIB   lmc1_ClearEntLib;LMC1_ADDTEXTTOLIB  lmc1_AddTextToLib;LMC1_ADDFILETOLIB  lmc1_AddFileToLib;LMC1_ADDCURVETOLIB  lmc1_AddCurveToLib;LMC1_ADDCIRCLETOLIB  lmc1_AddCircleToLib;LMC1_ADDBARCODETOLIB   lmc1_AddBarCodeToLib;LMC1_CHANGETEXTBYNAME  lmc1_ChangeTextByName;LMC1_AXISMOVETO        lmc1_AxisMoveTo;LMC1_AXISCORRECTORIGIN lmc1_AxisCorrectOrigin;LMC1_GETAXISCOOR       lmc1_GetAxisCoor;LMC1_SAVEENTLIBTOFILE  lmc1_SaveEntLibToFile;LMC1_GETALLFONTRECORD  lmc1_GetAllFontRecord;LMC1_MOVEENT lmc1_MoveEnt;
};

lmc1.cpp中获取句柄

#include "lmc1.h"
#include <iostream>
using namespace std;
LMC1::LMC1()
{//防止野指针m_hEzdDLL = NULL;//赋予句柄m_hEzdDLL = LoadLibrary(_T("MarkEzd.dll"));//获取句柄出错检验if (m_hEzdDLL == NULL){cout << "找不到MarkEzd.dll文件" << endl;}else{lmc1_Initial = (LMC1_INITIAL)GetProcAddress(m_hEzdDLL, "lmc1_Initial");if (lmc1_Initial == NULL){cout << "lmc1_Initial接口加载失败" << endl;}lmc1_Initial2 = (LMC1_INITIAL2)GetProcAddress(m_hEzdDLL, "lmc1_Initial2");if (lmc1_Initial == NULL){cout << "lmc1_Initial2接口加载失败" << endl;}lmc1_Close = (LMC1_CLOSE)GetProcAddress(m_hEzdDLL, "lmc1_Close");if (lmc1_Initial == NULL){cout << "lmc1_Initial2接口加载失败" << endl;}lmc1_SetDevCfg = (LMC1_SETDEVCFG)GetProcAddress(m_hEzdDLL, "lmc1_SetDevCfg");if (lmc1_Initial == NULL){cout << "lmc1_SetDevCfg接口加载失败" << endl;}lmc1_Mark = (LMC1_MARK)GetProcAddress(m_hEzdDLL, "lmc1_Mark");if (lmc1_Initial == NULL){cout << "lmc1_Mark接口加载失败" << endl;}lmc1_IsMarking = (LMC1_ISMARKING)GetProcAddress(m_hEzdDLL, "lmc1_IsMarking");if (lmc1_Initial == NULL){cout << "lmc1_IsMarking接口加载失败" << endl;}lmc1_StopMark = (LMC1_STOPMARK)GetProcAddress(m_hEzdDLL, "lmc1_StopMark");if (lmc1_Initial == NULL){cout << "lmc1_StopMark接口加载失败" << endl;}lmc1_SetBarcodeParam = (LMC1_SETBARCODEPARAM)GetProcAddress(m_hEzdDLL, "lmc1_SetBarcodeParam");if (lmc1_SetBarcodeParam == NULL){cout << "lmc1_SetBarcodeParam接口加载失败" << endl;}lmc1_LoadEzdFile = (LMC1_LOADEZDFILE)GetProcAddress(m_hEzdDLL, "lmc1_LoadEzdFile");if (lmc1_LoadEzdFile == NULL){cout << "lmc1_LoadEzdFile接口加载失败" << endl;}lmc1_SaveEntLibToFile = (LMC1_SAVEENTLIBTOFILE)GetProcAddress(m_hEzdDLL, "lmc1_SaveEntLibToFile");if (lmc1_SaveEntLibToFile == NULL){cout << "lmc1_SaveEntLibToFile接口加载失败" << endl;}lmc1_SetPenParam = (LMC1_SETPENPARAM)GetProcAddress(m_hEzdDLL, "lmc1_SetPenParam");if (lmc1_SetPenParam == NULL){cout << "lmc1_SetPenParam接口加载失败" << endl;}lmc1_GetPenParam = (LMC1_GETPENPARAM)GetProcAddress(m_hEzdDLL, "lmc1_GetPenParam");if (lmc1_GetPenParam == NULL){cout << "lmc1_GetPenParam接口加载失败" << endl;}lmc1_ReadPort = (LMC1_READPORT)GetProcAddress(m_hEzdDLL, "lmc1_ReadPort");if (lmc1_ReadPort == NULL){cout << "lmc1_ReadPort接口加载失败" << endl;}lmc1_GetOutPort = (LMC1_GETOUTPORT)GetProcAddress(m_hEzdDLL, "lmc1_GetOutPort");if (lmc1_GetOutPort == NULL){cout << "lmc1_GetOutPort接口加载失败" << endl;}lmc1_WritePort = (LMC1_WRITEPORT)GetProcAddress(m_hEzdDLL, "lmc1_WritePort");if (lmc1_WritePort == NULL){cout << "lmc1_WritePort接口加载失败" << endl;}lmc1_Reset = (LMC1_RESET)GetProcAddress(m_hEzdDLL, "lmc1_Reset");if (lmc1_Reset == NULL){cout << "lmc1_Reset接口加载失败" << endl;}lmc1_AxisCorrectOrigin = (LMC1_AXISCORRECTORIGIN)GetProcAddress(m_hEzdDLL, "lmc1_AxisCorrectOrigin");if (lmc1_AxisCorrectOrigin == NULL){cout << "lmc1_AxisCorrectOrigin接口加载失败" << endl;}lmc1_AxisMoveTo = (LMC1_AXISMOVETO)GetProcAddress(m_hEzdDLL, "lmc1_AxisMoveTo");if (lmc1_AxisCorrectOrigin == NULL){cout << "lmc1_AxisMoveTo接口加载失败" << endl;}lmc1_AxisMoveToPulse = (LMC1_AXISMOVETOPULSE)GetProcAddress(m_hEzdDLL, "lmc1_AxisMoveToPulse");if (lmc1_AxisMoveToPulse == NULL){cout << "lmc1_AxisMoveToPulse接口加载失败" << endl;}lmc1_GetAxisCoor = (LMC1_GETAXISCOOR)GetProcAddress(m_hEzdDLL, "lmc1_GetAxisCoor");if (lmc1_GetAxisCoor == NULL){cout << "lmc1_GetAxisCoor接口加载失败" << endl;}lmc1_GetAxisCoorPulse = (LMC1_GETAXISCOORPULSE)GetProcAddress(m_hEzdDLL, "lmc1_GetAxisCoorPulse");if (lmc1_GetAxisCoor == NULL){cout << "lmc1_GetAxisCoor接口加载失败" << endl;}lmc1_SetDevCfg2 = (LMC1_SETDEVCFG2)GetProcAddress(m_hEzdDLL, "lmc1_SetDevCfg2");if (lmc1_GetAxisCoor == NULL){cout << "lmc1_SetDevCfg2接口加载失败" << endl;}lmc1_GetEntityCount = (LMC1_GETENTITYCOUNT)GetProcAddress(m_hEzdDLL, "lmc1_GetEntityCount");if (lmc1_GetAxisCoor == NULL){cout << "lmc1_GetEntityCount接口加载失败" << endl;}lmc1_RedLightMark = (LMC1_REDLIGHTMARK)GetProcAddress(m_hEzdDLL, "lmc1_RedLightMark");if (lmc1_RedLightMark == NULL){cout << "lmc1_RedLightMark接口加载失败" << endl;}lmc1_ClearEntLib = (LMC1_CLEARENTLIB)GetProcAddress(m_hEzdDLL, "lmc1_ClearEntLib");if (lmc1_ClearEntLib == NULL){cout << "lmc1_ClearEntLib接口加载失败" << endl;}lmc1_AddBarCodeToLib = (LMC1_ADDBARCODETOLIB)GetProcAddress(m_hEzdDLL, "lmc1_AddBarCodeToLib");if (lmc1_AddBarCodeToLib == NULL){cout << "lmc1_AddBarCodeToLib接口加载失败" << endl;}lmc1_GetBarcodeParam = (LMC1_GETBARCODEPARAM)GetProcAddress(m_hEzdDLL, "lmc1_GetBarcodeParam");if (lmc1_GetBarcodeParam == NULL){cout << "lmc1_GetBarcodeParam接口加载失败" << endl;}lmc1_ChangeTextByName = (LMC1_CHANGETEXTBYNAME)GetProcAddress(m_hEzdDLL, "lmc1_ChangeTextByName");if (lmc1_ChangeTextByName == NULL){cout << "lmc1_ChangeTextByName接口加载失败" << endl;}}}LMC1::~LMC1()
{FreeLibrary(m_hEzdDLL);
}

最后在主文件中调用

//示例#include <iostream>
#include <string>
#include "MarkEzdDll.h"
#include <tchar.h>
#include <atlstr.h>
#include "lmc1.h"
using namespace std;//继承于LMC1类
class TestDLL:LMC1 {public:void ezd_text();
};
void TestDLL::ezd_text() {//获得MarkEzd.dll句柄m_hEzdDLL = LoadLibrary(_T("MarkEzd.dll"));//输出调用是否出错cout << m_hEzdDLL << endl;//EzCad2.exe和dll以及配置文件都要在一个目录下//定义一个变量存储这个目录TCHAR strEzCadPath[256];//传入目录参数TCHAR _strEzCadPath[256] = _T("C:\\Users\\ADVANTECH\\Desktop\\build-QRcode-Desktop_Qt_5_14_2_MSVC2017_32bit-Debug\\debug");//调用初始化函数并输出返回值//返回值为错误号,具体定义见MarkEzdDll.h文件int nErr = lmc1_Initial2(_strEzCadPath, 0);//初始化lmc1控制卡cout << nErr << endl;//调用加载函数句柄lmc1_LoadEzdFile = (LMC1_LOADEZDFILE)GetProcAddress(m_hEzdDLL, "lmc1_LoadEzdFile");//传入打标ezd文件位置TCHAR szFile[256] = _T("C:\\Users\\ADVANTECH\\Desktop\\15-CODE.ezd");//调用加载函数加载文件并输出返回值nErr = lmc1_LoadEzdFile(szFile);cout << nErr << endl;//调用标刻函数句柄lmc1_Mark = (LMC1_MARK)GetProcAddress(m_hEzdDLL, "lmc1_Mark");cout << lmc1_Mark << endl;//调用标刻函数并输出返回值nErr = lmc1_Mark(0);cout << nErr << endl;//调用关闭函数句柄lmc1_Close = (LMC1_CLOSE)GetProcAddress(m_hEzdDLL, "lmc1_Close");//关闭并输出返回值nErr = lmc1_Close();cout << nErr << endl;//释放句柄FreeLibrary(m_hEzdDLL);
}int main(){//在主函数中调用TestDLL td;td.ezd_text();return 0;
}

以上为一个简单的动态调用动态链接库的流程,具体开发要根据实际需求来编写。
4. 学习Qt创建TCP通信
Qt创建TCP通信
这是一个比较长的课程,只看其中创建TCP通信的几节课就可以,不过若是对MFC,数据库感兴趣也可以观看。
有需要要学习modbus-TCP通信的话,可以阅读《MODBUS软件开发实战指南》

参考文章:金橙子打标卡二次开发应用

金橙子打标软件学习流程相关推荐

  1. 基于Qt的金橙子打标卡二次开发

    激光加工行业中经常会用到不规则图形的加工,这时用金橙子的软件就不能满足我们的需求,需要对金橙子软件进行二次开发,在金橙子开发Demo中只有基于MFC的例子和C#的例子. 为把架构做成硬件无关,先定义一 ...

  2. 视觉打标软件 在线视觉打标系统 1.金橙子控制板卡 2.自主研发的定位系统

    视觉打标软件 在线视觉打标系统 1.金橙子控制板卡 2.自主研发的定位系统 3.操作界面简洁,易上手 4.标刻精度高,误差正负0.02 注:该系统属于本人开发和维护 ID:99100067460474 ...

  3. 金橙子软件不锈钢打黑_什么是锈? 安全,快速,简便的软件开发

    金橙子软件不锈钢打黑 快速,安全,易于编写-选择任意两个. 长期以来,这一直是软件开发的状态. 强调便利性和安全性的语言往往很慢(例如Python ). 强调性能的语言往往很难使用,并且很容易让您大吃 ...

  4. 软件开发流程--学习笔记

    软件开发流程--学习笔记 背景 产生原因及作用 个人理解 软件开发流程 需求 需求调研 需求分析 需求确认 设计 概要设计 详细设计 编码 测试 交付 维护 知识拓展 软件开发生命周期(SDLC) 软 ...

  5. IOS学习之appStore上传苹果应用程序软件发布流程

    原文地址:appStore上传苹果应用程序软件发布流程 兄弟们:最新的界面图片已经更新. 我也很忙,问问题的话尽量有个大概的了解,别问太多问题,我是个屌丝,要工作赚钱. 首先确定帐号是否能发布, ht ...

  6. SAMLight二次开发,打标软件定制,激光软件定制,视觉定位

    承接SAMLight二次开发,金橙子二次开发,以及提供各种定制化的激光打标机,激光切割机的软件解决方案,如视觉打标,视觉定位打标机等. 联系QQ616180284 转载于:https://www.cn ...

  7. 软件开发流程管理中的6个重点

     1.需求的确定 充分了解用户真实需求,与用户保持沟通交流:需求文档需详尽.准确,明确功能和客户期望:确保需求的合理性.完整性和可行性,并对需求进行优先级排序. 软件开发流程管理中的6个重点  2.设 ...

  8. 工具类软件操作手册_全套广联达软件学习资料合集:教程+实例讲解+操作手册,一文搞定...

    要学习并掌握好算量软件,不仅仅需要软件知识,还需要各种造价相关知识,只有精通软件及造价知识,才能大大的提高算量的速度及准确度. 一个算量的高手掌握的不单是软件操作技术,还要掌握的是造价的基础知识,你要 ...

  9. (6)Vivado软件开发流程(第2天)

    (6)Vivado软件开发流程(第2天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Vivado软件开发流程(第2天) 5)技术交流 6)参考资料 2 FPG ...

最新文章

  1. CNN如何用于NLP任务?一文简述文本分类任务的7个模型
  2. 广东省普通高中计算机会考,广东会考网
  3. C++的三大特性:封装,继承,多态
  4. 2017.10.25笔记3
  5. 虚拟机VMware12下安装windows7 x64系统使用教程
  6. 【推荐系统入门】一窥推荐系统的原理
  7. 线程的生命周期和状态控制
  8. CVPR 2019审稿排名第一满分论文:让机器人也能「问路」的视觉语言导航新方法...
  9. markdown单元格快速合并(不用自己写html代码)
  10. 查询SQL Server中表占用的空间方法
  11. 利用IsPostBack检查网页是不是第一次进入(asp.net)
  12. 数据结构(java语言描述)递归实现——汉诺塔问题
  13. android 函数式编程,响应式编程在Android中的应用
  14. [STC单片机] STC32G单片机双CAN通信测试
  15. 全国哀悼日,CSS如何把整个网页黑白显示
  16. python flask上传Excel并把Excel的数据导入数据库
  17. GBase 8c 数据库产品简介
  18. 怎么把MySQL数据库卸载干净
  19. 队测 逆序对 permut
  20. localhost拒绝了我们的连接请求

热门文章

  1. SpringMvc-HandlerMapping/RequestCondition
  2. bat 两个文本字符替换_Excel中最全最实用的文本函数公式大全
  3. python使用字典描述学生信息_一起学Python:字典介绍
  4. 发布一款给图片批量加水印的程序PicNet V1.0
  5. Linux NFS存储服务部署
  6. Windows 下修改 MySQL 编码为 utf8
  7. [js]DOM 篇
  8. cocos2dx-lua 笔记 方向控制 v2
  9. 程序员界大杯具:蜗居中的小贝是搞C++ 的 !
  10. C++---基于ffmpeg实现视频播放器(一)