ios - 将字节命令发送到 Star Micronics SM-S220I 打印机

标签 ios objective-c printing hex byte

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

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

ASCI: GS ! n
HEX: 1D 21 n

其中 n 代表高度和宽度的扩展。位 0 到 2 设置字符宽度。 Bit 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]];

这给了我这个结果:

enter image description here

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

谢谢

最佳答案

我不知道那台打印机,但从你的示例输出来看,位 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]; 

关于ios - 将字节命令发送到 Star Micronics SM-S220I 打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20529078/

相关文章:

ios - GMSAddress placeID属性丢失。

ios - 适用于 iOS 的 Google Maps SDK 与其高级版本之间有什么区别吗?

iphone - 如何从应用程序内监控网络事件?

css - 打印 CSS : fit in one page

css - 从 window.print() 中删除页眉和页脚

ios - 从 UIImagePickerController 返回的图像比原始图像小

ios - 动态模拟 iOS 动态类型系统文本大小 (UIContentSizeCategory)

iOS - 将证书添加到应用程序

objective-c - 如何在运行时在 Objective-C 中创建协议(protocol)?

css - 内联元素在新行上打印