自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李兵的专栏

长风破浪会有时,直挂云帆济沧海

  • 博客(134)
  • 收藏
  • 关注

原创 ADS in Java

Ads In Java依赖包TcJavaToAds.jar, 可以直接在TwinCAT的安装目录下找到,路径(我这里装在C盘):C:\TwinCAT\AdsApi\AdsToJava,对应的DLL(adstojava.dll)也在这个目录下,DLL不用管,只要安装了TwinCAT XAE,TcJavaToAds.jar 使用时会自己按默认路径装载这个DLL,我们只需要在Java项目中加入...

2020-04-27 15:03:23 1960 6

原创 ADS In C#

ADS in C#包: Beckhoff.TwinCAT.Ads[4.4.4],可以直接使用NuGet下载安装示例using System;using System.Collections;using System.IO;using TwinCAT.Ads;namespace TestA{ class Program { static voi...

2020-04-25 20:48:52 2051 1

原创 python 闭包理解

网络上大家对闭包的定义一般是说“能够读取外部函数变量的函数”,一直感觉这个有点理解上不是那么自然。这里以python3为例,通过简单的实践解析下它里面的闭包到底是个什么样的东西。先来个简单的例子:def func_wrapper(a): def func1(x): return a*x def func2(x): return...

2019-09-24 12:17:57 963

原创 Ads In C++

Ads In C++依赖库TcAdsDll.lib,可以在TwinCAT 的安装目录下直接找到库目录:C:\TwinCAT\AdsApi\TcAdsDll\Lib(默认装C盘),需要加到项目配置属性->链接器->附加库目录中头文件路径:C:\TwinCAT\AdsApi\TcAdsDll\Include,需要加到项目配置属性->VC++目录->包含目录中...

2020-04-28 18:00:53 2194 3

原创 BECKHOFF-ADS-高级语言通讯

使用过倍福控制器的人肯定对ADS不陌生,是倍福控制器基于TCP封装的专用通信协议,用来进行控制器之间、控制器的内部COM组件之间、上位机与控制器之间的通信,可以说ADS在倍福控制器上无处不在,使用ADS可以随意操控倍福控制器。倍福东西虽好,但是文档不太靠谱,又不怎么更新,示例代码注释也是轻描淡写,Infosys上的示例只适合看个大概逻辑,后面自己摸索用法。为了大家少走弯路,本系列将通过详细的程序示...

2020-04-25 20:54:03 2911

原创 BECKHOFF Library Note - Tc2_Standard

Tc2_StandardBistable Function Blocks双稳态功能块RSrs(SET:= , RESET1:= , Q1=> );SET 为真则 Q1 为真,RESET1 为真则 Q1 为假,当 SET 和 RESET1 都为真时,以 RESET1 为主SRsr(SET1:= , RESET:= , Q1=> );SET1 为真则 Q1 为真,RE...

2020-04-03 21:15:35 827

原创 sync 库使用小结

sync 主要用于 golang 中共享资源访问的同步控制。虽然 golang 更推荐 chan 这种通过通信来共享资源的方式,但有时候直接使用 sync 的效果更好,它是 chan 方式的很好的补充。本文对 sync 的使用进行一些简单介绍。条件变量互斥锁读写锁OncePoolWaitGroup

2019-10-14 10:19:55 1838

原创 python 设计模式-外观模式

外观模式隐藏了内部对象的复杂性,向外提供了简单的一致性接口。示例代码如下:from abc import ABCMeta, abstractmethodclass Component(metaclass=ABCMeta): @abstractmethod def oper(self): pass class ComponentA(Componen...

2019-10-08 11:33:28 251

原创 python 设计模式-桥接模式

桥接模式的目的是为了解耦抽象与实现,使得抽象部分与实现部分可以独立变化。示例代码如下:from abc import ABCMeta, abstractmethodclass Abstract(metaclass=ABCMeta): def __init__(self, implement): self._implement = implementclass ...

2019-10-08 11:24:49 226

原创 python 设计模式-组合模式

组合模式强调整体和部分的层次关系,以及整体和部分对外接口的一致性。示例代码如下:from abc import ABCMeta, abstractmethodfrom collections import OrderedDictclass Component(metaclass=ABCMeta): def __init__(self, attr): self._a...

2019-10-08 11:05:58 182

原创 python 设计模式-适配器模式

适配器一般是为了解决接口的兼容性问题,新瓶装旧酒。示例代码如下:from abc import ABCMeta, abstractmethodclass Target(metaclass=ABCMeta): @abstractmethod def target_oper(self): passclass Adaptee: def oper(se...

2019-10-08 09:45:38 188

原创 python 设计模式-访问者模式

访问者模式中的主要角色有访问者、元素、对象结构,目的是为了将对象数据和操作进行分离,特别适用于对象结构稳定但是操作经常变化的情况。示例代码如下:from abc import ABCMeta, abstractmethodclass Element(metaclass=ABCMeta): @abstractmethod def accept(self, visitor):...

2019-10-07 18:51:42 204

原创 python 设计模式-策略模式

策略意指算法,给定不同的策略,可以对相同的上下文环境执行不同的算法。from abc import ABCMeta, abstractmethodclass Strategy(metaclass=ABCMeta): @abstractmethod def oper(self, *args, **kwargs): passclass StrategyA(...

2019-10-04 17:32:37 148

原创 python 设计模式-解释器模式

解释器模式主要用于语言语法的解析,我们平常开发中用的比较少。示例代码如下:#!/usr/bin/env python#coding: utf-8from abc import ABCMeta, abstractmethodclass Expression(metaclass=ABCMeta): @abstractmethod def interpret(self, c...

2019-10-02 21:17:25 190

原创 python 设计模式-备忘录模式

备忘录模式主要用来做对象状态回退处理的,例如我们最常见的WORD里的撤销操作。示例代码如下:#!/usr/bin/env python#coding: utf-8class Memento: def __init__(self, state): self._state = state @property def state(self): ...

2019-10-02 20:51:35 185

原创 python 设计模式-中介者模式

中介者主要用于对多对象交互进行解耦,所有对象相互之间不直接联系,所有事情都是通过中介者来操作。看下面代码:#!/usr/bin/env python#coding: utf-8from abc import ABCMeta, abstractmethod, abstractpropertyclass Mediator(metaclass=ABCMeta): @abstractp...

2019-10-02 19:01:12 227

原创 python 设计模式-迭代器模式

迭代器是一种很常用的设计模式,python 在语言层面也对迭代器进行了友好的支持,我前面有一篇介绍迭代器和可迭代对象的文章,初学者可以先了解下概念,这里主要通过代码示例进行说明。#!/usr/bin/env python#coding: utf-8class ProductLst: def __init__(self): self._product_lst = []...

2019-10-02 18:05:10 190

原创 python 设计模式-抽象工厂模式

个人理解抽象工厂模式就是将工厂方法模式进行了一般化,一个工厂不仅仅只生产一种产品,而是一个产品族。示例代码如下:from abc import ABCMeta, abstractmethodfrom Tools.scripts.serve import appclass Factory(metaclass=ABCMeta): @abstractmethod def pr...

2019-10-02 17:07:17 314

原创 python 设计模式-工厂方法模式

前面我们介绍了简单工厂模式,每次添加新的产品需要对工厂代码进行相应修改,后面我们对它进行了一系列的优化,到最后把只需要对新建工厂时的参数进行调整就OK了。这里进一步对工厂的另一种形式进行介绍,工厂方法不仅对产品进行了抽象,对生产产品的工厂也进行了抽象,这样新加产品后只要新建相应的工厂就行,更符合面向对象的开闭原则。示例代码如下:from abc import ABCMeta, abstract...

2019-10-02 16:47:01 204

原创 python 设计模式-原型模式

个人理解原型模式就是对象的拷贝,在创建一个新的对象的成本相对较高的时候,可以以一个现成对象为范本,复制出一个对象。python 为对象的拷贝提供了一个标准模块 copy,我觉得就没必要生搬硬套地按照对象关系写什么原型模式了,直接用吧。代码示例如下:#!/usr/bin/env python#coding: utf-8from copy import copyclass Proto: ...

2019-10-02 16:19:03 189

原创 python 设计模式-享元模式

享元模式是一种比较简单的设计模式,用的也比较多,他可以有效复用对象,在一定程度上提高程序的性能。我们常见的池化技术其实就是享元模式的一类实现。代码示例:from abc import ABCMeta, abstractmethodclass FlyWeight(metaclass=ABCMeta): def __init__(self, extrinsic): ...

2019-09-30 16:45:49 169

原创 python 设计模式-建造者模式

建造者模式中核心的角色是建造者和指导者,下面代码演示了一个产品建造的过程:from abc import ABCMeta, abstractmethod, abstractpropertyclass Product: def __init__(self): self._parts = [] def info(self): p...

2019-09-30 15:00:42 161

原创 python 设计模式-命令模式

命令模式中的角色主要有:抽象命令、具体命令、命令接收者、命令调用者,命令接受者隔离了命令调用者和具体的命令。代码示例:from abc import ABCMetafrom abc import abstractmethodclass Command(metaclass=ABCMeta): def __init__(self, receiver): self._...

2019-09-30 11:02:50 177

原创 ST语言语法

PLC上用的最多的一个是梯形图,它使用起来直观方便,入门容易,非开发人员也可以很快入手,但是处理复杂的逻辑太麻烦;另外一种就是 ST(structed text, 结构化文本)语言,它写起来跟高级语言类似,学过高级语言的开发人员可以很快入手。这两种语言都是IEC 61131-3 中定义的,这个规范种还定义了其他三种语言:顺序功能图、功能块图、指令表。这里主要对ST种的语法进行一些总结。变量类型...

2019-09-29 20:04:08 31162

原创 python 设计模式-责任链模式

责任链模式的关键在于请求会沿着责任链传播,直到处理成功。我们模拟OA上费用报销的流程,上代码:from abc import ABCMeta, abstractmethodclass Role(metaclass=ABCMeta): def setNext(self, role): self._next_role = role def getNext(s...

2019-09-29 18:15:23 249

原创 python 设计模式-装饰器模式

装饰器模式实现起来跟代理模式差多,其实可以是一样的,看你把它置于什么场景。代理模式侧重于隔离客户与被代理者,通过代理者控制访问被代理者的权限,而装饰器模式侧重于给被装饰的对象提供附加的功能,例如加上日志功能。python 语法层面就提供了装饰器,足以说明装饰器的重要性,这里我们就直接介绍python的装饰器吧。先看看函数装饰器:def work_wrapper(w): def func...

2019-09-29 16:48:21 220 1

原创 python 设计模式系列

自从GOF书里提出了23种设计模式后,设计模式开始风靡,GOF中的设计模式成了典型案例,从测试到开发,再到架构,无一不把它奉为经典。其实有时候不必纠结于这是什么模式,关键看自己的场景,不要为了模式而模式,自己实践时你可能常常会发觉这不就是什么什么模式吗,设计模式也没啥高深的东西哈,只是别人先给他取了个名字。但是,值得肯定的是,牛人经过总结,提炼出了更纯粹的模式,以及更优雅的实现方式,更符合面向对象...

2019-09-29 12:26:25 251

原创 python 设计模式-代理模式

代理模式中主要存在三种角色:被代理者、代理者、客户。使用商品代理商举例应该很好理解,一个品牌厂商可以有多个代理商,客户买产品不是直接找产家,而是通过代理商购买。这里使用python 对代理模式进行一个简单的实现。from abc import ABCMeta, abstractmethodclass Service(metaclass=ABCMeta): @abstractmeth...

2019-09-29 10:45:00 195

原创 python 设计模式-观察者模式

观察者模式中主要两个核心角色:主题和观察者,兼顾面向对象的一些原则,还可以抽象出抽象主题和抽象观察者角色。这里使用 python 对观察者模式进行一个简单的实现,python 是 ‘鸭子类型’ 的语言,天生就兼容各种接口,只要类中提供了相应的方法就行,所以特意弄个抽象类搞得有点画蛇添足了,但有时候为了让开发人员少犯错误,为开发提供统一规范,提供一些抽象类作为基类使用也是合理的。from abc ...

2019-09-29 09:47:56 266

原创 python 设计模式-状态模式

状态机是我们开发过程中经常会用到的概念,它可以使我们的程序逻辑清晰,可维护性更强。这里对python中状态模式的实现做个简单的介绍。from abc import ABCMeta, abstractmethodclass State(metaclass=ABCMeta): @abstractmethod def handler(self, context): ...

2019-09-28 18:57:17 211

原创 python 设计模式-模板模式

模板模式,顾名思义创建一个做类似事情的模板。这里我们使用 abc 模块创建我们的抽象模板类:from abc import ABCMeta, abstractmethodclass WorkTemplate(metaclass=ABCMeta): def work(self): self.pre_work() self.do_work() ...

2019-09-28 14:57:27 222

原创 python 设计模式-简单工厂

工厂模式也是最常用的设计模式之一,可以分为简单工厂、工厂方法、抽象工厂三大类型。这里就python中简单工厂的实现做个简单说明,我们从最普通的实现一步一步优化。先看代码:#!/usr/bin/env python#coding: utf-8class DesktopPC: passclass AllInOnePC: passclass Laptop: p...

2019-09-28 12:54:44 226

原创 python 设计模式-单例模式

单例模式是最简单,也是最常用的一种设计模式,每种语言实现它的方式也有很多种。这里主要针对python中的实现进行说明,个人觉得使用重写__new__的方式来实现单例是最优雅的。先看下面这个例子:class Singleton: __instance = None def __new__(cls, *args, **kwargs): if cls.__i...

2019-09-27 12:01:53 295 1

原创 python super 浅析

对于面向对象的语言,子类调用父类的方法是共有的需求。大部分面向对象高级语言都使用super这个关键字,在python中也使用了super这个名词,但不是作为关键字,是一个内置的类,使用这个类的实例可以访问到父类的方法,父类说法太模糊,准确的说应该是当前类的MRO顺序中的下一个类。为了对比super的效果,我们先直接使用父类名称的方式调用其方法,如下 #!/usr/bin/env python...

2019-09-26 21:40:21 147

原创 python 多路复用示例

IO多路复用是处理高并发常用的一种处理手段,他可以有效的提高系统的吞吐率,处理的链接越多他体现的优势越明显。谈到这个名词,比较有代表性的是linux上的epoll、windows上的iocp、BSD上的kqueue,这些都是操作系统内核实现的功能,高级语言一般会对这些调用进行下封装,方便用户使用。这里主要是python上多路复用的使用方法的几个例子,python提供了select模块,在linux...

2019-09-26 16:10:48 455

原创 脉冲当量与电子齿轮比疑惑

至今项目过程中,一共实践了三个不同厂商的控制设备。脉冲当量和电子齿轮比的定义似乎每家不一样。这里稍微整理一下,加上了自己的一些理解,啰嗦了些个人经历,希望对初入工控的朋友们有所帮助,有理解不对的地方请指正。首先是一个小作坊厂的控制卡,没有脉冲当量的设置,直接是折算成真实脉冲数来控制的;用这家设备的时候是刚接触工控不久,意识里也没有脉冲单量这个概念,直接使用脉冲调试真实机械设备刚开始那叫一个痛苦,...

2019-08-27 12:27:28 2662

原创 AUTOCAD 常用操作

AUTOCAD 常用操作设置绘图界限limits系统选项设置op草图设置ds设置UCS(用户坐标系)ucs标注dordcodal对象捕捉设置os基本图形绘制linecirclearcrectangplinex

2018-12-01 15:14:23 553

原创 AWS CPP SDK 使用

编译SDK下载源码(地址:AWS-CPP-SDK 安装cmake(>=2.8.12,使用2.8.12时编译时报错,建议>3) CMAKE常用编译参数 编译指定模块-DBUILD_ONLY="s3;dynamodb"编译源码 cmake build-dirmakesudo make install示例S3问题cmake

2018-12-01 15:13:38 3997 2

原创 AutoCad 基础概念

插入比例单位 决定从其他地方导入的图形以什么单位换算。这也意味着当前绘图所使用的绘图单位,即一个绘图单位代表的实际单位。注释性比例AutoCad 中又很多比例关系,比较容易混淆,其实对于比例,只要搞清楚是谁与谁的比例关系,就很容易理解了 - 注释比例 注释文字原高度不变,以原高度为基,根据注释比例可推算出呈现的文字高度- 视口比例模型空间原实际尺寸不变,以模型

2018-12-01 15:13:05 849

原创 C# Parallel 中的 Stop 与 Break

看了几篇关于 Stop 与 Break 的文章,感觉都没有说得透彻,只说了些表面现象。只好自己琢磨一下了,希望能给初学者有所启示,高手请略过。Stop此函数的目的是终止所有迭代执行。没有开启的执行自然无法开启了,但是它无法终止已经开启的执行,那怎么办呢?.net通过并行循环状态提供了一个 IsStopped 属性,已经开启的执行可以通过检查这个属性来提前终止执行。Break...

2018-08-28 11:49:12 1306

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除