- 博客(1)
- 资源 (8)
- 收藏
- 关注
原创 容器、接口、注册订阅、组合实现驱动层隔离
在工控系统开发中,随着项目和业务量的增加,接触到了各种各样的设备,上位工控系统要与设备通过串口、网口、PCI访问,等各种方式实现设备指令的调用。 各种设备指令,在业务调用层被映射到了各种功能调用和视图表现。因为新设备每个项目都在增加,客户也需要对设备的监控或控制的粒度各不同,底层的设备驱动层则要封装大量的功能函数。每次随着新设备的引入,业务场景为了对设备的调用功能更好的描述,也需要更改对
2016-04-27 16:49:21 590
Zebra打印机,中文转ZPL指令的.net实现,替换FNTHEX32.DLL,源代码实现
编写API的目的,Zebra官方提供的Unicode转化组件FNTHEX32.DLL,是一个非托管组件,托管环境下还需要再封装。
该组件直到现在还未找到对应的64位程序兼容组件,为了解决32位和64位的兼容问题,最后编写开发此API,
此API完全用.net开发,无需考虑兼容性问题,实现与FNTHEX32.DLL相同的效果。
此API改善了FNTHEX32.DLL中的字体问题,支持windows下所有字体。
程序处理思路:
先将文本用GDI+做绘图,
在内存中绘制出文本对应的图形,
然后将图形进行像素点取点处理,
取出每一个像素点,进行灰度处理,
按照0-255的灰度值,进行黑白判断,
此处取了一个中间一点的值,180,作为黑白分解点,
取出的黑白点,按照01组合,每八个像素点组合成一个字节,不满0填充,0代表白色像素点,1代表黑色像素点
将字节转化成对应的16进制字符,完成无压缩数据获取
在无压缩数据的基础上,按照ZPL指令中进行压缩,可以大量缩减字节长度,ZPL压缩参见ZPL协议
2022-11-22
Zebra打印机,中文转ZPL指令的.net实现,替换FNTHEX32.DLL
编写API的目的,Zebra官方提供的Unicode转化组件FNTHEX32.DLL,是一个非托管组件,托管环境下还需要再封装。
该组件直到现在还未找到对应的64位程序兼容组件,为了解决32位和64位的兼容问题,最后编写开发此API,
此API完全用.net开发,无需考虑兼容性问题,实现与FNTHEX32.DLL相同的效果。
此API改善了FNTHEX32.DLL中的字体问题,支持windows下所有字体。
程序处理思路:
先将文本用GDI+做绘图,
在内存中绘制出文本对应的图形,
然后将图形进行像素点取点处理,
取出每一个像素点,进行灰度处理,
按照0-255的灰度值,进行黑白判断,
此处取了一个中间一点的值,180,作为黑白分解点,
取出的黑白点,按照01组合,每八个像素点组合成一个字节,不满0填充,0代表白色像素点,1代表黑色像素点
将字节转化成对应的16进制字符,完成无压缩数据获取
在无压缩数据的基础上,按照ZPL指令中进行压缩,可以大量缩减字节长度,ZPL压缩参见ZPL协议
2017-10-31
通用日志记录组件
/*
整个日志记录的调度全部统一放在公共组件中,使用者只需要构建两个派生类,实现简单灵活,当前只针对写入到文件的日志记录,后面逐步增加到数据库的结构化日志存储接口
* 一个派生类,用于指定其实现的日志记录类型,另一个派生类,用于设置日志记录配置信息
* 通用日志记录组件,采用统一的写入接口,在内部根据外部的派生类,实现自动的日志信息分拣
* 由于通用日志记录组件内部,会有几级的缓存调度处理,要结合全局消息中心进行配套启停使用详见Program.cs启动项,可根据配置信息,进行调度设置
* 日志写入接口自动实现线程数据同步,在不同的线程下写入日志记录,无需关注线程数据同步,并且日志记录写入为无阻塞处理,不会影响主业务线程的任何调度
* 多进程运行,根据进程唯一标记,自动对记录文件进行标记,防止标记文件共享冲突
*/
2014-12-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人