附件内容截图:

字库改组:

为了便于处理,我们对字模进行如下改组:

把 16 X 16 汉字,分成左边从上到下16个字节,和右边16个字节,目的是可以把一个汉字当成两个 16X8 字母或数字处理。

改组后,字模数据从 RAM 读出送往打印机时,无论是汉字还是字母或数字,第n行点的 "字节数据" 就是: n, n+16, n+16*2, n+16*3......一行取48个字节, 8*48=384 个点。

把 24 X 24 汉字,分成左边从上到下 24行 X 12列, 和右边 24 X 12 数据,一行 12bit 数据存放在半字 16bit 中的低12bit, 左右半边都有 24个"半字",或 48 个字节,一个24X24汉字变成96个字节了。如此处理字模时,把一个汉字当成两个 24 X 12 字母或数字来处理。 不管汉字字母或数字,第n行点的 ”半字数据“ 就是 n,n+24,n+24*2,n+24*3......取32个"半字",刚好够 12bit*32=384 个点,即一行可打 32个字母,或16个汉字。

字模写入 SPI FLASH 时,完成以上变换。打印时,NUC123 从 SPI FLASH 读出的字模,认为是上述变换后的格式。

高速 SPI 接口传输数据

打印时,字模数据要从 W25Q16 中通过 SPI 接口读取,再通过 SPI 接口移入打印头。

一行 16个 24 X 24 汉字有 16*96 = 1536 个字节。字符行与行之间一般有一到三个空行,走纸最快时 90mm/秒,694us 走一行,在这个时间内要读取所有 1536个字节,放入 RAM 打印缓冲区。代码中,把 SPI 配置成 28.8Mbps 从FLASH 中读取字模,为便于用示波器查看波形,每次收发 16bit 中间,插入一个空闲 CLK,收发完 1536 Byte 要经过 1536/2 = 768 次 17bit 时钟,时间为 768*17/28.8 = 453us。关键是 SPI 收发 16bit 中间不能再有额外间隙,否则 28.8Mbps 失去意义,所以代码中,使能 SPI 的 FiFo,同时配置 PDMA 来完成 SPI 收发。

点数据移入打印头,SPI 速率配置为 4.8Mbps,384个点。数据传输时间约为 384/4.8 = 80us,走纸最快 90毫米/秒 时 694us走一行,数据早传完了。走纸速度再快一倍也来得及。

USB 打印机模式

USB 打印模式,上位机传输过来的,是图形点阵数据与命令混在一起,无需从 SPI FLASH 中读字模,只要把点数据从USB数据流里分离出来,移入打印头即可。代码中定义了一个 4096 字节的环形缓冲区。

USB 数据中断: 分析数据流,见函数 PTR_Data_Receive(), 遇图形点阵数据流,写入环形缓冲区。遇命令立即执行,或为执行做好准备。若有打印命令或走纸命令,就把 “走纸行数” 通过全局变量 StepIncrease 传给主循环代码。

主循环里,1>若传过来的走纸行数 StepIncrease 不为0,就启动走纸。2>若已在走纸,就检查环形缓冲区是否有待打印数据——比较写入指针与读出指针的值可得知,若有待打印数据,就会在纸每走过一行时,把数据送入打印头并加热打印。

走纸,加热和数据传输,三者同时处理的时序

需要走纸时,只要设定速度值全局变量 pStepM_TimLimit,然后调用走纸启动函数 PaperRollStart() 就开始走纸了,何时走下一行,何时停止,都在 Timer1 中断代码里处理。中断外面无需再处理走纸的事。

需要说明的是:有一个走纸剩余行数全局变量 RemainderStep, 在此变量非0时,可以随时加大这个值,加长走纸行数。

再来看何时把数据串入打印头,何时加热,下图用鼠标点击可放大。

打印开始时,先启动走纸,前面空一两行没事,一行只有 0.0625mm。

把第一行点数据,串入打印头后,就等待走纸到第三行——由剩余步数全局变量 RemainderStep 的值可得知。只要一走到第三行,立即输出点数据到加热头,并启动加热定时。然后就去处理下一行点数据。

每次在走到新的一行时(实际是两行), 都立即启动已准备好的、这一行数据的加热,接着代码去准备下一行点数据。 何时加热停止呢? 不用担心,由 Timer2 中断代码处理了。

打印开始时,必须知道要走几行, 两行一个点,一行 16 X 16 字符,要走 32行,一般还要加上开头和结尾的空行。

连续打印时,只要剩余行数 RemainderStep 不为0——走纸未停,可以随时增加这个值,加长走纸行数,继续打印后续数据。

由以上分析可知,走纸是独立的,想走多快,设定一个速度就可以了,走纸的同时,处理打印数据。所以,走纸有多快,打印就可以有多快!

热敏打印计算机,58mm USB 热敏打印机(写字库源代码+字库软件+USB 电脑打印机模式等)...相关推荐

  1. fc588热敏打印机驱动_为称重仪表设计热敏打印模块 - 工业自动化称重仪表

    随着称重技术的日益进步,其周边配套设施也日益完善,尤其是打印机方面.因为很多时候用户都需要保存或打印称重记录,用以数据的核对和备份.而一般自带微打的仪表,都是配置针式微打,其换纸不方便.打印浓度深浅不 ...

  2. 【嵌入式热敏打印模块(1)】

    文章目录 前言 一.热敏打印模块 二.使用注意事项 1.测试热敏打印机模块 2.选择合适的供电电压 3.选择合适的串口通信波特率 总结 前言 在实际生活中,我们经常需要打印各种票据,如购物之后,收银员 ...

  3. Android硬件控制之POS热敏打印(支持任意图表)

    简介 在Android实现Pos打印的应用场景?实现pos打印的难度?如何用只支持黑白的热敏打印机打印出灰阶效果? 在Android实现Pos打印的应用场景? pos热敏打印机在平时生活中还是挺常见的 ...

  4. 【硬件专题】案例:热敏打印效果差?为什么是多个因素造成的?

         案例背景:我们收到异常反馈是海外客户说产品的热敏打印在有的位置会比较模糊.因为我们产品在生命周期内有做过打印机部品的替代,所以市面上会有两种品牌打印机混用的情况.同事在海外的初步分析后发现异 ...

  5. 佳博便携式条码打印机怎么使用_佳博打印机如何设置热敏打印

    原标题:佳博打印机如何设置热敏打印 现在市场上标签纸种类比较多,如果你的打印机适合哪种标签纸,你需要在你的打印机上安装对应的标签纸即可,这里以佳博打印机安装热敏纸为例,首选需要在打印机上安装热敏纸,安 ...

  6. Qt编写的项目作品25-硬件综合应用(热敏打印+身份证+短信猫)

    一.功能特点 (一).串口热敏打印 标准热敏打印协议解析,无依赖,支持任意系统. 可打印各种文字信息比如访客单.报警信息等. 可打印条形码即一维码. 可打印二维码,设置二维码尺寸. 支持多线程打印图片 ...

  7. 佳博热敏条码打印机修改ip_高赋码热转印打印和热敏打印区别

    在热转印打印中,热敏打印头给色带加热,油墨熔化在标签材料上以形成图案.色带材料被介质吸收,图案构成了标签的一部分.该技术提供了其他按需式打印技术无法匹敌的图案质量和耐久性. 与热敏打印机相比,热转印打 ...

  8. php 热敏打印,从PHP打印到POS打印机

    我们希望打印到运行apache的POS打印机.由于应用程序的设计和部署,应该从服务器进行打印(它应该检测订单并发送到不同的打印机和不同格式的打印-账单,厨房订单等--).出于这个原因和其他(例如来自i ...

  9. Web使用热敏打印小票(IE环境)

    概述 在html页下使用Epson P60II 热敏纸下打印小票,使用的打印方案为调用window.print(). 代码实现 1.定义窗体,设置宽度和高度 <body onload=" ...

最新文章

  1. 机器学习模型调优总结!
  2. 网络的塔建+模型训练
  3. Doctype文档类型学习小结
  4. 5-1rquests模拟登陆知乎之httpcode
  5. UEditor 使用setContent()遇到的奇葩问题
  6. STL容器汇总(一)
  7. maskView与CAGradientLayer详解
  8. Maven+eclipse快速入门
  9. spring 多数据源- 原理
  10. php写语音朗读,详解在网页上通过JS实现文本的语音朗读
  11. 数据千万条,安全第一条
  12. Cent OS 重置root密码
  13. Ajax Accordion(可折叠) 动态生成菜单
  14. css背景图毛玻璃,css实现背景图片的毛玻璃效果
  15. CV学习笔记-BP神经网络代码Python实例
  16. Robotframework+Appium环境搭建
  17. 《软件方法》第1章 建模和UML
  18. FolderSync文件夹同步
  19. Git学习笔记(二)——Git的分支管理、储藏和标签
  20. es创建索引和yellow排查解决

热门文章

  1. 使用adb工具进行文件推送
  2. 机器学习激活函数整理(不定时更新)
  3. 【云原生-白皮书】简章1:为什么我们需要云原生架构?
  4. 2022-2027年中国生长激素市场规模现状及投资规划建议报告
  5. C语言程序设计——结构体的运用 求复数之积。利用结构变量求解如下两组复数之积。
  6. (附源码)计算机毕业设计SSM基于售楼系统
  7. 什么是映射?为什么需要映射
  8. 计算机进入桌面黑屏怎么办,电脑进入系统后黑屏,详细教您电脑进入系统后黑屏怎么办...
  9. 冥想====》超级右脑
  10. WIN10安装S32 Design Studio v3.4