Я был вокруг всех видов учебных пособий и страниц помощи, но я не могу понять это. ), и я сейчас пытаюсь разработать свое собственное приложение для 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
IOS CoreBluetooth - ничего не происходит при написании характерного для принтера с Zebra Label ⇐ IOS
Программируем под IOS
1740526787
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. Ничего не происходит.
Подробнее здесь: [url]https://stackoverflow.com/questions/76478143/ios-corebluetooth-nothing-happens-when-writing-to-characteristic-for-zebra-lab[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия