1

我正在尝试在 Swift 中使用 ORSSerialPort。但是我从串口读取数据有问题。问题是错误的serialPort函数实现。也许这部分会有所帮助:

  • (void)serialPort:(ORSSerialPort *)serialPort didReceiveResponse:(NSData *)responseData toRequest:(ORSSerialRequest *)request;

//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
4

1 回答 1

0

您是复制/粘贴代码,还是为问题重新输入代码?它有几个错误会导致它无法编译,但我不认为这些是引起你问题的错误。

主要问题是只有在您之前使用该方法-serialPort:didReceiveResponse:toRequest:发送过时才会调用它。由于您只是发送原始数据,因此您需要实现(或者更确切地说,因为您使用的是 Swift)。ORSSerialRequest-sendRequest:-serialPort:didReceiveData:serialPort(serialPort: ORSSerialPort!, didReceiveData data: NSData!)

如果您还没有,您应该查看示例文件夹中的 ORSSerialPortSwiftDemo 示例项目。

于 2014-12-08T10:13:05.260 回答