2014-12-08 77 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示例项目,那么应该看看。