adjust code to read until new character is encountered. Example code now tests for this.
This commit is contained in:
@@ -5,6 +5,10 @@ print("You should do a loopback i.e short the TX and RX pins of the target seria
|
|||||||
|
|
||||||
let testString: String = "The quick brown fox jumps over the lazy dog 01234567890."
|
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
|
let arguments = CommandLine.arguments
|
||||||
guard arguments.count >= 2 else {
|
guard arguments.count >= 2 else {
|
||||||
print("Need serial port name, e.g. /dev/ttyUSB0 as the first argument.")
|
print("Need serial port name, e.g. /dev/ttyUSB0 as the first argument.")
|
||||||
@@ -15,6 +19,8 @@ let portName = arguments[1]
|
|||||||
let serialPort: SerialPort = SerialPort(path: portName)
|
let serialPort: SerialPort = SerialPort(path: portName)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
||||||
|
print("Attempting to open port: \(portName)")
|
||||||
try serialPort.openPort()
|
try serialPort.openPort()
|
||||||
print("Serial port \(portName) opened successfully.")
|
print("Serial port \(portName) opened successfully.")
|
||||||
defer {
|
defer {
|
||||||
@@ -41,6 +47,36 @@ do {
|
|||||||
print("<\(stringReceived)>")
|
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("We successfully received back \(numberOfMultiNewLineTest) lines")
|
||||||
|
|
||||||
} catch PortError.failedToOpen {
|
} catch PortError.failedToOpen {
|
||||||
print("Serial port \(portName) failed to open. You might need root permissions.")
|
print("Serial port \(portName) failed to open. You might need root permissions.")
|
||||||
} catch {
|
} catch {
|
||||||
|
|||||||
@@ -420,14 +420,18 @@ extension SerialPort {
|
|||||||
buffer.deallocate(capacity: 1)
|
buffer.deallocate(capacity: 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read byte by byte
|
while true {
|
||||||
while try readBytes(into: buffer, size: 1) > 0 {
|
let bytesRead = try readBytes(into: buffer, size: 1)
|
||||||
let character = CChar(buffer[0])
|
|
||||||
if character != terminator {
|
if bytesRead > 0 {
|
||||||
data.append(buffer, count: 1)
|
let character = CChar(buffer[0])
|
||||||
} else {
|
|
||||||
break
|
if character == terminator {
|
||||||
}
|
break
|
||||||
|
} else {
|
||||||
|
data.append(buffer, count: 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let string = String(data: data, encoding: String.Encoding.utf8) {
|
if let string = String(data: data, encoding: String.Encoding.utf8) {
|
||||||
|
|||||||
Reference in New Issue
Block a user