基础的二维变换是:平移,斜切,缩放,旋转,镜像了解这个知识的目的是应用于像点胶设备中点位坐标的旋转上面。源代码:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Tex
命名空间:sharClass.UserPermission功能:用户权限类,可为类或者Form提供用户权限检查机制功能详细说明:用户权限类,可为类或者Form提供用户权限检查机制。常用函数列表:/// <summary>
/// 权限改变通知
/// </summary>
public event Action<userLeveEnum> levelUpdateEvent;
///&nbs
命名空间:sharClass.myForm功能:myForm封装了记录窗体位置、大小等信息,以及统一化字休颜色风格, 以及继承DockContent等功能功能详细说明:myForm封装了记录窗体位置、大小等信息,以及统一化字休颜色风格, 以及继承DockContent等功能。所有Form都应该继承myForm以提供Form功能及额外的好。2018.8.11增加权限管理的功能,见接口IuserPermission这个类的定义如下:public class myForm 
这个例子是利用netMarketing类库组建MDI多文档窗口界面。这种多文档界面的好处是面板可以任意依靠位置,有点像VS开发环境中的那种面板剥离停靠效果。
对于大部分应用来说,这种效果可以有效的解决用户在界面上的需求变更。
变态的客户经常希望程序的各种面板按他们的想法出现在指定的位置,而面板固定不变的程序就只能傻眼。
创建一个winform工程
引用netMarketin
这个例子使用HslCommunication类库的三菱plc读写测试程序,所以在使用前,请安装这个组件。HslCommunication类库的作者功底扎实,其代码质量很高,是勇哥学习的标榜。同时作者有愿望和勇气为工业4.0做技术上的积累,这个高度让人汗颜,这里向作者表达真心的致敬。示例代码:using HslCommunication;
using HslCommunication.Profinet.Melsec;
using System;
using&nb
在v1.3.0版本的netMarketing类库中,dataSetHelper类已经做了多线程安全性的处理。对于在多线程下绑定dataTable到dataGridView控件时出现的错误(见下图1),这一版已经做了处理。(图1)详细的解决办法请参考下面的演示程序。其关键的是使用returnDataTableCopy()函数返回表的拷贝,而不是直接使用returnDataTable()返回表对象。 myDataGridView1.DataSource = null;
在视觉调试的时候,如果断点查看Linef对象的Points信息(即线的点集合),都是包含点位置x,y信息的数据,有些时候想显示Linef对象的points信息为图形化,则可以使用下面的小程序。你只需要vs的“即时窗口”输出这个Points对象,然后把它复制下来,粘贴到程序窗体中,然后点击“计算窗口内points”转换即可。下面的复制下来的Points对象: [0]: {4086.82373046875,1817.00036621094,0,0}
&n
组态软件的一些组件,关联到plc的内存,能反映出plc程序的运行结果。下面的程序模拟了组态软件这种效果,其目的是方便测试plc程序的运行效果,而不借助于实际的硬件。例如我们用plc编写一下交通灯轮换显示的程序,可以用本程序实现实时的结果显示。这里的plc程序勇哥只是用3个输入IO,点亮3个输出IOplc用的是欧姆龙的cp1h下面是pc端的程序,当设置好plc的连接参数和输出IO地址后,会实时显示上面plc程序的运行结果。源代码:using netMarketing.automation
命名空间:netMarketing.automation.plc.Omron.FinsLibrary功能:欧姆龙PLC基于Tcp通讯的Fins通讯类,支持全系列的欧龙PLC功能详细说明:FinsSocket支持的欧姆龙PLC包括CP系列, Nj系列, Nx系列的欧姆PLC。可以在监视模式或者运行模下读写PLC的内存。这个类使用简单,已经经过多个项目检验过,勇哥推荐使用它!常用函数列表:/// 构造函数
public FinsSocket(string strSer
引言面向对向程序设计的三大特征是: 封装,继承,多态平时做设备的程序用得最多的还是封装,或者还有一些基于局部功能性的继承。真心来说程序仅仅是为了实现功能,还远远谈不上真正的是面向对象开发。当然这也是有原因的:一方面,设计模式并不是直接写出来的,而是重构代码改出来的(至少勇哥是这么认为的)。在完成了设备功能的情况下,往往因为时间关系,不可能再重构代码,因为当设备开始进行生产状态后,客户认为再去动代码是有风险的。另一方面,人还是有惰性,当初研究面向对象、设计模式的时候的那股劲随着被工作不断打断后,慢