软件开发过程记录

本文详细介绍了工业打标软件的开发,包括驻留主机的业务软件、驱动程序和控制板的选择。此外,还探讨了基于机器智能的教辅系统开发,涉及机器智能原理、教育理论以及实现方法。同时,文章提到了软件开发中的关键工具如maven,讨论了DLL与LIB的区别,并分享了VS2017中关于wxWidgets的编译和配置经验。

工业打标软件

2020年重点工作是掌握激光打标开源软件,开发现场应用的工业打标软件。项目开发任务包括3部分:

  1. 驻留主机的业务软件。通过企业局域网可以接收企业化验室的产品化学成分数据,通过主机串口接受生产流水线上游衡器称出的产品质量数据,在此业务软件上设置生产班组信息,这些数据是打标基本信息。图形数据+pen激光参数一起发送到控制卡。
  2. 驱动程序。它接收业务软件产生的数据发,并送到控制板。
  3. 选择合适的控制板。控制板上的固件接收数据,并处理数据,然后根据数据和指令控制振镜和激光发生器协同工作,完成打标。

基于机器智能的教辅系统开发

教辅系统主要工作大纲(暂定)

  1. 机器智能原理
  2. 教育理论
  3. 方案
  4. 实现方法与技术

经验总结

  1. VS2017社区版导入开源软件总结

  2. 动态链接库DLL与静态链接库LIB
    库是资源集合,它能够用于开发应用程序。一个库通常由例程、函数、类、值和类型构成。在链接过程(通常由链接器完成),库(libraries)和执行表(executables)彼此引用。根据例程何时被加载到目标应用程序,库文件分为静态库和动态库。相应地,LIB文件是静态链接的库,而DLL文件是动态链接的库。
    什么是DLL?
    动态链接库DLL是一个由微软公司开发的共享库实现。它使用后缀名.dll、.ocx、或者.drv,并且它们被应用在微软视窗和OS/2操作系统中。常规的DLL文件采用后缀.dll。包含ActiveX控件的库采用后缀名.ocx。遗留系统驱动文件采用后缀名.drv。DLL文件格式与视窗可执行文件EXE(Portable Executable files on 32-bit/64-bit Windows, and New Executable on 16-bit Windows)一样。因此,代码、数据和资源的任何组合都能够包含在DLL文件中(就象可执行文件一样)。实事上,具有DLL文件格式的数据文件被称为资源DLLs。图标(icon)库(后缀名.icl)和字体文件(font)库(后缀名.fon和fot)都是资源DLLs的例子。
    被称为节(section)的组件构成了一个DLL,并且每个节都有自己的属性,例如只读/可写和可执行和不可执行。代码节是可执行的,而数据节是不可执行的。代码节是共享的,而数据节是私有的。那就意味着所有的进程使用该DLL是使用相同的代码拷贝,而每个进程都拥有自己的数据拷贝。视窗的主要动态库是 kernel32.dll,它包含有关视窗的基函数(与文件和内存相关的功能)。 组件对象模型COM (Component Object Model)是DLL扩展到面向对象编程OOP(Object Oriented Programming)。传统的DLLs比COM文件更加容易使用。
    什么是LIB?
    LIB文件是静态库(也就是静态链接库)。LIB文件包含了一个有关例程、外部函数和变量的集合。LIB文件在编译时(与运行时对应)被解析生成。代码实际上被拷贝到目标应用程序中。一个编译器,链接器或者绑定器执行这个解析任务并生成一个对象文件和一个可执行文件。这个过程被称为静态构造过程。
    DLL与LIB之间的差异?
    LIB库在编译时被调用,而DLL库仅能够在运行时被调用。LIB文件明显比DLL文件大许多。DLL文件一个常见的问题是版本问题。当DLL代码被改变时,版本问题就了出现:应用程序使用一个DLL错误的版本。对LIB文件来说,版本不是一个问题。根据可重用性原则,当编写一个新版本系统或者全新的应用程序时,DLLs比LIBs好。

  3. MAVEN学习心得
    软件项目管理软件maven于2020年元月15日开始只支持https安全链接共享库了,以前低版本的maven3.0.3修改setting.xml,修改项目pom.xml的http协议为https,但是没有任何响应,返回错误代码501,不能链接到共享库了。后来,在maven官方网站上看到了这样的解释:super pom是任何项目的pom的父文件,它的配置可以被这些项目的pom继承。定位了netbeans内置的maven安装位位置:netbeans/java/maven/lib/maven-model-builder-3.0.5,用7zip打开这个jar包,里面有这样一目录结构:org/apache/maven/model,在这里终于找到这个super pom-4.0.0.xml文件了,打开它后,把相应的http协议改为https。如下所示:

<repository>
  <id>central</id>
  <name>Central Repository</name>
  <url>https://repo.maven.apache.org/maven2</url>
  <layout>default</layout>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
</repository>
</repositories>
<pluginRepository>
  <id>central</id>
  <name>Central Repository</name>
  <url>https://repo.maven.apache.org/maven2</url>
  <layout>default</layout>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
  <releases>
    <updatePolicy>never</updatePolicy>
  </releases>
</pluginRepository>

最后,成功构建了项目。检查apache-maven-3.6.3的super pom后发现它已经是https协议了。

  1. Visual Studio 2017 community版编译wxWidgets
    从官方网店获取wxWidgets,下载7z或zip文件。文件“wxWidgets根目录/docs/msw/install.txt”是作为参考的编译说明文档。
    添加环境变量WXWIN,值是wxWidgets根目录的路径。虽然不添加变量也可以编译,但很多wxWidgets插件的编译都依赖这个环境变量,因此最好加上。wxWidgets根目录的路径不要含有空格

增加vs2017支持
vs2017影响编译的改动,主要是定义了snprintf,以及编译器版本升级到14。需要对wxWidgets作如下修改,才能使用vs2017进行编译。
在文件%WXWIN%\include\msvc\wx\setup.h,增加版本支持如下:

    #elif _MSC_VER == 1916
        #define wxCOMPILER_PREFIX vc140

在文件%WXWIN%\include\wx\compiler.h,增加版本支持如下:

#elif __VISUALC__ < 2000
    #define __VISUALC14__

在下面三个文件中,找到snprintf的宏定义,注释掉

%WXWIN%\src\tiff\libtiff\tif_config.h
  %WXWIN%\src\tiff\libtiff\tif_config.vc.h
  %WXWIN%\src\zlib\gzguts.h

编译库文件
运行“开始|所有程序|visual studio 2017|VS2017 开发人员命令提示”,切换到%WXWIN%\build\msw。

生成32位静态库DEBUG版
nmake /f makefile.vc
库文件生成在%WXWIN%\lib\vc_lib,文件名含d表示debug版

生成32位静态库RELEASE版
nmake /f makefile.vc BUILD=release
库文件生成在%WXWIN%\lib\vc_lib,文件名不含d与debug版区分

生成32位动态库DEBUG版
nmake /f makefile.vc SHARED=1
库文件生成在%WXWIN%\lib\vc_dll,文件名含d表示debug版

生成32位动态库RELEASE版
nmake /f makefile.vc BUILD=release SHARED=1
库文件生成在%WXWIN%\lib\vc_dll,文件名不含d与debug版区分

运行“开始|所有程序|visual studio 2017|适用于VS2017的x64本机工具命令提示”,切换到%WXWIN%\build\msw。

生成64位静态库DEBUG版
nmake /f makefile.vc TARGET_CPU=X64
库文件生成在%WXWIN%\lib\vc_x64_lib,文件名含d表示debug版

生成64位静态库RELEASE版
nmake /f makefile.vc BUILD=release TARGET_CPU=X64
库文件生成在%WXWIN%\lib\vc_x64_lib,文件名不含d与debug版区分

生成64位动态库DEBUG版
nmake /f makefile.vc SHARED=1 TARGET_CPU=X64
库文件生成在%WXWIN%\lib\vc_x64_dll,文件名含d表示debug版

生成64位动态库RELEASE版
nmake /f makefile.vc BUILD=release SHARED=1 TARGET_CPU=X64
库文件生成在%WXWIN%\lib\vc_x64_dll,文件名不含d与debug版区分

以上vs2017生成wxWidget库文件,参考网文:Visual Studio 2015编译wxWidgets

技术网文链接

  1. 遗传算法、神经网络、模糊控制PID参数
    使用遗传算法整定PID参数
    matlab贝叶斯工具箱安装使用
    BP神经网络+PID控制simulink仿真
    模糊PID算法及其MATLAB仿真1
    模糊PID算法及其MATLAB仿真2
  2. 源代码分析技术与方法
    构建 开源二维码zxing-cpp
    VS2017添加Lib库文件正确的方法
    Visual Studio 2017 第三方依赖设置,附加依赖项和附加库目录
    windows平台下stdio.h的位置
    VS2017添加lib库及其头文件
    VS2017动态链接库(.dll)的生成与使用
    VS2017下的wxWidgets建立一个简单的窗口
    _MSC_VER值对应的Visual Studio版本
    WINAPI是什么?
    ActiveX控件实现
    WinMain
    头文件unistd
    VS2017的C++开发心得(三)VS的常用项目属性介绍
    VS2017的C++开发心得(四)VS的文件夹路径以及项目生成步骤
    VS2017的C++开发心得(六)头文件的路径问题与属性管理器
    VS2017的C++开发心得(七)DLL动态链接——查看依赖的外部模块
    VS2015中无法查找或打开 PDB 文件
    VS2017的一些调试方法技巧
    Windows GetMessage
    Windows PeekMessage
    解决方案:VS2017 无法打开源文件 stdio.h main.h 等头文件
    ModBus-RTU详解
    MySQL
    知识图谱(Knowledge Graph)之综述理解
    SSM框架原理、作用及使用方法
    尚硅谷SSM框架实战,ssm整合教程
    《Relational inductive biases, deep learning, and graph networks》图网络 论文解读
    斑马打印机指令简介
    斑马打印机指令集
    MySQL 输入任何语句都提示
    MySQL命令执行sql文件的两种方法
    Win10 64位 MySQL 5.7.30安装教程
    MySQL 5.7 安装后默认登录密码在哪?
    并口、串口、COM口区别
    什么是我的java.net.SocketException:连接重置?
    java.net.SocketException: Connection reset问题解决总结
    假脱机技术
    分类的评判标准F-score
    TOMCAT启动闪退,JDK版本与猫版本问题
    netbeans 窗体字体大小设置
    Tomcat集群Session会话复制方案
    Tomcat的Session共享(复制)的几种实现方案
    tomcat session会话复制
    java中session的用法与原理
    java使用session存登录的用户信息
    浅谈Session的使用
    Apache + Tomcat 负载均衡集群配置问题 session不能复制(解决方法)
    Apache配置反向代理、负载均衡和集群(mod_proxy方式)
    Apache2.4反向代理设置
    apache设置反向代理后,登录的时候session丢失的问题
    串口/com端口被占用(在使用中)的解决办法
    Window 硬件检测哪个程序占用了串口
    Windows系统串口占用解决方法
    java.io.EOFException (转载)
    旧Mysql数据库在新系统上重新使用的方法
    windos下mysql root默认密码
    VS2013(Visual Studio 2013)官方中文破解旗舰版下载(含激活密钥)
    VS中添加预处理宏的方法
    Set compiler and build properties
    JAVA_HOME环境变量配置
    Tomcat启动一闪而过就消失的原因和解决方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值