1

MacからORSserialでArduinoにバイトを送りたいです。ORSSerialPort ターミナルのデモ コードを使用すると、フレームワーク、ハードウェア、および Arduino コードが機能します。それはArduino tx / rxと出力LEDを完全に点灯させるバイトを接続して送信します。ただし、ORSSerial と SwiftUI を使用して同じことを行うと、LED がまったく点灯しません。クラスのインスタンス化を別の場所に配置し、セットアップ/オープン コードを init 以外の関数に配置して、ボタン コールバックを使用することさえ試みました。これまでのところ、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 に答える