delphi 连接网口打印机 发送指令打印二维码

procedure getQRBitmap(printstr:string);
var
    moduleSize: Integer;
    slength: Integer;
    Send: string;
    Send_Length:String;
    PicNamearray: array[0..50] of Byte;
begin
    moduleSize := 8;
    slength:=Length(printstr);
    //存入二维码数据
    Send_Length:= AnsiChar(strtoint('$'+IntToHex(slength + 3, 2)));

    Send := AnsiChar($1D)+AnsiChar($28)+AnsiChar($6B)+ Send_Length + AnsiChar($00) + AnsiChar($31) + AnsiChar($50) + AnsiChar($30);
    Move(Send[1], PicNamearray, Length(Send));
    frmMain.IdTCPClient_xy.Socket.Send(PicNamearray, Length(Send));

    frmMain.IdTCPClient_xy.Write(printstr);

     //选择纠错级别
    Send :=  AnsiChar($1D)+AnsiChar($28)+AnsiChar($6B) + AnsiChar($03) + AnsiChar($00) + AnsiChar($31) + AnsiChar($45) + AnsiChar($30);
    Move(Send[1], PicNamearray, Length(Send));
    frmMain.IdTCPClient_xy.Socket.Send(PicNamearray, Length(Send));

    //设置二维码块大小 strtoint('$' + IntToHex(modulesize, 2))        最后一位为二维码大小
    Send := AnsiChar($1D)+AnsiChar($28)+AnsiChar($6B) + AnsiChar($03) + AnsiChar($00) + AnsiChar($31) + AnsiChar($43) + AnsiChar($0B);
    Move(Send[1], PicNamearray, Length(Send));
    frmMain.IdTCPClient_xy.Socket.Send(PicNamearray, Length(Send));

     //打印已存入数据的二维码
    Send := AnsiChar($1D) +AnsiChar($28)+AnsiChar($6B)+ AnsiChar($03) + AnsiChar($00) + AnsiChar($31) + AnsiChar($51) + AnsiChar($30);
    Move(Send[1], PicNamearray, Length(Send));
    frmMain.IdTCPClient_xy.Socket.Send(PicNamearray, Length(Send));
end;

     以上这段代码,是delphi 连接网口打印机打印二维码的核心代码。

     接下来我讲一下这段代码的由来。

     最初的二维码打印是使用的图像打印,打印出来有黑块。

虽然是偶有出现,也让人接受不了。这个指令打印二维码也是无意之中发现的。需要的可以去查看。这里的指令比官网的指令全一些。问题是有部分打印机不能支持。我仅截取我需要的说明文档做保存。

ESC/POS 控制指令 - ma_fighting - 博客园ESC/POS 控制指令 HT 横向跳格 [名称] Horizontal tab [格式] ASCII HT Hex 09 Decimal 9 [描述] 将当前位置移动到下一个跳格位置。 [注释] *https://www.cnblogs.com/mafeng/p/6292024.html 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值