| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import Foundation
- import SwiftSerial
- print("You should do a loopback i.e short the TX and RX pins of the target serial port before testing.")
- let testString: String = "The quick brown fox jumps over the lazy dog 01234567890."
- let numberOfMultiNewLineTest : Int = 5
- let test3Strings: String = testString + "\n" + testString + "\n" + testString + "\n"
- let arguments = CommandLine.arguments
- guard arguments.count >= 2 else {
- print("Need serial port name, e.g. /dev/ttyUSB0 as the first argument.")
- exit(1)
- }
- let portName = arguments[1]
- let serialPort: SerialPort = SerialPort(path: portName)
- do {
- print("Attempting to open port: \(portName)")
- try serialPort.openPort()
- print("Serial port \(portName) opened successfully.")
- defer {
- serialPort.closePort()
- print("Port Closed")
- }
- serialPort.setSettings(receiveRate: .baud9600,
- transmitRate: .baud9600,
- minimumBytesToRead: 1)
- print("Writing test string <\(testString)> of \(testString.characters.count) characters to serial port")
- var bytesWritten = try serialPort.writeString(testString)
- print("Successfully wrote \(bytesWritten) bytes")
- print("Waiting to receive what was written...")
- let stringReceived = try serialPort.readString(ofLength: bytesWritten)
- if testString == stringReceived {
- print("Received string is the same as transmitted string. Test successful!")
- } else {
- print("Uh oh! Received string is not the same as what was transmitted. This was what we received,")
- print("<\(stringReceived)>")
- }
- print("Now testing reading/writing of \(numberOfMultiNewLineTest) lines")
- var multiLineString: String = ""
- for i in 1...numberOfMultiNewLineTest {
- multiLineString += testString + "\n"
- }
- print("Now writing multiLineString")
- var _ = try serialPort.writeString(multiLineString)
- for i in 1...numberOfMultiNewLineTest {
- let stringReceived = try serialPort.readLine()
-
- if testString == stringReceived {
- print("Received string \(i) is the same as transmitted section. Moving on...")
- } else {
- print("Uh oh! Received string \(i) is not the same as what was transmitted. This was what we received,")
- print("<\(stringReceived)>")
- break
- }
- }
-
- print("End of example");
- } catch PortError.failedToOpen {
- print("Serial port \(portName) failed to open. You might need root permissions.")
- } catch {
- print("Error: \(error)")
- }
|