2014-12-08 65 views
0

我試圖在Swift中使用ORSSerialPort。但是我從串口讀取數據有問題。麻煩的是serialPort函數的錯誤實現。也許這部分將是有益的:ORSSerialPort serialRead in swift

  • (無效)的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 

回答

0

你複製/粘貼代碼,或重新鍵入的問題嗎?它有幾個錯誤會導致它不編譯,但我不認爲這些是引發你的問題的錯誤。

主要問題是隻有在您以前使用-sendRequest:方法發送ORSSerialRequest方法時纔會調用-serialPort:didReceiveResponse:toRequest:。由於您只是發送原始數據,因此您需要實施-serialPort:didReceiveData:(或使用Swift的serialPort(serialPort: ORSSerialPort!, didReceiveData data: NSData!))。

如果您還沒有看過示例文件夾中的ORSSerialPortSwiftDemo示例項目,那麼應該看看。