ORSSerialPort with Arduino



我一直在尝试编程一个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);
}

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

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

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

func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
guard let string = String(data: data, encoding: .ascii) else { return; }
print("Received: (string)")
}

最新更新