Skip to content
啟樞科技文檔

啟樞檔案館

這裡是後續撰寫產品文檔的入口頁。左側負責文檔分類與章節層級,右側保留正式文檔正文、提示塊、程式碼、表格與上一頁 / 下一頁的位置。

sdk / swift

Swift SDK

面向 iOS 和 macOS Swift 專案的 NIB 印表機 SDK 接入說明。

Swift SDK 適合新的 iOS 和 macOS 原生專案。原始碼中沒有找到可確認的 Package.swift,所以這裡不寫具體 SwiftPM product 名稱;請按交付套件的匯入方式接入對應模組。

模組 常用類型
Core NibScriptNibDeviceNibPenNibWritePipeline、接收源和查詢分發。
BLE NibBleCentralNibBleDeviceNibBleConnectionOptions、credit 流控。
Boxliy dialects NibEscBoxliyNibTsplBoxliyNibCpclBoxliy 和回應解析器。
Aryten dialects NibEscArytenNibTsplArytenNibCpclAryten
Image helpers 交付版本中可用的圖片準備和列印輔助能力。

NibDevice 是最小裝置合約:

public protocol NibDevice: AnyObject {
var name: String { get }
var connected: Bool { get }
func write(_ data: Data) throws
func read(maxLength: Int) throws -> Data
func close() throws
}

NibScript 儲存建構好的 Data,並提供 lengthstringhexStringNibWritePipeline 負責分片寫入,預設 chunkSize512 位元組。

let connectedDevice: NibDevice = /* BLE 或平台设备 */
let script = NibTsplAryten()
.size(width: 40, height: 30)
.cls()
.text(x: 20, y: 20, content: "NIB SDK")
.print()
.script
let pipeline = NibWritePipeline()
try pipeline.write(script, to: connectedDevice)

建構器負責產生指令碼,NibWritePipeline 負責把指令碼分片寫入裝置。需要改變分片大小時:

let pipeline = NibWritePipeline(chunkSize: 185)
try pipeline.write(script, to: connectedDevice)

BLE 入口是 NibBleCentral

let central = NibBleCentral()
try central.startDiscovery(timeout: 10)
// 用户选择 discoveredDevices 里的目标设备后:
let device = try central.connect(
selectedDevice,
options: NibBleConnectionOptions()
)

NibBleConnectionOptions 可以配置 serviceUUIDswriteCharacteristicUUIDreadCharacteristicUUID、連線和發現逾時、writeModecredit 和自定義 flowControl。寫入模式是 NibBleWriteMode.withResponse.withoutResponse,預設是 .withoutResponse

credit API 包括:

API 用途
NibBleCreditOptions 配置是否啟用 credit、UUID、初始 credit、MTU、策略和 fallback。
NibBleLaneCreditWriter lane-credit 策略。
NibBleSignalCreditWriter signal-credit 策略。
NibBleFlowControlStrategy 自定義流控策略協議。

預設 UUID 是 FF00 service、FF02 write、FF01 read、FF03 credit。lane-credit 預設初始 credit 是 1,payload overhead 是 3;signal-credit 預設初始 credit 是 0,payload overhead 是 0NibBleCreditOptions 預設不啟用,除非選擇 .signalCredit 或顯式設定 enabled: true

Core 接收類型包括 NibReceiveSourceNibCallbackReceiveSourceNibPollingReceiveSourceNibReceiveListener。查詢類型包括 NibQueryDispatcher<Response>NibPendingQuery<Response>NibResponseMatcher<Response>

NibReceiveSource 提供 dataStream() 擴展,可以把回包轉換成 AsyncStream<Data>

for await data in device.receiveSource.dataStream() {
let response = NibTsplResponseParser.parse(query: .status, raw: data)
if response.isReady {
break
}
}

Boxliy 方言 parser 名稱:

方言 解析器
ESC NibEscResponseParser
TSPL NibTsplResponseParser
CPCL NibCpclResponseParser

方法与命令清单

下面列出这个语言 SDK 中常用且对接方需要理解的公开入口。构建器方法会生成对应打印机指令;是否能在某台机器上使用,仍以机器固件支持的 ESC、TSPL、CPCL 或 Lin8inch 指令组为准。

Core、连接与写入

对象方法 / 命令作用参数说明
NibDevice / NibScriptwrite(_ data), read(maxLength), close(), length, string, hexString抽象真实打印机连接,供模板、写入管线和查询层统一使用。`maxLength` 限制读取长度;`NibScript` 包装构建好的 Data。
NibPen / NibWritePipelineappend(bytes), append(data), append(text), crlf(), clear(), reset(), write(script, to), write(data, to)把已经构建好的字节按分片、超时、取消和流控规则写入设备。`chunkSize` 在 pipeline 初始化时配置;返回实际写入字节数。
NibBleCentral / NibBleDevicestartDiscovery(), stopDiscovery(), connect(), disconnect(), discover(options), write(), read(), close()处理 BLE 特征值选择、MTU 分片、credit 通知和 fallback 写入。`NibBleConnectionOptions` 配置 service/write/read UUID、timeout、writeMode 和 credit。
NibReceiveSource / NibQueryDispatcherstart(listener), stop(), accept(), receive(), query(timeout, matcher), wait(), cancel(), shutdown(), dataStream()把设备回包接入监听器或查询分发器,用于状态、电量、型号等查询。`matcher` 返回泛型响应;`wait(timeout:)` 用于同步等待查询结果。

指令构建器

对象方法 / 命令作用参数说明
NibEscBoxliy / NibEscArytenreset(), text(), newLine(), bold(), underline(), fontSize(), lineRow(), feed(), lineDot(), backLineDot(), location(), cut(), lineDotCut(), batteryVolume(), info(), model(), version(), printerVersion(), name(), mac(), sn(), state(), status(), enable(), stopJob(), wakeup(), barcode(), qrcode(), image(), raw(), clear()生成 ESC/Boxliy 基础指令,适合小票、便携打印机和支持 ESC 的机型。Swift ESC 直接支持 `text`;条码/二维码/图片参数与方法签名一致。
NibTsplBoxliy / NibTsplArytensize(), cls(), print(), gap(), text(), barcode(), qrcode(), bitmap(), status(), state(), batteryVolume(), version(), versions(), model(), models(), sn(), sns(), raw(), clear()生成 TSPL 标签指令,适合需要纸张尺寸、坐标、条码和二维码的标签模板。`text` 传 x/y/font/rotation/xMulti/yMulti/content;`bitmap` 传 Data 或 prepared bitmap。
NibCpclBoxliy / NibCpclArytenbegin(), pageWidth(), text(), barcode(), qrcode(), line(), box(), image(), form(), print(), status(), sn(), model(), version(), batteryVolume(), raw(), clear()生成 CPCL 标签指令,适合 CPCL 机型的页面、文字、线条、条码和图片。`begin` 传 height/copies;`line/box` 传坐标和 thickness;`image` 传 data/byteWidth/height/compress。

回包解析

对象方法 / 命令作用参数说明
NibEscResponseParser / NibTsplResponseParser / NibCpclResponseParserparse(raw), parse(query, raw)把打印机回包解析成状态、电量、文本、MAC、事件或未知响应。返回结构包含 query、type、raw、rawHex、statusByte、statusFlags、isReady、电量、文本、描述等字段。
  • 先確認機型支援 ESC、TSPL 還是 CPCL,再選建構器。
  • BLE 權限、掃描、重連和 App 生命週期邏輯放在連線層。
  • 範本層只處理紙張尺寸、座標、圖片和文字內容。
  • 真機驗證 write mode、MTU、credit 通知、大圖片和連續列印。