У меня есть устройство MFi (считыватель RFID), и я пытаюсь отсканировать отсканированные теги в своем приложении.Поэтому я использую EAAccessorymanager, чтобы получить общий аксессуар и прочитать с него данные.Когда я открываю сеанс и проверяю теги, функция stream не срабатывает, и я не могу понять, что я делаю неправильно.
import Foundation
import ExternalAccessory
class RFID: NSObject, EAAccessoryDelegate, StreamDelegate {
var _accessory: EAAccessory!
var _session: EASession!
var _protocolString: String?
func turnOn() {
let manager = EAAccessoryManager.shared()
let accessories = manager.connectedAccessories
if (accessories.count > 0) {
_accessory = accessories[0];
_session = EASession(accessory: _accessory, forProtocol: _accessory.protocolStrings[0]);
_accessory.delegate = self;
_session?.inputStream?.delegate = self;
_session?.inputStream?.schedule(in: .current, forMode: .default);
_session?.inputStream?.open();
print(_accessory);
print(_session);
}
}
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
switch eventCode {
case Stream.Event.openCompleted:
break
case Stream.Event.hasBytesAvailable:
// Read Data
print("Data Available");
break
case Stream.Event.hasSpaceAvailable:
// Write Data
break
case Stream.Event.errorOccurred:
break
case Stream.Event.endEncountered:
break
default:
break
}
}
}
ПРИМЕЧАНИЕ: печатный аксессуар всегда один!