SwiftUI 中的 ORSSerialPort.send 无法连接
Posted
技术标签:
【中文标题】SwiftUI 中的 ORSSerialPort.send 无法连接【英文标题】:ORSSerialPort.send in SwiftUI won't connect 【发布时间】:2021-08-23 20:42:37 【问题描述】:我想从 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)
【问题讨论】:
您是说您的myPort
代码在另一个测试环境中都可以工作,但在SwiftUI View
中使用时却不行?
不。 ORSserialPort 示例演示是一个接口构建器和 swift 终端 Xcode 项目,它连接并向我的 Arduino 发送一个字节罚款。当我尝试对 ORSserialPort 和 SwiftUI 做同样的事情时,它甚至没有连接更少发送字节:/
好吧,现在我更困惑了。 “不”是指是的,我的评估是正确的吗?
可能与权利/安全性有关。您是否在您的权利中设置:<key>com.apple.security.device.serial</key> <true/>
?查看 SwiftUI 演示:github.com/janhendry/ORSSerialPort/tree/master/Examples/…
抱歉,我的“不”是说我尝试编写的任何 SwiftUI 代码都不起作用。 ORSserial 端口演示是一个简单的终端,所以我编译了输入数字 2 并发送到 Arduino 罚款。
【参考方案1】:
感谢 workingdog 的提示,我只需将 com.apple.security.device.serial 作为布尔值添加到权利并将其设置为 true :)
【讨论】:
以上是关于SwiftUI 中的 ORSSerialPort.send 无法连接的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ORSSerialPort serialPort:didReceiveData NSData 只有单字节?