Я не думаю, что ORSSerialPort.read()
хорошая идея. Я знаю, что некоторые другие последовательные библиотеки написаны таким образом, но единственный способ для этого - блокировать read()
(возможно, с таймаутом) до тех пор, пока в порт не поступит байт. Блокировка ввода / вывода усложняет написание хорошего адаптивного приложения, и я хочу отвести разработчиков, использующих ORSSerialPort, от этого подхода.
Вместо этого вы действительно должны реализовать serialPort(_:, didReceive:)
в вашем ORSSerialPort
делегате. Когда данные поступают в последовательный порт, этот метод вызывается с полученными данными, и вы можете делать с ним все, что захотите.
Тем не менее, если ваше устройство обменивается данными с использованием протокола типа команда / ответ (т. Е. Каждый раз, когда вы отправляете команду, устройство отправляет какой-либо ответ), вам следует взглянуть на API запроса / ответа ORSSerialPort. Он позволяет вам явно определять формат ожидаемых ответов на команды, а сам ORSSerialPort будет обрабатывать асинхронно ожидающие, анализирующие и проверяющие ответы. См. документацию для получения дополнительной информации об этой части ORSSerialPort. Библиотека также содержит пример проекта RequestResponseDemo, который демонстрирует использование этого API. Версии Swift и Objective-C включены.