阅读:1293回复:2
弱弱的问:在号称中国最大的开发者论坛上没得到答案的问题
首先声明本人不懂驱动程序,完全是慕名而来。在此首先向各位精通底层开发的高手、高高手致意!!!
问题很简单:怎么通过并口发esc指令,使不支持硬字库的打印机打出汉字? 打印机:panasonic 1121 软字库:HZK24S 本人不揣冒昧,请各位指点的时候能够详细一点,谢谢! 注:系统只允许给20分,请各位缺分的大大减量。 [编辑 - 3/28/05 by taber] |
|
沙发#
发布于:2005-03-29 08:02
直接写端口lpt1即可,
发送时把字符从字库取出,当成位图数据发送, 你的是DOS下的程序吧,打印机应该是LQ仿真的吧 |
|
|
板凳#
发布于:2005-03-29 11:59
多谢。。
先已实现了您的思路,可以打出文字来,不过不是汉字 发送过去的字符数据是什么样的? 字模获取代码: function THZPrint24.GetSingleMapped_hz(const single: string): string; var qu, wei, offset: Integer; begin Result:= single; qu:= Ord(single[1]) - $A1; wei:= Ord(single[2]) - $A1; offset:= (94*qu+wei)*FByteCount; if offset <= hzFS.Size - FByteCount then begin hzFS.Seek(offset, soFromBeginning); hzFS.Read(buff[0], FByteCount); Result:= Convert(PChar(buff)); end; end; 转换代码: function THZPrint24.Convert(const source: PChar): string; var i, j: Integer; r: Integer; begin Result:= EmptyStr; for i:= 0 to 23 do begin r:= 0; for j:= 0 to 2 do r:= r + Word(source[i*3 + j]); Result:= Result + chr(r); // 是不是这样? end; Result:= chr(27) + chr(42) + chr(33) + chr(24) + chr(0) + Result; end; |
|