在VFP中通过编程在POS收银机上进行打印票据操作(所使用的POS收银机为“好易通TM牌POS收银机”),但每次开机后第一次打印的票据全部是乱码,而且打印很长,约要打50cm长的乱码才停下。但以后发出打印命令程序后就能打出正常的票据,打印长度也能根据打印内容自动控制。
在VFP中设计的打印程序为:
SET DEVICE TO PRINTER
@1,7 say "商品销售单" font "宋体" ,9
@2,7 say "商品名:"+spmq1 font "宋体" ,9 &&spmq1为字符型变量
@3,7 say "销售数:"+xqsl1 font "宋体" ,9 &&xqsl1为字符型变量
@4,7 say "商品名:"+spmq2 font "宋体" ,9 &&spmq2为字符型变量
@5,7 say "销售数:"+xqsl2 font "宋体" ,9 &&xqsl2为字符型变量
……………………
set printer TO LPT1
(说明:以上程序在有的POS收银机上能正常运行,但现使用的“好易通TM牌POS收银机”总是在第一次打印时出现半米长的乱码,第二次和以后再打印就没有乱码。)
敬向电脑专家请教,为何POS收银机第一次打印时总出现许多乱码?该如何修改打印命令程序(或电脑设置)就能解决这一问题?不胜感激!
------解决方案--------------------
你问一下厂商吧。
或者用人家提供的例子试一下,如果人家例子没有此问题,说明你的程序少做了什么操作。
------解决方案--------------------
打印内容前 先发一个初始化命令, 或者把机器设置城EPSON 模式
------解决方案--------------------
标准EPSON POS打印机的ESC/POS命令集
*---------------------------------
ESC/POS命令集
切纸指令:
发送:十六进制:1B69
4.1 基本控制指令
4.1.1 ESC @
[名称] 初始化打印机
[格式] ASCII码 ESC @
十六进制码 1B 40
十进制码 27 64
[描述] 清除打印缓冲区中的数据,复位打印机打印参数到当打印机缺省参数。
[注意] * 不是完全恢复到出厂设置,用户参数设置(见三、JPM112打印机工具软件)不会被更改。
4.1.2 FF
[名称] 打印并走纸到下页首
[格式] ASCII码 FF
十六进制码 0C
十进制码 12
[描述] 将打印缓冲区中的数据全部打印出来并返回标准模式。
[注意] * 打印后,删除打印缓冲区中的数据。
* 该命令设置打印位置为行的起始点。
* 如果打印纸有预印刷黑标,则打印缓冲区中的数据后,走纸到黑标处,如果打印纸无黑标,则
走纸0.5m后停止,预印刷黑标的规范请见附录B.预印刷黑标说明。
4.1.3 LF
[名称] 打印并换行
[格式] ASCII码 LF
十六进制码 0A
十进制码 10
[描述] 把打印缓冲区中的数据打印出来,并换行。
[注意] * 该命令把打印位置设置为行的开始位置。
4.1.4 CR
[名称] 打印并回车
[格式] ASCII码 CR
十六进制码 0D
十进制码 13
[描述] 打印但不进纸。
[注意] * 打印结束后,将下一行的开始设定为打印起始位置。
4.1.5 ESC J n
[名称] 打印并进纸
[格式] ASCII码 ESC J n
十六进制码 1B 4A n
十进制码 27 74 n
[范围] 0 ≤ n ≤ 255
[描述] 打印输出打印缓冲区中的数据,并进纸n个 垂直点距。
[注意] * 打印结束后,将下一行的开始设定为打印起始位置。
* 一个垂直点距为0.33mm,以下同。
4.1.6 ESC d n
[名称] 打印并进纸n 行
[格式] ASCII码 ESC d n
十六进制码 1B 64 n
十进制码 27 100 n
[范围] 0 ≤ n ≤ 255
[描述] 打印打印缓冲区中的数据并进纸n字符行。
[注意] * 该命令设置打印起始位置为行起点。
4.1.7 HT
[名称] 移动打印位置到下一个水平制表位置
[格式] ASCII码 HT