- 博客(1)
- 资源 (8)
- 收藏
- 关注
原创 简单分包传输协议
在做远程通信时,大多数的RMI或RPC框架,在底层通信协议层,都不支持断点续传机制,假设业务数据包数据量很大,由于网络环境原因,在最后一刻网络中断,则前置所有传输的数据,都将丢失。同时由于RMI过程中通信的整体性,无法实现一些传输状态和处理状态的通知,这对用户的体验感会很差。一般采用在底层的TCP、HTTP通信环节,采取分包传输,实现最终的续传机制。下面是简单的分包传输协议,此处属于应用层的分包协
2016-06-19 13:03:17 4224
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关注的人