自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (7)
  • 收藏
  • 关注

原创 python asyncio协程使用说明

无异步操作代码利用time.sleep使得线程挂起,模拟阻塞运行。async def hello(x): print(x,'Hello World:%s' % time.time()) time.sleep(1) print(x,'Hello World:%s' % time.time())def run(): print(time.time()) tasks = [asyncio.ensure_future(hello(1)), as

2021-02-12 15:32:26 6073

原创 python 实现modBus协议的crc校验算法

CRC校验循环冗余校验码(cyclic redundancy check)简称CRC(循环码),是一种能力相当强的检错、纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。算法介绍循环冗余校验码由信息码n位和校验码k位构成。k位校验位拼接在n位数据位后面,n+k为循环冗余校验码的字长,又称这个校验码(n+k,n)码。n位信息位可以表示成为一个报文多项式M(x),最高幂次是xn-1。约定的生成多项式G(x)是一个k+1位

2021-02-12 15:09:40 9907 3

原创 python实现三维坐标旋转计算

空间三维坐标系旋转计算计算空间三维坐标系变换一般都是利用旋转矩阵或者欧拉公式。python有个scipy库可以直接用于计算空间三维坐标变换。支持库pip install scipy旋转矩阵计算代码axis是旋转轴,radian旋转角度(弧度)rot_matrix = linalg.expm(np.cross(np.eye(3), axis / linalg.norm(axis) * radian))坐标计算代码rot_matrix是旋转矩阵,x是坐标数组[x,y,z]np.dot(ro

2021-01-25 21:40:00 35802 15

原创 Advanced Installer打包msi文件操作流程

应用场景当程序员编译出可执行程序后要发布使用,要进行二次打包,建议使用 Advance Installer软件,这款软件简单并且完善。使用步骤第一步:安装Advance Installer直接百度安装即可,博主提供一个连接:advance installer下载连接。下载完成后直接安装即可。第二步:创建项目选择Generic栏目 → 选择professional模式 → 点击create project。第三步:填写软件详情详情栏里输入项目名称,版本信息,出版者名称。然后如果需要设置ic

2021-01-20 22:22:08 32665 4

原创 Pyinstaller 打包qml和matplotlib成功后,运行报错解决方法

博主最近编写项目用到了pyqt5和matplotlib库,在编译环境下运行代码,程序是完美执行,但是通过pyinstaller 编译成exe后,通过控制台打印错误,看到图中错误。当注释掉matplotlib后,程序界面正常开启,但是一启用matplotlib库,程序依然无法打开,还是上图错误。查阅编译日志,发现在打包过程中有发现打包PySide2库很多missing,由于项目代码中没有使用到pyside2,便修改spec文件,修改如下:在exclude中输入Pyside2库,这样就不会将PySid

2021-01-19 21:42:24 26123 1

原创 python 通过 Snap7 与 PLC 实现数据通信

目录PLC配置IP地址设置关闭PLC数据保护开启访问权限电脑配置配置本机IP地址安装python-snap7snap7.dll库移植PLC数据块区域定义PLC数据格式程序注解备注PLC配置此文章以西门子PLC S7-1200为例。IP地址设置关闭PLC数据保护需要关闭数据块的优化访问选项。所有需要访问的数据块都得开启,否则程序会报错。开启访问权限需要开启访问所有权限,否则程序连接会报错。电脑配置配置本机IP地址由于PLC的通讯地址是192.168.0.1,需要将本机的IP地址与PL

2021-01-01 22:08:31 29105 8

原创 QML插件式调用新QML窗口

注意1.插件式调用的话不需要事先在主窗口里定义子窗口。2.插件式调用的话会存在重复调用子窗口方法,如果仅希望出现一个子窗口请不要使用此方法。Main.qmlimport QtQuick 2.12import QtQuick.Window 2.12Window { id : mainWindow //必须定义主窗口Id visible: true width: 640 height: 480 title: qsTr("Hello World") p

2020-07-19 13:45:26 27134

原创 QML调用另一个QML文件并显示

注意1.调用的qml文件必须也是根元素为window,否则visible元素会报错。2.QML的文件第一个字母必须大写3.要调用的QML文件必须在主QML里实例化Main.qml文件import QtQuick 2.12import QtQuick.Window 2.12Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Qml1{ //实例化另一个文件,

2020-07-19 13:32:58 37198 3

原创 QML文件定义信号和python定义槽绑定

QML文件QML文件命名为Main.qmlimport QtQuick 2.12import QtQuick.Window 2.12Window { visible: true //此属性必须要定义 width: 640 height: 480 title: qsTr("Hello World") Rectangle { width: 320; height: 240 color: "lightblue" T

2020-07-19 13:09:16 26016

原创 Python运行QML文件的方法实现

根元素QML用户界面分解成一块块小的元素,每一元素都由很多组件构成。根元素有很多,最广泛的是Item,也有Rectangle和window。如果定义的是window ,那么qml文件必须要import QtQuick.Window ,否则会闪退。Window根元素python调用QML文件,命名为Qml1.qml。由于定义的根元素的window,所以需要import import QtQuick.Window注意:QML的文件命名第一个字母必须要大写。import QtQuick 2.0i

2020-07-19 12:44:07 28625

原创 labview 添加自定义Lib

自定义Lib在做程序开发的时候常常都会需要自己编写一些自定义的库,以方便后续其他项目使用。Labview的自定义lib将其放入到指定路径下便可以直接在编辑程序界面调用。添加自定义库到labview1.编写liba.如果已经编写好程序在项目里,需要将其装换成lib可以进行如下操作。b.或许直接新建一个lib项目,进行编写2.添加到指定路径将编写好的库文件及其源代码的文件夹放入到labview的usrlib的文件夹下.路径为:C:\Program Files (x86)\National In

2020-06-18 10:02:22 32481

原创 Python 串口通讯操作实现

串口通讯平常与设备通讯的方式都是串口通讯,常用的协议包括RS-232、RS-422和RS-485。RS-232RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。RS-232的接头是DB-9,但是通常使用最多3个针脚:TXD(2pin)、RXD(3pin)和 GND(5pin)。注意如果设备只提供接线柱的话,记得TX与设备的RX连接,RX和设备的TX连接。RS-422RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信

2020-05-17 16:58:07 30781 1

原创 NodeMCU开发板烧录程序两种方法介绍

NodeMCUNodeMCU,是一个开源的物联网平台。 它使用Lua脚本语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson, spiffs. NodeMCU包含了可以运行在esp8266Wi-FiSoC芯片之上的固件,以及基于ESP-12模组的硬件。通过ArduinoIDE烧入程序安装 Arduino IDE软件,链接:https://www.arduino.cc/en/Main/Software打开Ardu

2020-05-14 13:32:05 30208

原创 Python windows脚本操作

windows操作目前很多流行的脚本工具(例如:按键精灵)都是模拟鼠标键盘操作实现一些简单的操作,比如重复点击一个地方,或者重复实现几个按键按下等,截取相应窗口界面保存。Python 要实现操作鼠标和键盘需要pywin32库支持。简单实现如果要了解更多功能,请查看pywin32技术文档。import timeimport win32gui, win32ui, win32con, win32apidef window_capture(filename): """ 函数功能:截屏

2020-05-14 10:45:18 26483

原创 Python ORM框架SQLAlchemy操作

ORM全称Object Relational Mapping(对象关系映射)。特点是操纵Python对象而不是SQL查询,也就是在代码层面考虑的是对象,而不是SQL,体现的是一种程序化思维,这样使得Python程序更加简洁易读。具体的实现方式是将数据库表转换为Python类,其中数据列作为属性,数据库操作作为方法。优点简洁易读:将数据表抽象为对象(数据模型),更直观易读可移植:封装了多种数据库引擎,面对多个数据库,操作基本一致,代码易维护更安全:有效避免SQL注入具体实现库SQLOb

2020-05-09 21:05:59 25732

原创 Python MySQL数据库操作

MySQLMySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选...

2020-05-07 19:38:39 25729

原创 Python SQLserver数据库操作

SQL ServerSQL Server是由Microsoft开发和推广的关系数据库管理系统.SQL Server特点C/S体系结构具有很好的伸缩性提供数据仓库功能支持OLE DB和多种查询代码实现SQL server创建、插入、查询、删除操作需要pymssql库支持import pymssqlimport timeimport traceback, sysclas...

2020-05-06 21:11:58 26638 1

原创 python SQLite数据库操作

SQLiteSQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。SQLite数据库优点不需要一个单独的服务器进程或操作的系统(无服务器的)SQLite 不需...

2020-05-05 10:38:42 26332

原创 python 操作配置文件

配置文件一般程序都需要保存一些设置信息,比如字体大小,语言等等。这时候就不能讲配置写入到程序代码中,需要一个文件来保存读取这些配置信息,这个文件就是配置文件。一般配置文件以ini文件形式存在,其内容可以根据开发者的习惯爱好来写,但大部分开发者会使用configparser模块来处理配置文件。python代码实现简单的配置文件类首先需要安装configparser库如果程序要多处使用到配置...

2020-05-04 07:10:40 26451

原创 记一次成功的软件著作权的申请

软件著作权现在国内越来越来重视专利的版权,而软件著作权也属于专利的一种。对于程序猿们来说,要申请专利,那么软件著作权一定是必不可少的。软件著作权相较于发明专利和实用新型专利来说,是一个很简单的专利申请,不需要专门的人来写权利要求书,只需要递交一些资料即可申请。申请说明申请官网中国版权保护中心注册登记帐号如果已经有登记帐号,可以跳过此介绍。1.登入网站,点击网页上方的注册。2.在注...

2020-05-03 09:24:45 29738 7

原创 python websocket通讯协议简单实现

websocket通常要实现C/S或者B/S架构的通讯时,会选择websocket通讯协议。websocket允许服务器主动给客户端发送消息,如果是在自动化控制做服务器的时候,可以考虑使用此协议。服务端代码首先得先安装 websocket-server库具体使用方法请查看库源代码,以下代码实现一些基本功能。import threadingfrom websocket_server im...

2020-05-02 23:51:04 25460

原创 Tango Control System 总结

使用流程相关添加链接描述文章链接概览主流集成控制系统:EPICS和TANGO部署TANGO Control在win10的环境搭建系统应用介绍Tango control system配套软件Tango control system配套软件(二)使用流程使用(一):创建Device Server使用(二):利用Pogo创建Device Server使用(三):Jive注册De...

2020-04-16 20:32:19 27166

原创 Tango Control System 之 自定义客户端

客户端Tango Control System的客户端有很多形式,可以通过Taurus,Sardana等插件来实现,也可以通过web端实现。1.插件形式实现客户端可以参考如下文章:Tango Control System 使用(五):简易客户端测试Device Server2.网页客户端可以参考:Tango demo3.自定义客户端自定义客户端通过QT来自定义客户端界面,然后通过A...

2020-04-15 20:22:20 26028

原创 Tango Control System 之TangoBox镜像

Virtual Machine此处提供一个已经部署好的Tango Control System,这是在Ubuntu下部署的。Tango Control System镜像文件链接:https://tango-controls.readthedocs.io/en/latest/installation/vm/tangobox-9.2.htmlTango Control System镜像文件说明...

2020-04-13 20:48:02 25885

原创 Tango Control System 之 Sardana

SardanaSardana是Tango Control System里面自带的一个Device Server,主要跟Taurus连用。Sardana主要用途就是提供集成化命令控制接口,其设计准则之一:始终提供专用于应用程序的通用接口。使用Sardana有两种方法:1.通过Taurus调用,镶嵌在GUI界面使用。2.命令行界面调用Sardana的文档资料:https://sardana...

2020-04-12 12:29:53 25949

原创 Tango control system配套软件(二)

ATKmoniATKmoni是Tango目录下的一款应用,主要是读取某个device Server的数据进行记录分析。类似于图表数据,可以添加多个数据进行比较。ATKPanelATKPanel是Tango目录下的一款应用,主要用于查看device server的当前所有状态,运行命令或修改属性。也可以直接通过Jive进入,也可以通过Tango目录下运行ATKPanel,输入要打开的de...

2020-04-08 22:25:32 25365

原创 Tango Control System 使用(五):简易客户端测试Device Server

测试Device Server当我们创建完Device Server,往往需要进行Debug,由于是Server,就需要client来连接测试,测试Device所有的元素,命令、状态等是否正常。=使用客户端的时候,请确保Server处于启动状态。创建客户端有三种方法:1.Tango generic client ATKPanel2.代码调试3.Taurusgui调试ATKPanelA...

2020-04-05 20:35:00 27344

原创 Tango Control System 使用(四):Astor设置Device Server启动

AstorAstor是Tango Control System自带的一个应用,主要用途:1.显示当前系统服务2.添加并设置Device Server启动等级3.查看Device Server状态4.停止或重启Device Server查看系统运行的Device Server双击当前服务器,可以看到目前系统运行的Device Server。绿色状态的是目前正处运行Device Serv...

2020-04-02 20:20:59 26351

原创 Tango Control System 使用(三):Jive注册Device Server

JiveJive是Tango Control System自带的一个应用,主要用于注册Device Server,并且实例化Device,一个Device Server类可以实例化多个Device,并且可以编辑各个实例化的Device property。在Device Server没有运行的时候,可以打开注册Device Server,但是无法修改实例化的Device,会显示连接错误。注册D...

2020-04-01 11:36:46 26272 5

原创 Tango Control System 使用(二):利用Pogo创建Device Server

PogoPogo是Tango Control System自带的一个应用,主要用于生成Device Server模板。通过直观的UI交互界面,来完善一个Device Server的属性、命令、数据和状态。可以生成python、C\C++和Java模板代码,开发人员只需要在模板代码里填充完善即可完成Device Server。一个device server 可以拥有以下元素属性。Pogo使用...

2020-03-30 22:01:55 26497 3

原创 Tango Control System 使用(一):创建Device Server

创建Device ServerTango Control System 使用的第一步就是创建Device Server,创建Device Server的方法有2种,一种是通过Pogo创建模板之后进行完善,一种是不通过Pogo直接在代码中实现。此篇介绍不通过Pogo创建Device Server。直接通过代码实现的优点在于精简和自由,往往代码量轻微,但是其要求对于库的使用要非常熟练,新手建议使用...

2020-03-29 17:07:47 26650

原创 Tango control system配套软件

Tango Control system 配套软件集合Tango control system 安装成功后,可以通过菜单栏找到软件集合,如下图。经常使用到的软件:1.Astor:启动Device Server和相应的服务2.Jive:配置Device Server的属性参数3.Pogo:创建Device Server的模板Astor当Tango control system 配置完...

2020-03-29 16:40:33 26505

原创 TANGO Control在win10的环境搭建

TANGO Control环境搭建

2020-03-16 19:39:22 27661 2

原创 python密码学总结

总结导图加密法介绍凯撒加密法换位加密法乘数加密法仿射加密法简单替代加密法维吉尼亚加密法一次一密加密法RSA加密法破译加密法介绍凯撒加密法介绍里及有破译代码实例。破译换位加密法破译仿射加密法破译替代加密发破译维吉尼亚加密法一次一密加密法和RSA目前没有完美的破译方法。算法补充质数筛选法频率分析算法在破译维吉尼亚算法里介绍欧几里得的扩展算法,找出模逆算法在仿射...

2020-03-14 22:21:28 25817

原创 RSA加密法

RSA加密RSA加密法也叫做公钥密码学加密法。有两个密钥,一个用来加密,另一个用来解密。使用一个密钥加密的消息只能使用另一个密钥解密。公钥和全世界共享用于加密,密钥必须藏好用于解密。RSA密钥创建RSA体系的密钥由两个数字组成,创建密钥的步骤:1.创建两个随机的非常大的质数,这些数字分布成为p和q。将这些数字相乘得到一个数字,称为n。2.创建一个随机数,称作e,使它与(p-1)*(...

2020-03-12 21:03:52 25986

原创 质数筛选算法

判断方法1.直接计算2.埃拉托色尼筛选法3.拉宾米勒算法直接计算import mathdef isPrime(num): # 判断数是不是质数 if num < 2: return False # 目标数字的平方根内的整数是否能整除,如果能整除说明不是质数 for i in range(2, int(math.sqrt(num))...

2020-03-11 21:51:31 26204

原创 一次一密加密法

简介一次一密(OPT)加密法:是牢不可破的加密法,这个加密法不便于日常使用,通常只用于高度机密消息。维吉尼亚程序无需任何修改就可以实现此加密法。在维吉尼亚加密法的基础上增加以下条件便是一次一密加密法:1.密钥和要加密的消息同样长2.密钥由真正随机符号组成3.密钥只用一次,永不对其他消息复用一次一密加密法的密钥叫做密码本.为什么牢不可破1.如果密钥和消息一样长,那么每个可能的密文字母...

2020-03-10 22:10:25 32285

原创 破译维吉尼亚加密法

思路2种方法:1.字典攻击:把字典文件里的每个单词作为维吉尼亚密钥来尝试,这种方式只适用密钥不是随机密钥。2.利用卡西斯基实验来破解,即使是随机密钥也能工作。建议永远不要使用英语单词作为维吉尼亚加密密钥,这样容易受到字典攻击。卡西斯基实验1.在密文里找出每个至少3个字母长的重复字母集因为他们是使用密钥里的相同子密钥来加密的相同明文字母2.获取间距的因数次数最高的因数很可能就是维...

2020-03-09 21:38:48 27379 3

原创 维吉尼亚加密法

维吉尼亚加密法使用超过一组替代加密,也称为多表替代加密法。密钥是一系列字母,例如英文单词。加密方法就像在相同的消息上使用多个凯撒加密法。算法大意例如用 "PIZZA"作为密钥第一个子密钥是P 二个子密钥是I 三是Z 四是Z 五是A用第1个来加密第1个明文字母,第2个加密第2个明文字母,以此类推到了第6个明文字母时回过头来用第1个子密钥加密。例如:加密消息为 Common sen...

2020-03-04 21:30:03 28016

原创 破解替代加密法

思路首先必须先找出字典文件里的每个单词的模式,把它们放置在一个列表里排序好,以便获取匹配特定密词的单词模式的所有候选单词。计算字典文件里的每个单词的单词模式,保存到另一个文件里,及 wordPatterns.py文件。计算单词模式的代码是 makeWordPatterns.py理论步骤1.找出密文里的每个密词的单词模式2.找出每个密词可以解密成哪些英文单词3.使用密词的候选单词列表为...

2020-03-02 22:00:19 26287

snap7-SDK包

压缩包内包含snap7 64位和32位DLL,还有python简单成功代码

2021-01-01

flash_download.zip

这是提供烧入二进制文件的小软件。 如果开发人员想隐藏源代码的话可以同过生成二进制文件,然后让他人烧入使用。

2020-05-14

tango-controls.pdf

详细介绍了Tango Control System 的使用和搭建。 分别在不同设备上搭建,顺便详细展示用途。

2020-04-13

HV_motor.zip

这是一款真空CCD dummy,编程语言是Python 这是一般的控制电机都可以通过参考此代码进行编写。

2020-04-13

GE2048.zip

这是Tango Control System的一个具体Device Server 是与GreatEyesGEVAC2048真空CCD设备通讯,进行读取图像数据。

2020-04-13

pytango.pdf

详细介绍Tango Control System的使用。 包括系统部署,创建Device Server步骤,client代码编写,通信协议,使用方法。

2020-04-05

dictionary.txt

简单英语字典文件 其中包含大部分实用单词

2020-02-17

空空如也

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

TA关注的人

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