自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (26)
  • 收藏
  • 关注

原创 流水线式并行加速

这种并行加速的方式适用于大量数据的复杂计算,而且这些计算必须是重复的。工作组中的工作员数量经计算或测试来决定,对业务中执行时间较短的部分设置少量工作员,对业务中执行时间较长的部分设置大量工作员,合理安排线程数量,可充分发挥CPU的算力。由于传送器的存在,监视线程能够检测到任务积压的情况,这就可以提前预判内存溢出和超时异常,及时止损,清理掉那些没有希望完成的请求或暂停受理请求,保障系统稳定性。由于每个工作组都只执行完整业务的某个片段,每个工作组的业务代码都相对简单,这就提高了业务代码片段的维护性。

2024-03-16 23:07:49 354

原创 清除Eclipse导出可执行JAR的记录

导出文件记录:".metadata\.plugins\org.eclipse.jdt.ui\dialog_setting.xml"主类记录:".metadata\.plugins\org.eclipse.debug.core\.launches\*"删除这个文件可以清除导出文件记录。清空这个文件夹可以清除主类记录。

2024-01-17 22:57:17 333

原创 职场六道轮回

本文引用佛家六道概念,阐明职场的层级,并非宗教文章,可能与佛家学说有所出入。

2023-02-01 09:12:50 432

原创 韩信点兵的算法

 秦朝末年,楚汉相争,韩信率兵打仗。某次,他急需点兵迎战,就命士兵布阵三次(命3人一排,多出2名;命5人一排,多出3名;命7人一排,多出2名)后,直言有1073名勇士可击垮敌兵,其神机妙算鼓舞士气,旌旗摇动,大败楚军。

2023-01-15 11:24:47 2148

原创 仿射变换原理的简单化理解

仿射变换用初级的知识去理解

2022-12-14 17:06:53 698

原创 Win32编程串口超时结构体的一般性设置

  Win32串口结构体有5个成员变量:读数据拼接超时、读数据总超时常数项、读数据总超时一次项、写数据总超时常数项、写数据总超时一次项。  拼接超时即是指两个字节之间不大于这个毫秒数,底层即将这两个字节视为同一组报文。仅读数据有拼接超时。这个参数通常都是正值,不应设置为0或负数。  总超时常数项是指调用函数开始时进行计时,如果没有收到新数据,则等待这个时间。总超时一次项是每接收一个字节,则在常数项的基础上增加一份时间。  一般我们把写超时都设置为0,读数据总超时一次项也设置为0,只使用读数据拼接超时和读数据

2022-12-06 09:37:29 1032

原创 Hostlink读写寄存器报文分析

Hostlink是欧姆龙PLC默认的串口上行通信协议。

2022-11-29 13:13:11 1257 1

原创 串口服务器通信时间试验

对TCP通信时间的一次测量试验

2022-11-22 15:45:43 907

原创 Linux系统下使用socat将串口映射到TCP服务器端口

socat TCP-LISTEN:8899,fork,reuseaddr FILE:/dev/ttyS1,b110,cs8,parenb,parodd,cstopb,raw,echo=0

2022-02-08 22:18:24 5404 4

原创 树莓派开机启动终端运行方法

在路径"/home/pi/.config/autostart"下建立一个文本文本,并以后缀名".desktop"结尾。根据是否需要显示终端,写入下面两段内容之一:

2021-10-30 15:28:25 3583

原创 是什么使我放弃了B/S

  刚学Java的时候,听闻JavaEE才是Java的主战线,耐着性子一点点从基础开始,终于学到了JavaEE,然后完成了JSP的学习,后来暂停了SSH的学习,渐渐地再也没有学习JavaEE的动力了。但我当时还是觉得B/S结构是某些问题的绝佳解决方案,也试着找过有没有什么比JavaEE更简单的方法,毕竟我只想要一个画面,底层的东西根本不需要非得放WEB服务器上。  起初是想深入研究一下Java语言,才暂停了JavaEE的学习。后来开始不喜欢JavaEE了,原因是这只是单纯的职业技术,没有什么玩点,我把多

2021-08-09 10:28:45 117

原创 工控软件控制系统设计

概述  工控软件一般指的是工业自动化软件、数据采集软件。工控软件更接近于游戏软件,与办公软件有着根本区别。  工控软件的特点是:环境不可靠、无法简单地按MCV划分、总是需要根据硬件进行调整、不更新、不维护。  工控软件与游戏软件的相同点为:原始命令简单但存在同时处理多个命令的情况、软件按设定的帧率循环运行(除定时器外几乎没有什么操作系统意义上的中断事件)、需要内置人工智能、几乎没有什么框架可选(甚至更少)、世界观是直观形象的。  工控软件与办公软件的相同点为:简约的表现方式、重大的责任、几乎

2021-07-23 11:45:04 2672 1

原创 Modbus ASCII LRC生成

Modbus ASCII的报文生成顺序为:1、生成PDU2、生成LRC校验码,将LRC附加到PDU后面3、将2中的数组转换成HEX格式的文本4、在HEX格式文本的0位置插入冒号,在HEX格式文本的后面附加Windows换行符生成LRC的公式为:LRC= - sum(PDU)以下为LRC校验码生成算法的通用性示范:/**将HEX格式的数据流包装成字符串对象*/ public static final int getLRC8FromAscIIBytes(byte[] hex, .

2021-07-12 15:45:32 749

原创 跳跃线性链表容器

此容器用于将ArrayList与LinkedList进行结合,利于容纳大量数据之后对容器的中间段进行增删。一般而言,ArrayList的性能总是优于LinkedList,

2021-05-31 11:18:06 90

原创 四位均衡磨损格雷码

什么是均衡磨损格雷码?均衡磨损格雷码是一种与标准格雷码具有相同的迭代后只变化一个位的特性,但每一个数位变化的次数相近的编码。为什么要均衡磨损?由于继电器输出PLC比晶体管输出PLC具有更好的可靠性,如果用继电器输出的PLC代替晶体管输出PLC操作变频器的16档调速可以提高系统的可靠性。但是继电器的寿命是有限的,为了延长继电器输出型PLC的使用寿命,需要对继电器的动作次数进行均衡化,使每一个继电器动作次数尽量相近或相同,这样才能使整机的寿命最大化。均衡磨损编码采用遍历法筛选得到以下两种均衡

2021-04-22 21:16:54 210

原创 文件创建时间、修改时间、访问时间的定义

创建时间:文件在这个虚拟分区首次被编录的时间,文件被创建或复制到另一个分区的时候会改变这个时间;修改时间:文件的尺寸发生变化的时间,采用输出流写必然会有文件尺寸清零再重写的过程,所以输出流保存文件必然修改文件的修改时间,而文件内存映射则不一定会改变文件的尺寸。这个时间应该是记录文件系统中被文件占用的簇被分配或回收的时间中的最大值;访问时间:文件被复制的时间,不论复制到同一个虚拟分区还是另一个虚拟分区,都会改变访问时间,但剪切操作则不会改变访问时间;输入流、不改变文件尺寸的文件内存映射读写操作都不

2021-04-13 14:20:11 10298

原创 冗余系统设计前提

并非所有设备都可以设置冗余,冗余系统的设计相比非冗余系统具有更严格的限制。符合以下条件的设备才是可行的:1、没有随机出现的未知数量的变量实例2、数据存储结构是固定的如果一台设备运行过程中会随机出现未知数量的某种变量的实例,或数据存储结构是自由的,就意味着无法对这些数据进行有效的同步,此时的冗余设备是不稳定的。且冗余设备的恢复无法实现。具体可以实现冗余的设备有:1、不保存变量的设备:RTU、单稳态继电器等都属于此类;2、组合逻辑模块:使用传统梯形图编程的PLC、按照组合逻辑方式开发

2020-11-16 09:16:52 644

原创 工业通信网络结构

工业通信网络结构工业通信网络包含所谓的工业现场总线、局域网、公网等概念。这些概念在物理环境下并不是界线分明的,是一种主观上的分类。在物理环境下,目前工业网络结构都是设备与双绞线之间的通信。可以互相通信的设备与双绞线的集合称为网络。当网络中含有工业生产、加工、安防设备时,此网络可以称为工业通信网络。工业通信网络与其它网络命名不是互斥关系,同一个网络可以有多种定义。网络结构是对设备通信逻辑的设计理念,目前已有的网络结构有多主结构(如:CANOpen)、一主多从结构(如:Modbus)、一从多主结构(如:

2020-11-10 12:04:23 1355

原创 互联网发展终端和桌面的未来

对于像我们这一代的年经人而言,大数据、云技术貌似是未来科技发展的主流方向。然而,了解过计算机发展的历史后,这些所谓的“高科技”其实是计算机行业中最为古老的东西。事实上目前人类掌握的所有技术都是古老的技术,现代与过去的区别在于外观、名词、规模,共同点在于原理、结构、建设方式。分布式和集中式如何定义的?其实分布式和集中式是同一事物的两个方面。一般用于区分依赖互联网的网络应用和自由的单机应用。当我们看到一个应用的用户群的形态时,我们发现网络应用的用户分布于世界各地,单机应用的用户只能在一个位置。于是,基于此种

2020-10-18 11:43:40 618

原创 对一些关于编码格式方面的老生长谈做一个重新的思考

一个函数中源代码不超过30行这个建议的原始意义在于使一个函数能够在显示器上完全显示。而多数的显示器大约就只能显示30行源码。遵循这一建议后,我们将会发现一个问题,虽然单个函数的可读性提高了,但是代价是为了分散源码而不得不产生大量的一次性的函数。这些一次性的函数不光使程序整体变得凌乱,在IDE中还会占用掉大纲空间。总体上看,提高单个函数的可读性而使工程更混乱并不可取。最初提出此建议的人,在当时的历史背景下,他所看到的工程是结构简单、功能单一的程序,甚至于一个进程只是为了进行一个数学运算。然而软件技术发

2020-10-14 10:32:57 158

原创 工控机JVM启动参数堆大小的设置建议

由于工控机上的内存一般都不大,多为2G或4G,为了延长寿命,通常会把虚拟内存关掉,而操作系统会用掉一半的内存,那么能够给应用程序使用的内存就很小了。其实只运行一个JVM的情况下,JVM会适应操作系统而自动调整堆大小,所以正常2GB以上的内存即使安装64位Win10也没有问题。但是如果还需要使用多个其他的辅助程序的情况下,JVM浪费内存的毛病就可能会导致系统不正常。工控机经常会安装一些辅助程序,比如SQL Server社区版、内网穿透客户端、VPN客户端,这些应用都需要消耗一些内存,JVM随机浪费内存的情

2020-09-16 09:45:03 314

原创 浅谈公共框架、定制框架和无框架

正规的软件工程总是遵循某些框架,以便于防止员工更换导致项目无人接手。几乎所有的框架都无法从根本上解决代码变乱的问题。其原因在于自顶向下的设计模式无法适应无限变更的工程。但总是一种让它越来越乱的方法能让代码继续维护下去。当软件遵循公共框架的时候,反编译的代码就具有一定的技术价值,就产生了技术风险。一些小工程和不正规的团队的工程或特殊工程没有按公共框架来做,这些代码即便开源也不会有人问津。因为即使看得懂,也无法简单地利用。此外,还有无框架工程。为了各种目的,公司不允许工程师深入了解一个订单的需求,工

2020-08-19 10:29:26 489

原创 Python与JAVA仿三菱PLC的性能比较

测试背景是一款自动化软件平台上的逻辑模块性能对比。能够实现复杂逻辑的目前有结构化文本(指令表)和Python(Jython)两个。三菱指令的解释器是原创的,因为没有相关的Java支持。Python程序的解释器是Jython2.7.2。由于功能等级不同,三菱指令的编译时间较快,对程序的修改是无缝接入的。Jython的compile函数调用时间约5秒,但可以使用Python的高级功能。实际运行时不再编译,所以这个时间没有测。编译完成后运行几分钟后,对逻辑区的运行时间进行测量,排除内部IO区的干扰(例

2020-08-18 16:29:52 685

原创 带有点的IPv4输入框和带冒号的时:分:秒输入框的制作方法

固定格式文本框在Windows控制面板中的网络配置和系统时间设置中有出现过。但是MFC、JavaFX、SWT、HTML中都没有这种控件。假设这是一个系统控件,为什么又不让应用层使用呢?显然假设不合理,那么也就是说这种固定格式文本框并不是一个系统API提供的功能。固定格式文本框的本质是一个不可编辑的可见文本框和若干个透明背景的小文本框。文本框的背景颜色可以设置成透明,再把透明背景的文本框放到一个普通背景的但不可编辑的大文本框上,看起来就好像直接操作的是那个大文本框一样。当小文本框中输入了某个分隔符或字

2020-08-10 10:24:26 254

原创 延时函数名称sleep和delay的区别

延时函数的两种常用名称是sleep和delay。一般在上位机多见sleep,单片机常用delay。那么sleep和delay的意义有何区别?sleep意为睡眠,即线程挂起,由定时器重新唤醒线程。sleep作用期间,该线程不占用CPU资源。delay意为延迟,即线程等待,由线程自身进行循环查询,在设定时间之后退出循环。delay作用期间,该线程占用CPU资源。在上位机,delay常可以和sleep组合使用,即循环查询中调用sleep,降低CPU占用率。sleep是由系统内核、固件库或特殊功能寄存器

2020-08-03 10:41:01 8378

原创 生产过程的几种模型

所谓生产过程,就是指一个产品从无到有的过程。产品是一个企业用以盈利的价值载体,产品的生产,目的在于产生额外的交换价值,而不在于产生新的使用价值。对于零件加工工厂,产品是指通过对原料进行切削和变形得到的零件;对于电子加工厂,产品是指利用电子元件和PCB板料、焊料制作而成的电路板;对于装配工厂,产品是指用零件、元件、电路板、耗材等组装而成的机构或机械;对于系统软件工厂,产品是用各种低级指令和固件库程序制作的操作系统软件;对于SDK工厂,产品是用操作系统API组装而成的基本模式和算法;对于平台工厂,产品是用S

2020-07-30 14:44:44 4162

原创 Java11及更高版本的JavaFX配置

自Java 9开始,JDK增加了模块系统,把JavaFX分离了出来。不过即使分离出来,JavaFX也还是属于JDK的一个插件。这种插件有两种用法,一是在JDK外部安装,通过java命令导入,二是嵌入JDK中,把JDK扩展成自带JavaFX的版本。外部安装的方法需要使用以下格式启动JARjava -Dfile.encoding="UTF-8" --module-path "D:\lab\java\Library\lib\jar\openjfx-13.0.1_windows-x64_bin-sdk\j

2020-06-11 11:00:21 6382 3

原创 尽量不要更改运行中的py文件

Python有一个特点,就是程序文件是文本文件。它又和bat不同,bat的更改会实时影响脚本的运行,而py文件更改不会影响已经运行的Python进程。如果要刷新py文件的更改,就必须要重新加载这个py文件。作为子进程使用时,python可以方便地更改程序,而不需要编译,只需要在上级进程重启一下就行了。Python比较适合实现需要快速修改又有复杂逻辑的业务代码。使用Python时需要注意,如果修...

2020-05-06 11:26:06 2209

原创 不要使用命令行新建explorer进程的方式打开文件夹或文件

打开windows后,系统默认启动一个explorer进程。然后还可以使用命令行启动新的explorer。命令行启动explorer一般用于打开网页或文件夹,也用于以默认程序打开文件。但是新建explorer打开文件夹或文件时,这个进程不会自动退出,也不能在父进程强制关闭。多次操作后,一些低配的电脑就会卡死。explorer用于打开网页时,测试用的浏览器为360浏览器时,退出浏览器后半分钟,e...

2020-04-27 11:29:29 1240

原创 用Java实现简单的上位机三菱PLC

上位机已经有丰富的编程语言,所以不再需要完整的PLC功能。提供梯形图的指令是用于快速配置的。package pers.laserpen.util.automation.plcEmulator;import java.util.*;import java.util.Map.Entry;import java.util.concurrent.ConcurrentHashMap;impo...

2020-04-20 15:38:08 3589 2

原创 数据拼接三要素

什么是数据拼接~  任何在机器间传递多组相互独立报文且不能保证每一组报文各自同时传达的通信方式都需要数据拼接。  所谓“一组报文”是指具有独立含义(或空含义)的命令、文件、数据、信号等二进制数字。一组报文可以看作是一个二进制数字,数值大小相同的报文具有相同的含义,但具有相同含义的报文不一定有相等的数值大小。  不能保证每一组报文各自同时传达的通信方式,是指无法从物理层保证所传输的数字相互独...

2020-04-06 10:44:58 1666

原创 WIN32串口通信重叠方式打开的JNI代码

/* DO NOT EDIT THIS FILE - it is machine generated */#include "JNIInclude/jni.h"/* Header for class pers_laserpen_util_communication_serialPort_NativeSerialPortUtils_JNI */#ifndef _Included_pers_...

2020-04-05 16:17:37 135

原创 二维平面覆盖算法(SolidWorks中PhotoView 360 的图块渲染顺序)

这个需求就是要在一个正方形矩阵中,写入连续的自然数,且矩阵中任意两个差为1的自然数位置要相邻。一切都是从一个[ 0 ]开始的。然后选择一个增长方向。可以向右或向下。我以向右为例,第一次增长后得到如下矩阵: 0 1 3 2 这个矩阵很简单,可以直接手工填写。但我们需要让尽可能多的自然数以连续的方式填充到正方形矩阵中。也就是达到这个效果:0 1 ...

2020-03-16 15:10:52 551

原创 Java修饰符的顺序

Java修饰符分为几个层次:1、外权限:public、protected、【空】、private2、外表现:synchronized、【空】3、内实现:abstract、native、【空】4、静态:static、【空】5、访问约束:final、volatile、【空】6、数值约束:strictfp、【空】但是按eclipse的图标显示情况,似乎并没有按层次来排序。以下...

2020-03-05 15:04:05 831

原创 西门子V20变频器Modbus通信的配置和报文

这几天找了很久西门子V20的Modbus通讯资料,基本都说不清楚。所以发此文以可操作的形式介绍一下西门子V20变频器的MODBUS通讯。假设我们现在有一台不知道什么状态的V20,首先应该进行恢复出厂设置。恢复出厂设置短按M键,进入参数设置。找到P0003,设置成0;这一步不是必须的,只是为了更快的找到需要的参数。 找到P0010,设置成30; 找到P0970,设置成21;此...

2020-02-21 11:15:34 27158

原创 弱引用的实现

所谓弱引用是指所持引用不能防止其引用的对象被释放的一种指针。实现弱引用需要额外设计一个指针包装者:struct Box { void *object=nullptr; size_t refCount=0,weakCount=0;}这个Box和object对象一样是需要new出来的。把object的指针放入Box中,再把Box指针放入一个初始的强引用容器中...

2020-01-17 14:38:53 592

原创 Java Object intern算法

Java中内置有一个String.intern方法,对于重复使用的内容相同而内存地址不同的String对象,调用intern方法可以节省内存空间。如果将String作为HashMap的键来使用,intern可以提高性能。那么今天我来向大家介绍一个针对Object的intern。Java没有提供这个方法,所以我实现了它。package pers.laserpen.util.java;i...

2020-01-16 20:53:56 215

原创 Java声音设备与二进制的转换

对网上一些代码进行整理,把多余的东西全都挖掉了,只剩下声音与二进制的转换代码。这是广大网友帮助的结果,我也不能私藏,现将代码公开如下:首先是需要一个静态工具类,它是网友们提供的代码的纯化,每一个函数代表一个独立的步骤,有多种分支,未必全都要用上:package pers.laserpen.util.multimedia;import java.awt.Toolkit;import ...

2019-12-25 16:33:02 989

原创 PLC结构化文本设计模式和算法

前言.  目前PLC应用学科并没有设计模式方面的教程,导致学员解题都得从零开始设计。梯形图无法发展出PLC的真正功能,所以我们需要以结构化文本来实现设计模式。本文以普及结构化文本为目的,将教大家结构化文本的入门和PLC编程设计模式。  本文将会讲解高度抽象的设计模式,设计模式与案例无关,并不以案例讲题。反正学校按这种方式教了那么久也没人听得懂。我将主要以理论为主,避免与具体案例绑定,以防止读.........

2019-12-19 23:26:04 10444 13

原创 标准C作为子进程时的刷新问题

使用C和C++的输出流向调用的进程返回字符串时,C++代码在调用std::endl后会输出,而printf则一直到子进程退出才有输出。查看std::endl后,发现起作用的是std::cout.flush();在起作用。为了使C语言输出流也能正常向调用者返回字符串,需要找到C中的flush函数。C语言的flush函数为fflush,在stdio.h下,用法为fflush(stdout)。在...

2019-12-10 22:05:51 160

获取质数表.zip

以8字节小端在前方式存储一系列的质数表。程序可暂停,重新启动后仍然从文件尾部开始计算新的质数。需要java8运行。质数表应以共享内存方式打开,从0位置开始,映射的指针转型为long long *类型。

2019-11-06

OPCUA2018年10月开发包3.1.6

从官网下载的OPCUA2018年10月最新版。 内含java开发所需要的资源及教程 lib:OPCUA的jar samples:例程 tutorial:教程(英文,官方提供) 另外还有 lib-android:用于安卓的sdk codegen:不明用法,内有commandline和maven-integration两个文件夹,估计是用于web开发的。此处还有一份教程,也是英文的。

2018-10-28

JAVA单、双行科学计算器和高精度计算器源码

--基于JAVA的单、双行科学计算器和高精度计算器的核心源码,见src文件夹。附有示例,见src_math文件夹。不仅可以用于开发JAVA的单、双行科学计算器,还可以简化高精度算法的代码。 --同时,本计算器核心具有很强的扩展性,只需要简单地建立一个匿名内部类对象,就可以新建一个运算符。如果需要使用单行计算器的功能,还需要保留运算符对象的引用。详见示例。 --科学计算器和高精度计算器的使用方法是一样的,只不过源码中提供的现有运算符数量不同。高精度计算器的运算符复杂一些,没有全部实现。如果使用者有需要,请自行扩展。

2016-05-10

JNI指令代打2.0

使用gcc和g++编译jni指令太长,很麻烦。所以做了一个编译工具JNIBuilder.jar。 因为是用于jni的,所以默认使用者的电脑上已经安装好Java和MinGW,并且可用。 并提供一个测试例程。功能是jni函数调用java函数弹出一个字符串,显示“在那遥远的地方,UNICODE编码转换工具。”弹窗背景色是随机的。 例程C++代码是src文件夹下名字最长的那个cpp文件。java主程序是sample.razerpen.jni.TestJNI。 JNIBuilder的使用方法是,从上到下依次点击三个按钮,选择源文件,目标文件,然后编译。自动识别C文件和cpp文件,调用gcc或g++编译。可以同时选择多个源文件,C文件和CPP文件可以混合在一起编译。 与上一版的改进是增加了错误窗口,和多文件编译支持。 需要把该工具放在源文件的母文件夹或相同文件夹。目标文件要在该工具的相同文件夹或者子文件夹。

2015-12-03

编译JNI的gcc指令代打和测试例程

使用gcc和g++编译jni指令太长,很麻烦。所以做了一个编译工具JNIBuilder.jar。 因为是用于jni的,所以默认使用者的电脑上已经安装好Java和MinGW,并且可用。 并提供一个测试例程。功能是jni函数调用java函数弹出一个字符串,显示“在那遥远的地方,UNICODE编码转换工具。”弹窗背景色是随机的。 例程C++代码是src文件夹下名字最长的那个cpp文件。java主程序是sample.razerpen.jni.TestJNI。 JNIBuilder的使用方法是,从上到下依次点击三个按钮,选择源文件,目标文件,然后编译。自动识别C文件和cpp文件,调用gcc或g++编译。新手工具,不支持多个源文件。

2015-12-03

JAVA精确定时器

JAVA精确定时器,利用系统时间,使长期工作的误差稳定。 功能: ·可定时启动任务或直接启动任务 ·重复启动任务(时间间隔可在任务线程中改变,范围大于100ms,否则精度降低) 引用列表: ·import psn.razerpen.thread.AccuracyTimer; ·import psn.razerpen.thread.AccuracyTimerMission; ·import psn.razerpen.time.TimeStruct; 使用方法: //1·继承AccuracyTimerMission接口,创建一个类。 class MyTimer implements AccuracyTimerMission { //2·指定一个周期 int nDelay=1000; //3·重写run方法(如不需要使用新线程执行任务,也可留空) /** * 任务线程,本函数继承自Runnable */ @Override public void run() { System.out.println(new TimeStruct()); } //4·重写RunInCurrentThread(long nCurrentMilliSecond)方法。该方法接收当前时间,并返回下一次执行的时间。如果返回值不大于nCurrentMilliSecond则中止计时器。该方法必须重写。 /** * 接收当前时间的毫秒值,并返回下一次执行的毫秒值。如果返回的下一个时间早于当前时间,则退出 */ @Override public long RunInCurrentThread(long nCurrentMilliSecond) { return nCurrentMilliSecond+=nDelay; } } //5·创建主线程代码 public class TestTimer { public static void main(String[] args) throws InterruptedException { //6·创建一个AccuracyTimer对象,并指定一个任务。 AccuracyTimer at=new AccuracyTimer(new MyTimer()); //7·(可选)如果不需要在新线程中启动任务,则写 // at.SetNewThreadEnabled(false); //否则不写或者写 // at.SetNewThreadEnabled(true); //8·(可选)设定第一次启动的时间点SetNextMissionTime/SetNextMissionMilliSecond或延迟时间SetNextMissionMilliSecondFromNow //设置为当前这一分钟的第59秒后启动(不写此行则表示直接启动) at.SetNextMissionTime(Integer.MIN_VALUE, -1, -1, -1, -1, 59, 0); //9·启动定时器 at.Start(); //10·主线程继续 for(int i=0;i<60;++i){ Thread.sleep(1000); } //11·结束定时器 at.End(); } } 详见sample.razerpen.thread包中TestTimer及各代码文件中注释

2015-10-14

Java文件操作类

pan.razerpen.file中提供一个多对象单文件存储类FileMap和一个单对象单文件存储类FilePage。 提供方便快捷的基本类型和对象的文件存取方式。详细用法见sample.razerpen.file

2015-09-02

非阻塞的Socket类20150331

使用接口SocketIO简化Socket编程。一步建立Client,两步建立Server,一步打开UDP,全部非阻塞操作。

2015-03-31

封闭式Java Socket代码

  封闭式Java Socket代码,提供TCP UDP 阻塞和非阻塞的方法,无需知道具体实现方式,只需要Main.java(Server)Main2.java(Client)Main(UDP)三个例程,简单建立联接。SocketIO接口提供精简化的方法,一体化输入输出,TCP UDP 阻塞 非阻塞统一接口。   目前只能发String,发byte流的试验失败,nio的试验失败,希望高手解决。   UDP使用固定缓冲,多出的部分丢包处理。适用于工业控制。通用性的UDPSocketIO类希望有高手实现。   该试验针对透明协议WIFI转串口设备。

2015-03-21

开目鼠标滚轮操作脚本

  已经过时的开目CAD3.8版本无法使用鼠标中键和鼠标滚轮。本资源是用按键精灵制作的可执行程序。   双击打开程序。   滚轮向前:放大   滚轮向后:缩小   鼠标中键单击:拖动1秒钟(因为暂时没有找到合适的方法,只能做成每单击一次,进入拖动模式1秒钟)

2015-01-23

VS2010用Win32开发新手模板

  本人根据教程编写的Win32项目模板,把winproc函数分解成多个函数,使用消息映射的方法来处理消息(具体操作请模仿我的代码)。   把WM_PAINT中使用的HDC句柄封装到CHDC类中,可以用这个类来完成画线,设置半透明等操作。   头文件SStory.h中有一个模板类,可以当成栈或者数组来用。   好像没有很多注释,不过打开类的定义应该就能看懂。   WinMain函数写在头文件里了。在源文件里的BuildProc()函数和BuileEvent()函数是这个模板的关键。

2013-03-31

Win CE5.0模拟器SDK

Win CE5.0模拟器的SDK刚下的,那家伙居然分两份上传,所以我又重新上传了一份。

2013-01-19

Unicode和ANSI对照表

就是Unicode和ANSI码的对照文件。 四个文本,两个程序。 文本Unicode是Unicode表 Unicode2ANSI是Unicode文本另存为ANSI unicodeandANSI.txt是对照表的Unicode版本 unicodeandANSI2ANSI.txt是对照表的ANSI版本 有些Unicode字符在ANSI中是没有的,它们的ANSI码是“63”(问号)或者“9”(不可见字符)。 两个程序有兴趣的人自行研究了,很简单的反正。只是两个程序及要处理的文档要放在同一个目录下。

2012-05-18

文字加密套装(简单的文字加密)

你想在众目睽睽之下写日记吗? 你是否想向心上人表白而难于开口。 不妨加密一下吧。 加密程序:点那个“✔  ”新建一个文件。设置密码(只能在开始的时候设一次)。然后写啊写啊写。关闭和换行的时候,编辑框里的文字会自动保存的。 读取程序:还是点那个“✔  ”打开一个文件。写入密码。鼠标左键下翻页,右键上翻页。中间轮子也是可以用的。

2012-02-28

Unicode快速查

32位的Unicode。 上一次发的那个用了动态库,还要安装。结果比静态的还大。 这回做成静态的,再发一次。 另外,有看到我上一次那个要安装的Unicode查询器的话,可以把它踩下去。

2012-02-28

Unicode Win7x64用

用于Win7x64的程序,静态库中使用MFC。 不知道64位有什么好处,反正做了一个。用64位的系统不用64位的软件是有点别扭。

2012-02-28

快速的傻瓜型UNICODE查询

即时输出的双向转换器,内容变化时,直接输出。 四个框分别对应 “字符” “十进制” “十六进制” “八进制” 四个编辑框都是输入。 同时,四个编辑框也都是输出。 还不会用?往四个框里随便打几个数字就明白了。

2012-01-02

最小的UNICODE文件

生成编码文件的控制台程序。 运行后,编码保存在"D:\unicode.txt" 【精确度低-许多外国字都不能显示】 网速不给力,且只需要中文和英文部分的可以用这个。 汉字主要部分是从4E00开始的。

2011-12-31

串口工具3合一

串口调试助手:只要开一个实例,它的两个窗格会自动关联到相联系的两个串口。 串口调试器(2002和2007):要开两个实例,一个实例的两个窗格指向同一个串口。

2011-11-10

Visual C++2010英文教程

英文的Visual C++2010教程。比中文的易懂多了。学过Tuber C的很容易就看懂的。而且也没什么生词。

2011-10-06

游戏策划英文教程

游戏开发的英文教程。本书是策划教程,不是编程教程。

2011-09-10

Altium Designer Summer 09破解器

破解说明:(摘抄) 1.运行AD9KeyGen,点击“打开模板”,加载ad9.ini,如想修改注册名,只需修改: TransactorName=horose horose用你自己的名字替换,其它参数在单机版的情况下无需修改; 2.点击“生成协议”,保存生成的alf文件到你的安装目录下; 3.运行ads09crack,对安装目录下的dxp.exe文件补丁,注意运行破解时软件没有运行; 4.启动DXP,运行菜单DXP->My Account,点击Add Standalone License file,加载前面生成的license文件。 注意: 1.仅适用于Build 9.3.1.19182 2.破解已去除标题上的Not signed in 3.局域网内用同一license不再提示冲突 4.仅供学习研究使用,勿用于非法用途。 horose 2010.2.15

2010-11-12

精密坐标纸(doc,docx,pdf,edd四个文件,内容相同)

这是用亿图作的1mm×1mm坐标纸,四个文件(.doc;.docx;.pdf;.edd(亿图打开))是一样的内容。 大小是(80分度×80分度)×(1mm×1mm)。

2010-10-23

便携式文件夹加密器_5.5.zip

用于加密重要文件的软件(免费版),是正版的免费部分,能够满足一般用户的基本需求。如果要更高的功能,请自己购买收费部分。

2010-10-20

Turbe c for windows

用于turbe c标准C语言编程的应用软件。

2010-10-20

PowerDefragmenter

快速免费的磁盘维护工具,dos界面,有图形外壳

2010-09-14

空空如也

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

TA关注的人

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