【问题标题】:Sending bytes commands to a Star Micronics SM-S220I printer向 Star Micronics SM-S220I 打印机发送字节命令
【发布时间】:2013-12-30 00:18:26
【问题描述】:

我正在努力弄清楚这是如何工作的。我想更改工单中特定单词的字体大小。

在手册上,它说使用以下命令更改字符大小:

ASCI: GS ! n
HEX: 1D 21 n

其中 n 表示高度和宽度扩展。位 0 到 2 设置字符宽度。位 4 到 6 设置字符高度。

所以我尝试了这些不同的代码变体:

[commands appendBytes:"\x1d\x21\x00"
               length:sizeof("\x1d\x21\x00") - 1];   
[commands appendData:[@"ABCD1\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x02"
               length:sizeof("\x1d\x21\x02") - 1]; 
[commands appendData:[@"ABCD2\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x04"
               length:sizeof("\x1d\x21\x04") - 1]; 
[commands appendData:[@"ABCD3\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x06"
               length:sizeof("\x1d\x21\x06") - 1]; 
[commands appendData:[@"ABCD4\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x08"
               length:sizeof("\x1d\x21\x08") - 1];
[commands appendData:[@"ABCD5\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x10"
               length:sizeof("\x1d\x21\x10") - 1];
[commands appendData:[@"ABCD6\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x12"
               length:sizeof("\x1d\x21\x12") - 1]; 
[commands appendData:[@"ABCD7\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x14"
               length:sizeof("\x1d\x21\x14") - 1]; 
[commands appendData:[@"ABCD8\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x16"
               length:sizeof("\x1d\x21\x16") - 1]; 
[commands appendData:[@"ABCD9\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x18"
               length:sizeof("\x1d\x21\x18") - 1]; 
[commands appendData:[@"ABCD10\n" dataUsingEncoding:NSASCIIStringEncoding]];

[commands appendBytes:"\x1d\x21\x19"
               length:sizeof("\x1d\x21\x19") - 1]; 
[commands appendData:[@"ABCD11\n" dataUsingEncoding:NSASCIIStringEncoding]];

这给了我这个结果:

这完全出乎意料,至少对我来说是这样。谁能帮我理解这是如何工作的? 我想要的最终输出是得到 ABCD9 的高度,但宽度成比例。

谢谢

【问题讨论】:

    标签: ios objective-c printing hex byte


    【解决方案1】:

    我不知道那台打印机,但从您的示例输出看来,位 0-2 定义 高度,第 4-6 位是字符的宽度(正好相反 你描述的)。所以n的位是

    0www0hhh
    

    字符串“ABCD9”打印为n = \x16 = 00010110,对应 高度 = 6(二进制 110)和宽度 = 1(二进制 001)。 要使用 width = height = 6 打印字符串,您需要

    n = 01100110 = 0x66
    

    因此

    [commands appendBytes:"\x1d\x21\x66" length:3]; 
    

    【讨论】:

    • 我会试一试,然后再回复你。同时,您能告诉我在哪里可以找到信息,以便我了解为什么\x16 = 000101106 = binary 110 吗?谢谢!
    • @Jan: \x 代表十六进制数。不妨先看看en.wikipedia.org/wiki/Hexadecimal
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多