CBPeripheral - "didWriteValueFor" 出现错误 "The prepare queue is full."
CBPeripheral - "didWriteValueFor" gets error "The prepare queue is full."
我正在使用 ZPL 打印机打印 base64 解码后的字符串。
对于小的解码字符串,它正在打印收据,对于多行 base64 解码字符串,我收到错误。
委托方法:
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
if error != nil {
print(error?.localizedDescription)
}
}
当 print(error?.localizedDescription)
时出现以下错误
Error :
The prepare queue is full
提前致谢。
如果有人正在寻找答案。
当打印数据较大时,应先将其分成块,然后将每个块分别传递给打印。
下面是创建数据块的代码
func createChunks(data: Data) -> ([Data]) {
var chunks : [Data] = []
let length = data.count
let chunkSize = 80
var offset = 0
repeat {
let thisChunkSize = ((length - offset) > chunkSize) ? chunkSize : (length - offset);
let chunk = data.subdata(in: offset..<offset + thisChunkSize )
chunks.append(chunk)
offset += thisChunkSize;
} while (offset < length);
return chunks
}
在将数据发送到打印之前调用此方法。
下面是方法,当用户点击打印选项时调用。
func printReciept(text: String) {
let zpl = text + ("\r\n")
if let payload = zpl.data(using: .utf8) {
chunksToBeSent = chunks.count
chunksIsAlreadySent = 0
chunks = createChunks(data: payload)
chunks.forEach { (chunk) in
writeChucks(chunk: chunk)
}
}
}
下面的帖子也来自他们的官方演示 Github 问题。
我正在使用 ZPL 打印机打印 base64 解码后的字符串。
对于小的解码字符串,它正在打印收据,对于多行 base64 解码字符串,我收到错误。
委托方法:
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
if error != nil {
print(error?.localizedDescription)
}
}
当 print(error?.localizedDescription)
Error :
The prepare queue is full
提前致谢。
如果有人正在寻找答案。
当打印数据较大时,应先将其分成块,然后将每个块分别传递给打印。
下面是创建数据块的代码
func createChunks(data: Data) -> ([Data]) {
var chunks : [Data] = []
let length = data.count
let chunkSize = 80
var offset = 0
repeat {
let thisChunkSize = ((length - offset) > chunkSize) ? chunkSize : (length - offset);
let chunk = data.subdata(in: offset..<offset + thisChunkSize )
chunks.append(chunk)
offset += thisChunkSize;
} while (offset < length);
return chunks
}
在将数据发送到打印之前调用此方法。
下面是方法,当用户点击打印选项时调用。
func printReciept(text: String) {
let zpl = text + ("\r\n")
if let payload = zpl.data(using: .utf8) {
chunksToBeSent = chunks.count
chunksIsAlreadySent = 0
chunks = createChunks(data: payload)
chunks.forEach { (chunk) in
writeChucks(chunk: chunk)
}
}
}
下面的帖子也来自他们的官方演示 Github 问题。