# HPRT TSPL SDK Reference

## 一、引言

### 1.1、编写目的

- 通过调用本开发包的接口函数，可以轻松实现文字、图片、条码等打印元素的排版和打印，无需了解复杂的打印机打印命令及原理。


- 客户可以使用 SDK 实现打印命令的生成以及打印机通讯。SDK 采用.framework 的形式。使用方法和系统动态框架一样。

  > SDK文件：`PrinterSDK.framwrok`

- 本使用指南中所有的sample code 都以 Demo 工程中的实际代码为准。当拿到工程时，建议先编译工程进行真机安装，先测试 Demo 中的所有功能，对 Demo 和 SDK 提供的功能有一个大致的了解后再阅读本指南，再引入 SDK 到您的工程中。

### 1.2、预期读者

​	本文档的预期读者为开发本公司打印机关联的应用程序的用户、开发人员、项目经理、测试人员和文档编写人员，用来对项目涉及的业务知识和系统开发所需解决的问题、满足的需求达成共识。



#### 1.2.1、开发人员要求

使用HPRT iOS TSPL SDK 进行二次开发，您需要了解：

- 如何使用 framework 动态库（Dynamic Library）或静态库（Static Library）框架
- 稍微了解 CoreBluetooth 框架
- 稍微了解打印机的打印命令
- 了解您的打印机支持的打印命令
- 了解您的打印机支持的通讯模块（蓝牙或者 WiFi）
- 了解真机调试
- 若需要引入 `PrinterCommandSwift.framework` ,需要具备 `Objective-C` 和 `Swift` 联合编程经验

### 1.3、文中特殊的定义和缩写

#### 1.3.1、定义

`characteristic`：BLE 蓝牙的特征值

`services`：BLE 蓝牙的服务

`RSSI`：BLE 蓝牙的信号强度

`Dispatcher`：通讯调度员，管理打印机的 WiFi 和 Bluetooth 4.0 通讯

#### 1.3.2、缩写

`BLE`：蓝牙4.0、低功耗蓝牙，区别于4.0以前的传统蓝牙

`SDK`：指 PrinterCommand.framework，PrinterDispatch.framework， PrinterCommandSwift.framework

`打印命令`：SDK的作用是生成打印机能够直接识别执行的打印命令。在打印机行业中，打印命令种类繁多。在其他地方，你可能看到以`指令集`、`协议`、`语言`等类似的概念来表示`打印命令`，在这里统一规定为`打印命令`。

### 1.4、参考资料

- 《 esc-pos product v10.5.pdf 》
- 《 TSPL_TSPL2_Programming.pdf 》

## 二、SDK 更新及变化

> 变更类型：（A 增加），（ M 修订），（ D 删除）

| 版本     | 时间        | 变更摘要                           | 变更   |
| ------ | --------- | ------------------------------ | ---- |
| v1.0.0 | 2016.2    | 支持蓝牙                           | A    |
| v1.0.1 | 2016.2.29 | 支持 WiFi                        | A    |
| v1.0.2 | 2016.3.10 | PTDispatcher 统一管理蓝牙和 WiFi      | A    |
| v1.1.0 | 2016.3.8  | 新增 TSPL 打印命令                   | A    |
| v1.2.0 | 2016.3.21 | 新增 ESC 打印命令                    | M    |
| v1.2.1 | 2016.3.25 | 新增 PDF 转图片打印。                  | A    |
| v1.2.2 | 2016.4.1  | 新增两种图片压缩算法，Beta 版的 Office 文档打印 | A    |
| v1.3.0 | 2016.4.21 | 新增 CPCL 打印命令                   | A    |
| v1.4.0 | 2016.5.25 | 新增 ZPL 打印命令                    | A    |
| v1.5.0 | 2016.8.3  | 新增 DPL 打印命令                    | A    |



## 三、开发环境配置

### 3.1、SDK 版本要求

> Demo 工程运行在 iOS 8.0 及以上的机型上，但是 SDK 最低支持 iOS 5.0起。

| 框架                            | iOS 系统要求       |      |
| ----------------------------- | -------------- | ---- |
| Printer.framework             | 支持 iOS 5.0及以上  | 必须   |
| PrinterCommandSwift.framework | 支持 iOS 8.0 及以上 | 可选   |

### 3.2 、SDK 引入工程

#### 3.2.1 Objective-C 用户

- ##### Should Import：

  > - `PrinterSDK.framework`

#### ![import framework](image/import framework.png)

- 解压提供的 WirelessPrinter Demo 工程

- 在解压后的工程目录找到 `PrinterSDK.framework`，拖动到您的工程中。

- 检查和设置编译项

  > - 点击工程
  >
  > - 点击 `Targets` 中的应用名字
  >
  > - 点击 ` General` 选项卡
  >
  > - 检查`Link Binary With Libraries`一项，是否包含所需要的 framework，没有则手动添加。
  >
  > - 在`Build Setting`选项卡找到`Other Link Flags` 一项，填入 `-ObjC`，如图：
  >
  >   > 注意：由于 SDK 中使用了 Category ，所以使用SDK时需要该编译项。
  >
  >   ![Other Link Flags](./image/Other Link Flags.png)

- 在要使用 SDK 的类文件中引入 SDK 框架：

  ```objective-c
  #import <PrinterSDK/PrinterSDK.h>
  ```

- 如果用到的指令在 PrinterCommandSwift.framework 中

  ```objective-c
  @import PrinterCommandSwift;
  ```

  ​

- 愉快的使用 SDK

#### 3.2.2 Swift 用户

> PrinterCommandSwift.framework 使用了 Swift 语言编写，当前支持 CPCL、DPL 指令集，需要配合 PrinterCommand.framework 进行连接打印机和处理图片等相关操作。

- ##### Should Import：

  > - `PrinterSDK.framework`
  > - `PrinterCommandSwift.framework`

![Objc with Swift](image/Objc with Swift.png)

> 左边使用 Swift 调用，右边使用 Objective-C 调用

- 引用框架文件流程

  > - 点击工程
  > - 点击 `Targets` 中的应用名字
  > - 点击 ` General` 选项卡
  > - 找到`Embedded Binaries`一项，点击 '+' 号添加所需要的 framework 动态库！
  > - 检查`Link Binary With Libraries`一项，是否包含所需要的 framework，没有则添加。所有需要引入的动态库和静态库都要能在这里看到。
  > - 简单说，framework 动态库库要同时出现在`Embedded Binaries`和`Link Binary With Libraries`两项中，静态库只需要出现在后一项中。
  > - 一般添加`Embedded Binaries`中时，会自动添加到`Link Binary With Libraries`。当编译出现问题时，尝试删除这两项中的 framework 连接，重新添加。

- ##### Should Import In Swift File


- ```swift
  import PrinterCommandSwift
  ```


- ##### Should Import In OC-Swift Bridge Header File

  ```objective-c
  #import <PrinterSDK/PrinterSDK.h>
  ```

- 愉快的使用 SDK

### 3.3、 真机运行和调试

![bundle identifier](image/bundle identifier.png)

- 真机运行时，您需要修改 `Bundle Identifier` 和 `Team` 项
- `Bundle Identifier` 是程序包的唯一标识符，可以修改为任意字符串，但不能和 Apple 服务器已有记录的标志符冲突
- `Team` 选择您的 iOS 开发者帐号

### 3.4 、Archive 上架

- 当通过 Archive 打包准备上线 App Store 时，请将您的应用中的`Enable Bitcode`设置为`NO`.

## 四、Demo 介绍

### 4.1、 通过指令组合打印

根据不同的指令集不同，大致上提供了一下功能：

- 打印各式条形码
- 打印二维码
- 打印文本或者带格式的文本
- 打印图片（黑白图片、半色调图片）
- 打印小票（预定义格式的小票）

通过本 Demo，您可以了解到：

- 如何导入、链接和使用 `PrinterSDK.framework` 框架

- 如何通过 Bluetooth 4.0和 便携式 BLE 蓝牙打印机进行通讯

- 如何通过 WiFi 和便携式 WiFi 打印机进行通讯

- 如何使用打印机指令集中的基础指令，并根据自己的需求分装成为功能

  > - Demo 中在 `PTFunctionESC.m`、`PTFunctionTSPL.m` 等类中演示了如何将基础指令封装形成功能，以便能够执行打印条形码、二维码、图片、文本等功能。
  > - Demo 中在 `PTTesESC.m`、`PTTestTSPL.m`、`PTTestCPCL.swift` 等类中展示了测试打印机功能和 SDK 功能的函数。

### 4.2、 通过模板打印

​	通过模板打印，电子面单的样式已经预先编辑好，只需要填充相应的数据项，即可打印输出一张面单。这里以申通快递为例，具体代码见 PTTestTSC 类。

1、填充数据

```objective-c
// 使用说明：
// 1. 初始化一个 NSMutableDictionary，在相应的键值下塞入对应的的数据，键值必须是下面样例中用到的键值。
// 2. 如果一个数据项没有数据 那么也需要设置成空字符串@""，比如 [templateDict setObject:@"" forKey:kCollection];
PTLabelTemplate *template = [[PTLabelTemplate alloc] init];
NSMutableDictionary *templateDict = [[NSMutableDictionary alloc] init];

[templateDict setObject:@"363604310467" forKey:LTBarcode];
[templateDict setObject:@"上海 上海市 长宁区" forKey:LTDistributing];
    
[templateDict setObject:@"申大通" forKey:LTReceiver];
[templateDict setObject:@"13826514987" forKey:LTReceiverContact];
[templateDict setObject:@"上海市宝山区共和新路4719弄共和小区12号306室" forKey:LTReceiverAddress];
    
[templateDict setObject:@"快小宝" forKey:LTSender];
[templateDict setObject:@"13826514987\r\n" forKey:LTSenderContact];
[templateDict setObject:@"上海市长宁区北瞿路1178号（鑫达商务楼）1号楼305室" forKey:LTSenderAddress];
    
[templateDict setObject:@"SHENTONG" forKey:LTExpressCompany];
    
NSData *cmdData = [template getShenTongTemplate:templateDict];
```

2、读入模板

> 使用时需要把模板文件拖入你的工程中。模板文件是 TXT 纯文本文件。

```objective-c
 NSString *path = [[NSBundle mainBundle] pathForResource:@"ShenTong" ofType:@"txt"];
 NSData *templateData = [template getTemplateDataWithFilePath:path];
```

3、结合模板和数据

```objective-c
NSMutableData *finalData = [[NSMutableData alloc] initWithData:templateData];
[finalData appendData:cmdData];
```

4、发送打印

```objective-c
[[PTDispatcher share] sendData:finalData];
```



### 4.3、 获取打印机的纸张状态

1、 当连接蓝牙时，必须订阅状态通知。

```objective-c
[[PTDispatcher share] connectBluetooth:peripheral notify:YES]; // 设置为 YES
```

2、 具体的获取纸张状态详见 Demo。

> PTCommandVC 类中 getPaperStatus:方法

## 五、SDK 说明

### 5.1、支持的通讯方式

- `BLE`：Bluetooth 4.0及以上，低功耗蓝牙，不支持传统蓝牙（Bluetooth 4.0 以下）
- `WiFi`：需要在 iOS 系统设置中连接 WiFi 打印机的热点

> 在一些 iOS 机型上，同时打开蓝牙和 WiFi 会导致蓝牙频繁断线，当频繁断线时，请尝试关闭 iOS 系统的WiFi 以保证蓝牙连接的稳定性。

### 5.2、支持的打印机指令集

> 您需要了解所使用的打印机是否支持以下任意一种或多种打印指令集

| 打印指令集    | 所在框架                          | 介绍          |
| -------- | ----------------------------- | ----------- |
| ESC-POS  | PrinterSDK.framework          | 主要应用于票据打印机  |
| TSC-TSPL | PrinterSDK.framework          | 主要应用于标签打印机  |
| CPCL     | PrinterCommandSwift.framework | Zebra 兼容打印机 |
| ZPL      | PrinterSDK.framework          | Zebra 兼容打印机 |

### 5.3、支持的打印机

- 打印机至少支持 WiFi 或者BLE 其中一种通讯方式。


- 打印机必须至少支持 ESC 、TSC、CPCL、ZPL、DPL 其中一种打印命令。



## 六、打印机蓝牙接口说明

#### 连接打印机

```objective-c
    [[PTDispatcher share] scanPrinter:^(PTPrinter *printer) {
        // 发现新打印机
    }];
    
    [[PTDispatcher share] scanPrinters:^(NSDictionary *printerDict) {
       // 发现打印机，返回当前已搜索到的所有打印机
       // 如果要显示蓝牙列表，可以在这里把 Dictionary 中的值绑定 TableView, 直接刷新 Table
    }];

	[[PTDispatcher share] scanWiFi:^(NSDictionary *printerDict) {
       // 发现WiFi打印机
    }];
    
    [[PTDispatcher share] connectPrinter:printer]; 	//连接指定的打印机
    [[PTDispatcher share] disConnectPrinter]; 		// 断开与打印机的连接
    [[PTDispatcher share] stopScanBluetooth]; 		// 停止蓝牙扫描
```

#### 获取打印机状态

> 当断开蓝牙时，下列获取相关状态的方法失效（Block 被置空），下一次连接时，必须重新执行下列方法

```objective-c
	[[PTDispatcher share] whenConnectSuccess:^{
        // 当连接打印机成功
    }];
    
    [[PTDispatcher share] whenConnectFailure:^{
        // 当连接打印机失败
    }];
    
    [[PTDispatcher share] whenUnconnect:^{
        // 当与打印机断开
    }];
    
    [[PTDispatcher share] whenReadRSSI:^(NSNumber *RSSI) {
        // 当更新已连接打印机的信号强度 RSSI
    }];
    
    [[PTDispatcher share] whenReceiveData:^(NSData *receiveData) {
       // 收到打印机返回的数据
    }];
```



## 七、TSPL SDK 接口说明

## 7.1 常用指令

- 打印自检页

```objective-c
/**
 *  printer print self-test message.
 */
- (void)selfTest;
```

- 添加指令

```
- (void)appendCommand:(NSString *)cmd;
```

- 打印纸张范围大小

```objective-c
/**
 *  setting print area size in paper.
 */
- (void)setPrintAreaSizeWithWidth:(NSInteger)label_width
                           Height:(NSInteger)label_height;
```

- 设置标签纸的间距

```objective-c
/**
 *  setting gap distance during labels.
 *  @param distance 两张标签紙中间的垂直距离
 *  @param offset   垂直间距的偏移
 */
- (void)setGapWithDistance:(NSInteger)distance
                    Offset:(NSInteger)offset;
```

- 设置黑线

```objective-c
/**
 *  setting black line
 *  @param height 黑线的高度 0~25.4 mm
 *  @param offset 黑线偏移量 0~label length
 *  height,offset 为0,0表示连续标签
 */
- (void)setBlineWithHeight:(NSInteger)height
                    Offset:(NSInteger)offset;
```

- 走纸

```objective-c
/**
 *  paper feed with distance.
 */
- (void)setOffsetWithDistance:(NSInteger)distance;
```

- 打印数量

```objective-c
/**
 *  setting print sets and copies.
 *  @param sets   多少份       how many sets of labels will be printed.
 *  @param copies 每份多少张    how many copies should be printed for each particular label set.
 */
- (void)printWithSets:(NSInteger)sets  Copies:(NSInteger)copies;
```

- 打印文本

```objective-c
/**
 *  @param x_pos    x 坐标
 *  @param y_pos    y 坐标
 *  @param fontSize 字体大小（16 20 24 28 32 40 48 56）
 *  @param rotation （0 1 2 3）
 *  @param text     要打印的文本
 */
- (void)appendTextWithXPos:(NSInteger)x_pos
                      YPos:(NSInteger)y_pos
                  FontSize:(NSInteger)fontSize
                  Rotation:(NSInteger)rotation
                      Text:(NSString *)text;
```

- 清除打印机缓冲区

```objective-c
/**
 *  clean printer buffer.
 */
- (void)setCLS;
```

- 打印一维条码

```objective-c
/**
 *  print barcode.
 *  @param type     条码类型 @[128,128M,EAN128,25,25C,39,29S,93,EAN13,EAN13+2,EAN13+5,EAN8,EAN8+5,CODA,POST,UPCA,UPCA+2,UPCA+5,UPCE,UPCE+2,UPCE+5,CPOST,MSI,MSIC,PLESSEY,ITF14,EAN14,11];
 *  @param readable 是否可读：0，不可读，1，可读
 *  @param rotation 旋转：0，90，180，270
 *  @param narrow   窄元素
 *  @param wide     宽元素
 */
- (void)printBarcodeWithXPos:(NSInteger)x_pos
                        YPos:(NSInteger)y_pos
                        Type:(NSString *)type
                      Height:(NSInteger)height
               HumanReadable:(NSInteger)readable
                    Rotation:(NSInteger)rotation
                      Narrow:(NSInteger)narrow
                        Wide:(NSInteger)wide
                  CodeNumber:(NSString *)codeNumber;
```

- 打印二维条码

```objective-c
/**
 *  print QRCode
 */
- (void)printQRcodeWithXPos:(NSInteger)x_pos
                       YPos:(NSInteger)y_pos
                   EccLevel:(NSString *)ecc_level
                  CellWidth:(NSInteger)width
                       Mode:(NSString *)mode
                   Rotation:(NSInteger)rotation
                      Model:(NSString *)model
                       Mask:(NSString *)mask
                       Text:(NSString *)text;
```

-  打印位图

```objective-c
/**
 *  print Bitmap
 *  @param imageData   Bitmap data
 *  @param mode   位图模式：（0:OVERWRITE 1:OR 2:XOR）
 */
- (void)addBitmapWithXPos:(NSInteger)xpos
                     YPos:(NSInteger)ypos
                    width:(NSInteger)width
                   height:(NSInteger)height
                     Mode:(NSInteger)mode
                imageData:(NSData *)imageData;
```



## 7.3 基本设定

- 设置打印速度

```objective-c
/**
 *  setting print speed
 */
- (void)setSpeed:(NSInteger)speed;
```

- 设置打印浓度

```objective-c
/**
 *  setting print density
 *  @param density 浓度 0~15 level
 */
- (void)setDensity:(NSInteger)density;
```

- 设置打印的方向和镜像

```objective-c
/**
 *  setting print direction and mirror.
 *  @param direction 方向，面对打印机，向自己方向出纸，0，左上角，1，右下角
 *  @param mirror    镜像，可选项 0 普通，1 镜像
 */
- (void)setDirection:(NSInteger)direction Mirror:(NSInteger)mirror;
```

- 设置标签参考起点

```objective-c
/**
 *  setting print reference position
 */
- (void)setReferenceXPos:(NSInteger)x_pos
                    YPos:(NSInteger)y_pos;
```

- 设置国际字符集

```objective-c
/**
 *  setting the code page of inernational character set.
 7-bit code page name:
 USA: USA
 BRI: British
 GER: German
 FRE: French
 DAN: Danish
 ITA: Italian
 SPA: Spanish
 SWE: Swedish
 SWI: Swiss
 8-bit code page number:
 437: United States
 850: Multilingual
 852: Slavic
 860: Portuguese
 863: Canadian/French
 865: Nordic
 857: Turkish (TSPL2 printers only)

 Windows code page:
 1250: Central Europe (TSPL2 printers only)
 1252: Latin I (TSPL2 printers only)
 1253: Greek (TSPL2 printers only)
 1254: Turkish (TSPL2 printers only)
 *  @param codepage 字符集代码
 */
- (void)setCodePage:(NSString *)codepage;
```

- 设置标签进纸长度

```objective-c
/**
 *  feed label with the specified length.
 *  @param feedLength (1~9999)
 */
- (void)setFeedLength:(NSInteger)feedLength;
```

- 设置进纸到下一标签起始处

```objective-c
/**
 *  feed label to the beginning of next label.
 */
- (void)setFormFeed;
```

- 回纸 

```
- (void)setBackFeed:(NSInteger)distance;
- (void)setBackUP:(NSInteger)distance;
```

- 设置标签定位到内部传感器确定的起点

```objective-c
/**
 *  feed label until the internal sensor has determined the origin.
 */
- (void)setHome;
```

- 设置蜂鸣

```objective-c
/**
 *  control the sound frequency of the beeper.
 *  @param level    0-9
 *  @param interval 1-4095
 */
- (void)setSoundWithLevel:(NSInteger)level
                 Interval:(NSInteger)interval;
```

- 设置切纸

```objective-c
/**
 *  activate the cutter to immediately cut the labels without back feeding the label.
 */
- (void)setCut;
```

- 设置停止送纸

```objective-c
- (void)setLimitFeed:(NSInteger)max_len;
```

- 在标签上画一条线

```objective-c
/**
 *  draw a bar on the label format.
 */
- (void)printBarWithXPos:(NSInteger)x_pos
                    YPos:(NSInteger)y_pos
                   Width:(NSInteger)width
                  Height:(NSInteger)height;
```

- 在标签上绘制矩形

```objective-c
/**
 *  draw rectangles on the label.
 *  @param thickness 线宽
 */
- (void)setBoxWithXStart:(NSInteger)x_start
                  YStart:(NSInteger)y_start
                    XEnd:(NSInteger)x_end
                    YEnd:(NSInteger)y_end
               Thickness:(NSInteger)thickness;
```

- 在标签上绘制圆形

```objective-c
/**
 *  draw a circle on the label.
 *
 *  @param diameter  直径
 *  @param thickness 线宽
 */
- (void)setCircleWithXStart:(NSInteger)x_start
                     YStart:(NSInteger)y_start
                   Diameter:(NSInteger)diameter
                  Thickness:(NSInteger)thickness;
```

- 擦除图像缓冲区指定的区域

```objective-c
/**
 *  clear a specified region in the image buffer.
 */

- (void)setEraseWithXStart:(NSInteger)x_start
                    YStart:(NSInteger)y_start
                    XWidth:(NSInteger)x_width
                   YHeight:(NSInteger)y_height;
```

- 设置 DataMatrix 二维码，当前仅支持 ECC200 错误纠正

```objective-c
/**
 *  define the DataMatrix 2D bar code.Currently,only ECC200 error correction is supported.

 *  @param xm         [可选]，Module size，x6，x8
 *  @param row        [可选]，范围：10-144
 *  @param col        [可选]，范围：10-144
 *  @param expression 表达式
 */
- (void)setDmatrixWithExpression:(NSString *)expression
                            XPos:(NSInteger)x_pos
                            YPos:(NSInteger)y_pos
                           Width:(NSInteger)width
                          Height:(NSInteger)height
                              XM:(NSString *)xm
                             Row:(NSString *)row
                             Col:(NSString *)col;
```

- 打印 Maxicode 二维码

```objective-c
/**
 *  define a 2D Maxicode.

 *  @param mode    2,3,4,5
 *  @param iClass   [option],Class of Service ,3-digit number(for mode 2,3)
 *  @param country [option],Country code, 3-digit number (for mode 2,3)
 *  @param post    [option],

 Mode 2: (USA) 5-digit+ 4-digit number.
 Mode 3: (Canada) 6 alphanumeric post code included by double quotes.

 *  @param lm      Expression length (double quote is ignored) , 范围：1-138, (this parameter is just for mode 4 and 5.)
 */

- (void)setMaxicode:(NSString *)text
               XPos:(NSInteger)x_pos
               YPos:(NSInteger)y_pos
               Mode:(NSInteger)mode
              Class:(NSInteger)iClass
            Country:(NSInteger)country
               Post:(NSString *)post
                 LM:(NSInteger)lm;
```

- PDF417 2D barcode

```objective-c
/**
 *  define a PDF417 2D barcode.

 [Option]

 P  Data compression method
 0: Auto encoding
 1: Binary mode
 E  Error correction level. Range: 0~8 Center pattern in barcode area
 0: The pattern will print upper left justified the area
 1: The pattern is printed middle of area

 Ux,y,c Human readable
 x: Human readable characters in the specified x-coordinate
 y: Human readable characters in the specified y-coordinate
 c: Maximum characters of human readable character per line

 W  Module width in dot. Range: 2~9
 H  Bar height in dot. Range: 4~99
 R  Maximum number of rows
 C  Maximum number of columns
 T  Truncation.
 0: Not truncated
 1: Truncated

 *  @param option 可选项
 */
- (void)printPDF417WithXPos:(NSInteger)x_pos
                       YPos:(NSInteger)y_pos
                      Width:(NSInteger)width
                     Height:(NSInteger)height
                     Rotate:(NSInteger)rotate
                     Option:(NSString *)option
                 Expression:(NSString *)expression;
```

- 打印 Aztec 条码

```
- (void)printAztecWithXPos:(NSInteger)XPos
                      YPos:(NSInteger)YPos
                    rotate:(NSInteger)rotate
                      size:(NSInteger)size
                       ecp:(NSInteger)ecp
                       flg:(NSInteger)flg
                      menu:(NSInteger)menu
                     multi:(NSInteger)multi
                       rev:(NSInteger)rev
                 aztecData:(NSString *)aztecData;
```

- 打印图片

```objective-c
/**
 *  print Bitmap format image.
 */
- (void)putBMPWithFilename:(NSString *)filename
                      XPos:(NSInteger)x_pos
                      YPos:(NSInteger)y_pos;
```

- 打印 PCX 格式图片

```
/**
 *  print PCX format images.
 */
- (void)putPCXWithFilename:(NSString *)filename
                      XPos:(NSInteger)x_pos
                      YPos:(NSInteger)y_pos;
```

- 设置反白

```objective-c
/**
 *  reverse a region in image buffer.
 */
- (void)setReverseWithXStart:(NSInteger)x_start
                      YStart:(NSInteger)y_start
                      XWidth:(NSInteger)x_width
                     YHeight:(NSInteger)y_height;
```

- 获取状态

```
- (void)getStatus;
```



## 7.3 Device Reconfiguration Commands

- 计数器设置

```objective-c
/**
 *  setting the counter number in the program and its increments.
 *  @param counterNumber 第几个计数器 （0-50）
 *  @param step          计数间隔    （-99999999 ~ 99999999）
 */
- (void)setCounterWithCounterNumber:(NSInteger)counterNumber
                               Step:(NSInteger)step;
```

- 设置切纸

```
- (void)setCutterON;
- (void)setCutterOFF;
- (void)setCutterBATCH;
```

- 设置切纸

```objective-c
/**
 *  set number of printing labels per cut
 *
 *  @param pieces (0 ~ 65535)
 */
- (void)setCutterPieces:(NSInteger)pieces;
```

- 设置切纸

```
- (void)setPARTIAL_CUTTER_OFF;
- (void)setPARTIAL_CUTTER_BATCH;
```

- 设置切纸

```objective-c
/**
 *  set number of printing labels per cut
 *
 *  @param pieces (0 ~ 65535)
 */
- (void)setPARTIAL_CUTTER_Pieces:(NSInteger)pieces;
```

- 设置回退

```
- (void)setBackOFF;
- (void)setBackON;
```

- 设置 LED

```objective-c
/**
 *  This setting is used to enable/disable the LED function.

 LED1 Power on/off
 LED2 Printer on-line/off-line
 LED3 Error/normal

 *
 *  @param index    LED1,LED2,LED3
 *  @param switcher ON/OFF
 */
- (void)setLED:(NSInteger)index Switch:(NSString *)switcher;
```

- Peel

```
- (void)setPeelON;
- (void)setPeelOFF;
```

- Tear

```
/**
 *  This command is used to enable/disable feeding of labels to gap/black mark position for tearing off.
 *  This setting will be saved in printer memory when turning off the power.
 */
- (void)setTearON;
- (void)setTearOFF;
```

- Striper

```
- (void)setStriperON;
- (void)setStriperOFF;
```

- Head

```objective-c
/**
 *  This setting is used to enable/disable head open sensor.
 */

- (void)setHeadON;
- (void)setHeadOFF;
```

- Ribbon

```
- (void)setRibbonON;
- (void)setRibbonOFF;
```

- 设置 COM 口

```objective-c
/**
 *  This setting defines communication parameters for printer serial port.
 *
 *  @param baud   24,48,96,19,38,57,115( 对应单位2400 bps,4800 bps,9600 bps,38400 bps,15200 bps)
 *  @param parity N,E,O(NO/Even/Odd parity check)
 *  @param data   7,8(bits Data)
 *  @param stop   1,2(stop bit)
 */

- (void)setCOM1WithBaud:(NSInteger)baud
                 Parity:(NSString *)parity
                   Data:(NSString *)data
                   Stop:(NSString *)stop;
```

- 设置Print Key

```objective-c
/**
 *  This command will print one label and feed label gap to tear br position for tearing away.
 *  This setting will be saved in printer memory.
 *
 *  @param key OFF/ON/AUTO/<num>
 */

- (void)setPrintKey:(NSString *)key;
```

- Reprint

```
- (void)setReprintON;
- (void)setReprintOFF;
```