1

我想从 Mac 向带有 ORSserial 的 Arduino 发送一个字节。当我使用 ORSSerialPort 终端演示代码时,框架、硬件和 Arduino 代码工作。它连接并发送一个字节,完美地点亮 Arduino tx/rx 和输出 LED。但是,当我使用 ORSSerial 和 SwiftUI 做同样的事情时,它根本不会点亮任何 LED。我尝试将类实例化放在不同的位置,并将设置/打开代码放在初始化之外的函数中,甚至使用按钮回调。到目前为止仍然不能在 SwiftUI 中工作。我是 swift 和 swiftui 的新手,所以我的代码中可能存在可怕的错误,但就是这样。欢迎所有建议/批评,谢谢。

    import SwiftUI 
    import ORSSerial

    class myPort: NSObject, ORSSerialPortDelegate {

       var serialPort = ORSSerialPort(path: "/dev/cu.usbmodem14101")
       let myData = "2".data(using: .utf8)

       override init(){
           super.init()
           print("starting:")
           if (serialPort != nil){
               serialPort?.baudRate = 9600
               serialPort?.numberOfDataBits = 8
               serialPort?.numberOfStopBits = 1
               serialPort?.parity = .none
               serialPort?.usesRTSCTSFlowControl = false
               serialPort?.open()
               if ((serialPort?.isOpen) != nil){
                   serialPort?.send(myData!) // someData is an NSData object
                   print("sending: \(String(describing: myData))")
               } else {print("Error: opening port")}
           } else {print("Error: getting port")}
       }

       func serialPortWasRemovedFromSystem(_ serialPort: ORSSerialPort) {
           print("Error: port removed")
       }

       deinit {
           serialPort?.close()
           print("Port closed")
       }
    }
    
    struct ContentView: View { 
       var sendArduino = myPort()
       var body: some View {
           VStack{
              Text("Done yet?")
           }
           .frame(width: 400, height: 400)
       }
    }
4

1 回答 1

0

感谢 workingdog 的提示,我只需将 com.apple.security.device.serial 作为布尔值添加到权利中并将其设置为 true :)

于 2021-08-24T03:11:51.460 回答