IOS CoreBluetooth - ничего не происходит при написании характерного для принтера с Zebra LabelIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 IOS CoreBluetooth - ничего не происходит при написании характерного для принтера с Zebra Label

Сообщение Anonymous »

Я был вокруг всех видов учебных пособий и страниц помощи, но я не могу понять это. ), и я сейчас пытаюсь разработать свое собственное приложение для iOS для печати. Я стал так далеко, что вижу это в своем приложении как периферийное. Я могу подключиться к нему, и я могу получить услуги и характеристики. Но при использовании writevalue для характеристики ничего не происходит. Я пытался для всех различных характеристик, которые я могу найти, чтобы увидеть, не ошибся ли я, но тот же результат. Периферийные устройства и характеристики могут быть проверены. Но это тоже ничего не отправит на принтер. Так что я немного смущен. В LightBlue я нашел принтер, подключенный к нему, выбрал периферийный характер, выбрал характеристику, нажал на «написать новое значение», а затем нажал OK. Но вообще ничего не произошло. Я посмотрел в приложении настройки принтера Zebra, но не могу найти что -либо, что может звучать так, как это может решить мою проблему. >
import SwiftUI
import CoreBluetooth

class BluetoothViewModel: NSObject, ObservableObject {
private var centralManager: CBCentralManager?
private var peripherals: [CBPeripheral] = []
private var printerPeripheral: CBPeripheral!
@Published var peripheralNames: [String] = []

override init() {
super.init()
self.centralManager = CBCentralManager(delegate: self, queue: .main)
}
}

extension BluetoothViewModel: CBCentralManagerDelegate, CBPeripheralDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
self.centralManager?.scanForPeripherals(withServices: nil)
}
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if !peripherals.contains(peripheral) {
self.peripherals.append(peripheral)
self.peripheralNames.append(peripheral.name ?? "Unnamed Device")
//print("\(peripheral.name ?? "Unnamed Device") - \(peripheral.identifier) - \(RSSI)")

if (peripheral.identifier.uuidString == "F9FC7DFB-F149-4F95-7CEF-D6596338D032") {
centralManager?.connect(peripheral, options: nil)
self.printerPeripheral = peripheral
self.printerPeripheral.delegate = self

print("connecting to \(peripheral.name ?? "Unnamed Device")")
centralManager?.stopScan()
}
}
}

func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
print("Failed to connect to \(peripheral). (\(error!.localizedDescription))")

//cleanup()
}

// The handler if we do connect succesfully
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
if peripheral == self.printerPeripheral {
print("Connected to your printer")
//peripheral.discoverServices([CBUUID.init(string: peripheral.identifier.uuidString)])
peripheral.discoverServices(nil)
}
}

// Handles discovery event
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
print("didDiscoverServices")
if let services = peripheral.services {
for service in services {
print("Service - \(service.uuid.uuidString) - \(service.description)")
//if service.uuid == CBUUID.init(string: peripheral.identifier.uuidString) {
//if service.uuid == service.uuid {
if service.uuid.uuidString.elementsEqual("38EB4A80-C570-11E3-9507-0002A5D5C51B") {
print("Printer service found")
//Now kick off discovery of characteristics
//peripheral.discoverCharacteristics([CBUUID.init(string: service.uuid.uuidString)], for: service)
peripheral.discoverCharacteristics(nil, for: service)
//return
}
}
}
}

// Handling discovery of characteristics
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
print("didDiscoverCharactericsFor")
if let characteristics = service.characteristics {
print(characteristics.count)
for characteristic in characteristics {
print("Characteristic - \(characteristic.uuid)")
if (characteristic.uuid.uuidString.elementsEqual("38EB4A82-C570-11E3-9507-0002A5D5C51B")) {
print("write")
//let bytesToPrint: [UInt8] = [27, 64, 10, 10, 10, 99, 105, 97, 111, 10, 10, 10]
//let bytesToPrint: [UInt8] = [27, 64, 10, 10]
//let data = Data(bytes: bytesToPrint)
//peripheral.writeValue(data, for: characteristic, type: CBCharacteristicWriteType.withoutResponse)

var data: String = "test"
let valueString = (data as NSString).data(using: String.Encoding.utf8.rawValue)
peripheral.writeValue(valueString!, for: characteristic, type: .withResponse)

print("Value String===>\(valueString.debugDescription)")
}
}
}
}

func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
guard error == nil else {
print("Fejl \(error)")
return
}
print("Message sent")
}
}

struct ContentView: View {
@ObservedObject private var bluetoothViewModel = BluetoothViewModel()

var body: some View {
NavigationView {
List(bluetoothViewModel.peripheralNames, id: \.self) { peripheral in
Text(peripheral)
.navigationTitle("Peripherals")
}
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
< /code>
выше код приводит ниже вывода в консоли: < /p>
connecting to D8J222507660
Connected to your printer
didDiscoverServices
Service - 180A -
Service - 38EB4A80-C570-11E3-9507-0002A5D5C51B -
Printer service found
didDiscoverCharactericsFor
6
Characteristic - 38EB4A81-C570-11E3-9507-0002A5D5C51B
Characteristic - 38EB4A82-C570-11E3-9507-0002A5D5C51B
write
Value String===>6 bytes
Characteristic - 38EB4A83-C570-11E3-9507-0002A5D5C51B
Characteristic - 38EB4A84-C570-11E3-9507-0002A5D5C51B
Characteristic - 38EB4A87-C570-11E3-9507-0002A5D5C51B
Characteristic - 38EB4A88-C570-11E3-9507-0002A5D5C51B
Message sent

< /code>
пытался написать значение принтеру как из моего собственного приложения, так и из LightBlue. Ничего не происходит.

Подробнее здесь: https://stackoverflow.com/questions/764 ... -zebra-lab
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка интеграции Zebra RFID: com.zebra.rfid.api3.OperationFailureException
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Принтер этикеток Zebra (Gx430t) установил настройки конфигурации принтера
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Принтер этикеток Zebra (Gx430t) установил настройки конфигурации принтера
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Принтер этикеток Zebra (Gx430t) установил настройки конфигурации принтера
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Принтер этикеток Zebra (Gx430t) установил настройки конфигурации принтера
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»