Files
swiftrplidar/Sources/Examples/main.swift
Piv f4ef8ed829 Conform to IteratorProtocol for scanning.
I've left the old callback implementations in for now, undecided whether these should be removed. The nice thing about the callback method is that it's more compact, however the logic behind it is less clear.
2020-10-02 23:01:53 +09:30

41 lines
1.0 KiB
Swift

import SwiftRPLidar
import SwiftSerial
do {
try main()
}
catch {
print("Unexpected Error \(error)")
}
func main() throws {
let serialPort = SerialPort(path: "/dev/cu.usbserial-0001")
let lidar = try SwiftRPLidar(onPort: serialPort)
var index = 0
try lidar.iterMeasurements { measurement in
print("Quality: ",measurement.quality, ", Angle: ", measurement.angle, ", Distance: ", measurement.distance)
index += 1
return index <= 10
}
index = 0
_ = try lidar.startScanning()
for measurement in lidar {
print("Quality: ",measurement.quality, ", Angle: ", measurement.angle, ", Distance: ", measurement.distance)
index += 1
if index > 10 {
break
}
}
}
extension SerialPort: LidarSerial{
public func setBaudrate(baudrate: Int) {
switch baudrate{
default:
setSettings(receiveRate: .baud115200, transmitRate: .baud115200, minimumBytesToRead: 3, timeout: 1)
}
}
}