taber
驱动牛犊
驱动牛犊
  • 注册日期2005-03-28
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1293回复:2

弱弱的问:在号称中国最大的开发者论坛上没得到答案的问题

楼主#
更多 发布于:2005-03-28 22:13
首先声明本人不懂驱动程序,完全是慕名而来。在此首先向各位精通底层开发的高手、高高手致意!!!
问题很简单:怎么通过并口发esc指令,使不支持硬字库的打印机打出汉字?
打印机:panasonic 1121
软字库:HZK24S

本人不揣冒昧,请各位指点的时候能够详细一点,谢谢!
注:系统只允许给20分,请各位缺分的大大减量。

[编辑 -  3/28/05 by  taber]
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-29 08:02
直接写端口lpt1即可,
发送时把字符从字库取出,当成位图数据发送,
你的是DOS下的程序吧,打印机应该是LQ仿真的吧
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
taber
驱动牛犊
驱动牛犊
  • 注册日期2005-03-28
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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;
游客

返回顶部