ORSSerialPort серийныйЧитать в быстром

Я пытаюсь работать с ORSSerialPort в Swift. Но у меня проблема с чтением данных с последовательного порта. Беда в неправильной реализации функции serialPort. Может быть, эта часть будет полезна:

  • (void) serialPort: (ORSSerialPort *) serialPort didReceiveResponse: (NSData *) responseData toRequest: (ORSSerialRequest *) запрос;

//Auduino code. Send data for request.
int incomingByte = Serial.read();
if (incomingByte = '1', DEC) {
  Serial.print(h);
  Serial.print(',');
  Serial.print(t);

//OS X
class SerialController : NSObject, ORSSerialPortDelegate {
    var port : ORSSerialPort

    init(path: String){
        port=ORSSerialPort(path: path)
        port.close()
    }

    func open(){
        port.baudRate=9600
        port.delegate=self
        port.open()
    }

    func close(){
        port.delegate=nil
        port.close()
    }

    func SendString(data: String){
        port.sendData(data.dataUsingEncoding(NSUTF8StringEncoding))
    }

  //I'm trying to figure out how do I need to read data from serial 
   func serialPort(serialPort: ORSSerialPort!, idReceiveResponse:(NSData *)responseData         toRequest:(ORSSerialRequest *)request) -> String {

        if let string = NSString(data: data, encoding: NSUTF8StringEncoding) {
            println(string)
            return(string)
        }
    }

    let myPort = SerialController(path: "/dev/tty.usbmodem14141")


    myPort.open()
    myPort.SendString("1")
    var dataFromSerial = myPort.serialPort //read

1 ответ

Решение

Вы копировали / вставляли свой код или перепечатывали его для вопроса? В нем есть несколько ошибок, из-за которых он не компилируется, но я не думаю, что именно эти ошибки спровоцировали ваш вопрос.

Основная проблема заключается в том, что -serialPort:didReceiveResponse:toRequest: будет вызван только если вы ранее отправили ORSSerialRequest с использованием -sendRequest: метод. Поскольку вы просто отправляете необработанные данные, вам необходимо реализовать -serialPort:didReceiveData: (или скорее serialPort(serialPort: ORSSerialPort!, didReceiveData data: NSData!) так как вы используете Swift) вместо.

Вам следует взглянуть на пример проекта ORSSerialPortSwiftDemo в папке "Примеры", если вы этого еще не сделали.

Другие вопросы по тегам