Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
581ebc7e10 | ||
|
|
db7a3b79a2 | ||
|
|
1b9591e07a | ||
|
|
af1fa134cc | ||
|
|
812a55a381 |
@@ -209,6 +209,8 @@ public enum PortError: Int32, Error {
|
|||||||
case mustReceiveOrTransmit
|
case mustReceiveOrTransmit
|
||||||
case mustBeOpen
|
case mustBeOpen
|
||||||
case stringsMustBeUTF8
|
case stringsMustBeUTF8
|
||||||
|
case unableToConvertByteToCharacter
|
||||||
|
case deviceNotConnected
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SerialPort {
|
public class SerialPort {
|
||||||
@@ -371,6 +373,12 @@ extension SerialPort {
|
|||||||
throw PortError.mustBeOpen
|
throw PortError.mustBeOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var s: stat = stat()
|
||||||
|
fstat(fileDescriptor, &s)
|
||||||
|
if s.st_nlink != 1 {
|
||||||
|
throw PortError.deviceNotConnected
|
||||||
|
}
|
||||||
|
|
||||||
let bytesRead = read(fileDescriptor, buffer, size)
|
let bytesRead = read(fileDescriptor, buffer, size)
|
||||||
return bytesRead
|
return bytesRead
|
||||||
}
|
}
|
||||||
@@ -424,6 +432,9 @@ extension SerialPort {
|
|||||||
let bytesRead = try readBytes(into: buffer, size: 1)
|
let bytesRead = try readBytes(into: buffer, size: 1)
|
||||||
|
|
||||||
if bytesRead > 0 {
|
if bytesRead > 0 {
|
||||||
|
if ( buffer[0] > 127) {
|
||||||
|
throw PortError.unableToConvertByteToCharacter
|
||||||
|
}
|
||||||
let character = CChar(buffer[0])
|
let character = CChar(buffer[0])
|
||||||
|
|
||||||
if character == terminator {
|
if character == terminator {
|
||||||
@@ -463,8 +474,8 @@ extension SerialPort {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func readChar() throws -> UnicodeScalar {
|
public func readChar() throws -> UnicodeScalar {
|
||||||
let byteRead = readByte()
|
let byteRead = try readByte()
|
||||||
let character = UnicodeScalar(buffer[0])
|
let character = UnicodeScalar(byteRead)
|
||||||
return character
|
return character
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user