Move settings/open of port into convenience initialiser.
This avoids attempting to open a serial port multiple times, which can be problematic if a blocking connection is used. Instead settings and port connection should be handled prior to designated inititializer.
This commit is contained in:
25
Package.resolved
Normal file
25
Package.resolved
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"object": {
|
||||||
|
"pins": [
|
||||||
|
{
|
||||||
|
"package": "SwiftSerial",
|
||||||
|
"repositoryURL": "https://vato.ddns.net/gitlab/vato007/SwiftSerial.git",
|
||||||
|
"state": {
|
||||||
|
"branch": "master",
|
||||||
|
"revision": "0e824cc38c6802e69543d0c1406d34babfd68e2e",
|
||||||
|
"version": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"package": "SwiftyGPIO",
|
||||||
|
"repositoryURL": "https://github.com/uraimo/SwiftyGPIO.git",
|
||||||
|
"state": {
|
||||||
|
"branch": null,
|
||||||
|
"revision": "2038228e020cf12a62012b1ebe36bb9b8e6fdb6a",
|
||||||
|
"version": "1.2.5"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
@@ -30,14 +30,15 @@ public class Esp32ServoOutput : PWMOutput {
|
|||||||
self.serialPort = port
|
self.serialPort = port
|
||||||
}
|
}
|
||||||
|
|
||||||
public convenience init?(forChannel channel: UInt8, forPin pin: UInt8, onPort port: String) {
|
public convenience init?(forChannel channel: UInt8, forPin pin: UInt8, onPort port: String) throws {
|
||||||
self.init(forChannel: channel, forPin: pin, onPort: SerialPort(path: port))
|
let initPort = SerialPort(path: port)
|
||||||
|
try initPort.openPort()
|
||||||
|
initPort.setSettings(receiveRate: .baud115200, transmitRate: .baud115200, minimumBytesToRead: 1)
|
||||||
|
self.init(forChannel: channel, forPin: pin, onPort: initPort)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func initPWM() {
|
public func initPWM() {
|
||||||
do {
|
do {
|
||||||
try serialPort.openPort()
|
|
||||||
serialPort.setSettings(receiveRate: .baud115200, transmitRate: .baud115200, minimumBytesToRead: 1)
|
|
||||||
let bytesWritten = try serialPort.writeData(Data([0, 1, channel, pin]))
|
let bytesWritten = try serialPort.writeData(Data([0, 1, channel, pin]))
|
||||||
if bytesWritten != 4 {
|
if bytesWritten != 4 {
|
||||||
print("Wrote %d bytes, but should have written 4", bytesWritten)
|
print("Wrote %d bytes, but should have written 4", bytesWritten)
|
||||||
|
|||||||
Reference in New Issue
Block a user