| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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 testBinaryArray : [UInt8] = [0x11, 0x22, 0x33, 0x0D, 0x44]
- let arguments = CommandLine.arguments
- guard arguments.count >= 2 else {
- print("Need serial port name, e.g. /dev/ttyUSB0 or /dev/cu.usbserial 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("Sending: ", terminator:"")
- print(testBinaryArray.map { String($0, radix: 16, uppercase: false) })
- let dataToSend: Data = Data(_: testBinaryArray)
- let bytesWritten = try serialPort.writeData(dataToSend)
- print("Successfully wrote \(bytesWritten) bytes")
- print("Waiting to receive what was written...")
- let dataReceived = try serialPort.readData(ofLength: bytesWritten)
- print("Received: ", terminator:"")
- print(dataReceived.map { String($0, radix: 16, uppercase: false) })
- if(dataToSend.elementsEqual(dataReceived)){
- print("Received data is the same as transmitted data. Test successful!")
- } else {
- print("Uh oh! Received data is not the same as what was transmitted. This was what we received,")
- print(dataReceived.map { String($0, radix: 16, uppercase: false) })
- }
-
- print("End of example");
- } catch PortError.failedToOpen {
- print("Serial port \(portName) failed to open. You might need root permissions.")
- } catch {
- print("Error: \(error)")
- }
|