-
昨天今天下雨天
从前种种譬喻昨日死,从后种种譬喻今日生; 过有千端,惟心所造; 万般取舍求不得,流水漂萍风吹絮; 青山万釰,不拒不迎;
-
洪流
盛世万金,乱世斗米;
-
完全支持中文的tinyxml实现
-
人生短短急个球啊
人生短短急个球啊,人为制造出来的东西很多,包括工作,包括职业生涯,包括城市,包括证书;包括工商注册,法律,道德,美食;乱花渐欲迷人眼,一日踏尽长安花么,什么浅草才能没马蹄啊?
-
突然有一种巨大的感伤与恐慌
缘起九年前,毁于一场突如其来的祸端;九年后冥冥中明了,话起; 斯人依旧,于我是一种巨大的喜悦,于其则开选择之路何尝不是对我当初的现实报,有那么一瞬一种被心疼与恐慌包围的感觉像电击一样传遍全身,让我几乎透不过气。我一直以为自己很麻木,其实我依旧是当初的少年。有多久没有尝试到这种极度害怕刚找到却将失去的感觉。 如果事情经历波折终将走上正轨,我愿用余生守护这来之不易,终年如一日。
-
BCB和Delphi的互用
原创作者sun28 BCB和Delphi互用是很方便的。特别是在BCB中使用Delphi程序,有时候几乎什么都不用改就可以使用。众多C++程序员一直希望Borland公司能够将VCL用C++改写,就现在地情况来看这个愿望很难有实现的一天。我不知道Borland公司是否有修改的打算,但BCB和Delphi互用的这一特性一直是Borland公司引以为傲的一点之一。从其员工的文章中就可以看出这一点。这也是使用BCB和Delphi的好处之一,因为可以进行代码共享,减少了很多重复性的工作,这无疑是一种创举。也正是这一功能使得程序员在工作的时候可以随意地选择工具(BCB或Delphi)。 BCB和Delphi的特点: Delphi能够最大限度的让程序员容易的生成性能很高的、功能强大的组件、应用程序和对象。 BCB允许程序员运用以灵活,巧妙,功能强大而闻名的C++语言编写程序。 BCB和Delphi代码共享的好处: 程序员可以随意地选择适用的工具(BCB或Delphi)进行编程。BCB和Delphi之间的代码共享让程序员不用担心代码是用什么工具编写的。也不用担心一个工具中编写的代码会不会不别另一个工具所认同。而是集中精力用最快的方法去建立你解决问题的模式。然后在BCB或是Delphi中编译。在BCB中使用Delphi比在Delphi中使用BCB更容易,但她们之间的代码在一定程度上都是可以互用的。 BCB和Delphi的代码共享,促进了代码的重复利用。C++和Pascal有很多共性,使得她们共享代码成为可能。C++编译并不比Pascal快。相反由于BCB中使用的是Pascal编写的VCL,因此BCB生成的应用程序比用Delphi生成的应用程序要稍微大一点。当然这一点在今天来说已经无关紧要。 Delphi使用非常简单,语法简单让程序员更容易理解。这使得公司里的新手可以快速的上手,投入到项目中去。参与项目的程序员可以同时使用BCB和Delphi工作。 由于Delphi简单易使,因此非常适用于一些时间要求紧迫的项目。即使你是使用C++的老手,你也可以在时间紧迫的时候选择Delphi来编制程序。然后你也可以再用BCB来编译他们,如果你想这样干的话。这并不会增加你的工作量。 在BCB中可用的Delphi代码 代码形式 说明 Delphi源代码单元和对象 直接编译 Delphi Form 有的版本可以直接编译,有的需要手工改动 Delphi中的函数,方法,结构等 一般情况下可直接编译 Delphi组件 一般情况下可直接编译 Delphi包 直接编译 Delphi生成的COM,DLL,ActiveX,OLE直接编译 Delphi生成的Obj,lib文件 直接编译 在Delphi中可用的BCB代码 代码形式 说明 BCB源代码单元和对象 需要手工改动 BCB Form 需要手工改动 BCB中的函数,方法,结构等 需要手工改动 BCB组件 需要手工改动 BCB包 ????–没试过! BCB生成的COM,DLL,ActiveX,OLE直接编译,代码共享的主要方式 BCB生成的Obj,lib文件 一定条件下可以,比较麻烦 将Delphi代码变为BCB代码 有时Delphi应用程序与C++ Builder应用程序可能需要相互转换。这种转换虽然费时,但并不困难(顺便说一句,进行转换时,我将Delphi与C++ Builder同时运行)。这里只想介绍将Delphi变为C++Builder的过程,反过来也差别不大。将Delphi变为C++ Builder主要有两步。第一步是将Delphi应用程序窗体复制到C++ Builder项目中,第二步是修改Delphi代码。一般情况下这都是没有必要的,除非你想改写为C++代码。下面详细介绍这两个步骤。: 首先要复制Delphi窗体到C++ Builder应用程序中。Delphi窗体与C++ Builder窗体使用相同的基本格式,但至少有一大差别。显然,窗体文件包含窗体本身和窗体上每个构件的尺寸和位置。但窗体文件中也还包含事件信息。具体地说,窗体文件包括窗体及其构件所建事件处理器的描述。在Delphi窗体文件中,事件引用的事件处理器是Delphi方法,而在C++ Builder窗体文件中,事件指向C++ Builder事件处理器。自然,要删除Pascal引用才能在C++ […]
-
便捷ddns
本文将介绍如何使用西部数码的API实现DDNS功能,使您的域名始终指向您的动态IP地址。API介绍:接口地址 https://api.west.cn/API/v2/domain/dns/接口支持两种认证方式1、域名级认证(仅单域名)支持参数 act=dnsrec.update&domain=指定域名&apidomainkey=域名密钥&hostname=完整子域名&record_value=设置的IP域名KEY获取方法,如下图所示,进入管理中心-域名管理-点击域名-右侧上方ApiKey 点击后复制 2、用户级认证 (支持管理多域名)支持参数 act=dnsrec.update&username=用户名&apikey=用户密钥&domain=指定域名&hostname=完整子域名&record_value=设置的IP用户KEY获取 https://www.west.cn/manager/API/APIconfig.asp注意:dnsrec.update接口在更新解析时会删除存在的a记录重新添加,其他api功能可参看 域名API接口文档使用示例:1、群晖NAS先添加自定义服务商服务供应商: westQuery URL: https://api.west.cn/API/v2/domain/dns/?act=dnsrec.update&domain=__USERNAME__&hostname=__HOSTNAME__&record_value=__MYIP__&apidomainkey=__PASSWORD__新增DDNS,选择west 服务商,按截图添加相应的信息 注意:custom 模式下,您需要先在域名解析中添加一条 test.domain.com 的A记录解析。 关于西部数码的域名实现DDNS功能,有不清楚的可以直接通过我司官网在线咨询或提交工单,专业人员将为您解答。
-
传奇源码对于素材处理
这个代码,要说好呢,还是有很多的可以学习的地方的,不过很多地方也是实现得比较粗糙。 要对真彩色支持,首先要了解到: 1、它是16位增强色的,是没有调色板的。具体原理后述。 2、它的素材也是针对增强色设计的,字节可直接用于增强色模式,不可直接用于真彩色模式。 认识到了这两点,基本知道该怎么做了。 先说说增强色模式,现在一般的传奇3私服,会提供一个登录器,登录器除了IP代理之外,还有一个作用就是在运行程序时,把电脑设置成增强色模式,不然按现代的机器,真彩色模式运行,把增强色的数据直接当成rgb颜色渲染,会花屏。 增强色用2个字节(WORD)表示一个颜色,r分量占5位,g分量占6位,b分量占5位,共计16位。 因此每个分量有一个位掩码和一个位移码,对这个WORD数据作用掩码和位移,就可以取出对应的分量的颜色值。当电脑在增强色模式下时,这个操作是自动进行的。 取出rgb分量,还是不能将其用于表示rgb,原因是精度不一样导致的数据单位不一样。 真彩色中,一个分量是一个字节,即8位,而增强色中,一个分量是5或者6位。因此,需要做一个缩放。 例如,红色,在真彩色中,r分量是0xff,而在增强色中,r是二进制11111。 因此,r和b分量需要乘以8,g分量需要乘以4。然后,就可以组合成rgb真彩色了。 因为程序的素材本身就不是真彩色的,因此,我们只需要对surface的操作进行真彩色的支持即可。 首先dx设备要设置成32位深度的,然后,对surface的取色彩操作,要认为是直接在取真彩色的数据,并且在取出计算分量时,相应的要除以8,或4,缩放到增强色的空间。对surface的写入色彩操作,要认为是在写真彩色数据,所以要先把WORD的增强色变换到DWORD的真彩色rgb,然后在写入。另外,因为色彩深度不一样,对surface的pitch处理时要考虑到,因为它是以字节为单位的。
-
[论文素材]plc
基于QT图形视图框架的PLC梯形图编辑器的设计 企业:和利时集团 领域:PLC /PAC/PCC/RTU 领域:智能制造 点击数:2404 发布时间:2021-05-17 16:19:54 分享到: 针对自主可控可编程控制器上位机组态软件的梯形图编程需求,本文设计了一种梯形图语言编辑器。它基于QT下的图形视图框架,对接口进行了二次封装与扩展,实现了梯形图中各组件的创建、绘制与管理等功能。该梯形图编辑器已成功应用于和利时推出的新一代自主可控PLC编程软件平台,为PLC系统的梯形图逻辑组态提供了支持。 1 引言 PLC作为工业控制系统的重要组成部分,是现代工业自动化的重要支柱。2006年,国务院在发布的《国家中长期科学和技术发展规划纲要(2006-2020年)》中提出建设“核高基”重大科技专项,2015年又提出“中国制造2025”。在此背景下,国产化、自主化已经成为PLC市场发展的重要趋势。QT开发框架因其出色的跨平台性和代码开源的特点,成为开发自主可控软件的优良选择。 IEC 61131-3是旨在规范可编程控制器(Programmable Logic Controller,简称PLC)编程语言的国际标准,经过十多年的发展和完善,已被广大PLC使用者和生产厂商所认可和支持[1]。它是国际电工委员会(IEC)定义的PLC编程系统规范,也是工业控制领域的通用标准。梯形图(Ladder Diagram, LD)被称为PLC的第一编程语言,凭借其直观易学的优点,成为最广泛的编程语言[2]。它作为IEC 61131-3规定的PLC编程语言之一,沿袭自继电器控制电路的术语和符号,具有形象、实用等特点,被称为是“面向生产过程的编程语言”。 和利时推出的新一代自主可控编程软件平台AutoThink V4提供了对梯形图语言的编程支持,完整的LD编程组态支持包括前端的编辑和管理,以及后端的编译和执行。本文主要介绍LD前端编辑器的设计和实现。 2 QT下图形视图框架的介绍 2.1 框架组成 图形视图框架(The Graphic View Framework)是QT中基于MVC(Model View Controller)的软件设计模型开发出来的一个图元管理与交互平台。图1为框架的结构图,它由三部分组成: (1)场景(QGraphicsScene) 场景是图元对象存储和管理的容器,也是图元存在的逻辑场所,我们创建的图元只有添加到场景中才能进行显示和操作。 (2)视图(QGraphicsView) 视图是整个框架的对外交互接口,负责将场景中特定区域的内容显示出来。在实际使用中,可以对一个场景只添加一个视图,也可以将多个视图附加到同一个场景来显示其不同区域或不同缩放旋转变换下的状况。 (3)图元(QGraphicsItem) 图元是场景中的最基本元件,单个图元支持各种事件响应,多个图元之间可以生成父子组合等层级关系。 图1 图形视图框架结构 2.2 框架特点 (1)图元管理 QT图形视图架构使用了BSP(二叉空间分割树)的数据结构来组织和管理其中的图元,能够支持大场景下百万数量级别的2D图元的快速查找、排序以及实时显示。 (2)坐标系统 图形视图框架中存在三个坐标系统:场景坐标、视图坐标及图元坐标,每个系统都以自己的中心点为原点分别管理自己的坐标,三套系统之间使用映射来进行坐标转换。 (3)图形渲染 框架设计的坐标系统使每个图元仅需负责自己的图形渲染,图形视图框架基于仿射矩阵变换的运算处理能够快速响应缩放、旋转等高级渲染需求。 除此之外,框架支持图元间的z-order深度排序、碰撞检测,以及动画、OpenGL等高级应用,便于之后的高级应用扩展 。 (4)事件处理 图形视图框架中包含一套事件传播架构,支持对场景中图元进行双精度的精确交互[3] 。 3 LD编辑器在AutoThink V4组态软件中的功能 AutoThink V4是和利时研发的自主可控可编程控制系统的上位机软件,它作为系统中的控制算法组态工具,运行于工程师站中,技术人员通过它来进行现场工程的逻辑设备组态。AutoThink V4基于QT环境进行开发,整体模块结构如图2所示,其中框架管理和变量管理主要负责软件的UI展示与人机交互,IEC组态与硬件配置负责编程语言与硬件模块及协议的组态,数据源通过组态、语法分析、指令翻译等一系列处理,经过编译生成二进制形式的目标文件,最终通过在线模块下发给PLC下位机执行指令。 LD组态模块是IEC组态部分的子模块,分为前端编辑器及后端逻辑转换与处理两部分。梯形图编辑器负责梯形图中元件的创建、删除、选中、绘制、语法检查等管理操作,编辑器中的组态数据经过语法检查无误后,将被LD后端转换为一种预定好的中间语法结构传递给编译模块进行处理,生成目标文件下装到硬件设备端,并在在线监控状态下通过编辑器进行调试。 […]
-
Protected: 明洲记
There is no excerpt because this is a protected post.