0

我一直在尝试编写一个 Xcode 接口来与我的 Arduino Mega 通信。但整个事情并没有像预期的那样工作。我用 ORSSerialPort 完成了整个工作。

在 Xcode 项目中,我为 swift 文件 ViewController.swift 编写了这个:


import Cocoa
import ORSSerial


class ViewController: NSViewController, ORSSerialPortDelegate {

var serialPort = ORSSerialPort(path: "/dev/cu.usbmodem142101")
    
 
    
    func SendString(data: String){
                let stringData = Data(data.utf8)
                serialPort?.send(stringData)
            }
    func openPort(){
                serialPort?.baudRate=9600
                serialPort?.delegate=self
                serialPort?.parity = .none
                serialPort?.numberOfStopBits = 1
                serialPort?.open()
                print("serialport is open")
            }
    func closePort(){
                serialPort?.delegate=nil
                serialPort?.close()
                print("serialport is close")
            }
    
  
    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override var representedObject: Any? {
        didSet {
        }
    }
 
  
    
    @IBAction func onButton(_ sender: Any) {
        openPort()
    }
    @IBAction func OffButton(_ sender: Any) {
        closePort()
    }
    @IBAction func SendButton(_ sender: Any) {
        SendString(data: "stringdata blablabla")
    }

    
    
    
    func serialPortWasOpened(_ serialPort: ORSSerialPort) {
        print("serialPort to \(serialPort) is run")
    }

    func serialPortWasRemovedFromSystem(_ serialPort: ORSSerialPort) {
        self.serialPort = nil
    }
    
}

我在 Arduino mega 上加载了这段代码:


String angel;

void setup() {
  Serial.begin(9600);
}

void loop() {
 
 
 angel = Serial.readString();

 Serial.println(angel);
 delay(350);

}

不幸的是它不起作用,我不知道为什么。

4

1 回答 1

0

您的问题没有提供有关哪些部分不起作用的任何详细信息,但有一个明确的问题。

您的 Arduino 程序看起来像是将它在串行端口上接收到的所有内容都回显到同一个端口上。为了在计算机上看到它,您必须serialPort(_:didReceive:)在视图控制器中实现该方法。像这样的东西:

func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
    guard let string = String(data: data, encoding: .ascii) else { return; }
    print("Received: \(string)")
}
于 2020-12-16T21:14:43.087 回答