Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af1fa134cc | ||
|
|
812a55a381 | ||
|
|
41ddf0247a | ||
|
|
f3c3a214e3 | ||
|
|
5536368ba7 | ||
|
|
e2063420e9 | ||
|
|
cfaf24357c | ||
|
|
543e7d39e0 | ||
|
|
f9981b1cec | ||
|
|
d36d0132a8 | ||
|
|
b29775dfbe | ||
|
|
8a8dfcb190 | ||
|
|
25600e48fb | ||
|
|
7c06c99bd1 | ||
|
|
ad3142da95 |
@@ -44,10 +44,10 @@ func printToScreenFrom(myself: Bool, characterToPrint: UnicodeScalar){
|
||||
|
||||
if(myturn && !myself){
|
||||
myturn = false
|
||||
print("\nOther: ", terminator:"")
|
||||
print("\n\nOther: ", terminator:"")
|
||||
} else if (!myturn && myself){
|
||||
myturn = true
|
||||
print("\nMe: ", terminator:"")
|
||||
print("\n\nMe: ", terminator:"")
|
||||
}
|
||||
|
||||
print(characterToPrint, terminator:"")
|
||||
@@ -95,6 +95,7 @@ do {
|
||||
observer in
|
||||
|
||||
backgroundRead()
|
||||
return nil
|
||||
}
|
||||
|
||||
pthread_create(&readingThread, nil, pthreadFunc, nil)
|
||||
|
||||
21
README.md
21
README.md
@@ -9,6 +9,14 @@ This library is an improvement over my previous now deprecated library [SwiftLin
|
||||
<a href="https://developer.apple.com/swift"><img src="https://img.shields.io/badge/swift3-compatible-orange.svg?style=flat" alt="Swift 3 compatible" /></a>
|
||||
<a href="https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/LICENSE"><img src="http://img.shields.io/badge/license-MIT-blue.svg?style=flat" alt="License: MIT" /></a>
|
||||
|
||||
## Talk on this library
|
||||
|
||||
I gave a talk on this library and one of its examples SwiftSerialIM. Click on the links below to see the slides and video.
|
||||
|
||||
[](http://www.slideshare.net/yeokm1/a-science-project-swift-serial-chat)
|
||||
|
||||
[](https://www.youtube.com/watch?v=6PWP1eZo53s)
|
||||
|
||||
## Mac OS Preparation
|
||||
|
||||
You should have Xcode 8 installed with the command line tools.
|
||||
@@ -63,7 +71,7 @@ To get started quickly, you can take a look at my example projects [here](Exampl
|
||||
|
||||
### Example 1: Loopback Test
|
||||
|
||||
In order to run this example properly, you need to connect one of your (USB/UART) serial ports in a loopback manner. Basically, you short the TX and RX pins of the serial port.
|
||||
In order to run this example properly, you need to connect one of your (USB/UART) serial ports in a loopback manner. Basically, you short the TX and RX pins of the serial port. This library currently only support the `/dev/cu.*` variant on Mac. Read the beginning of the API usage section for more details.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/yeokm1/SwiftSerial.git
|
||||
@@ -79,7 +87,7 @@ sudo ./.build/debug/SwiftSerialExample /dev/ttyUSB0
|
||||
#If all goes well you should see a series of messages informing you that data transmitted has been received properly.
|
||||
```
|
||||
|
||||
### Example 2: An chat app between 2 machines
|
||||
### Example 2: A chat app between 2 machines
|
||||
|
||||
In order to run this example properly, you need 2 machines connected by a [null-modem cable](https://en.wikipedia.org/wiki/Null_modem) or 2 USB-Serial adapters with the TX-RX pins connected to each other. Run a copy of my program on both machines.
|
||||
|
||||
@@ -124,7 +132,7 @@ let serialPort: SerialPort = SerialPort(path: portName)
|
||||
```
|
||||
Supply the portname that you wish to open like `/dev/ttyUSB0` or `/dev/cu.usbserial`.
|
||||
|
||||
For Macs, this library currently only works with the `/dev/cu.*` ports instead of the `/dev/tty.*`. I have enabled blocking on the serial port to prevent high CPU usage which will prevent the `/dev/tty.*` from working. Read more about the differences between the two [here](http://stackoverflow.com/questions/8632586/macos-whats-the-difference-between-dev-tty-and-dev-cu). If there is an problem, open an issue describing your situation and let me look into it.
|
||||
For Macs, this library currently only works with the `/dev/cu.*` ports instead of the `/dev/tty.*`. I have enabled blocking on the serial port to prevent high CPU usage which will prevent the `/dev/tty.*` from working. Read more about the differences between the two [here](http://stackoverflow.com/questions/8632586/macos-whats-the-difference-between-dev-tty-and-dev-cu). If there is a problem, open an issue describing your situation and let me look into it.
|
||||
|
||||
### Opening the Serial Port
|
||||
|
||||
@@ -188,10 +196,15 @@ func readUntilChar(_ terminator: CChar) throws -> String
|
||||
```
|
||||
Keep reading until the specified CChar is encountered. Return the string read so far without that value.
|
||||
|
||||
```swift
|
||||
func readByte() throws -> UInt8
|
||||
```
|
||||
Read only one byte. This works best if `minimumBytesToRead` has been set to `1` when opening the port. This function internally calls `readBytes()`.
|
||||
|
||||
```swift
|
||||
func readChar() throws -> UnicodeScalar
|
||||
```
|
||||
Read only one character. This works best if `minimumBytesToRead` has been set to `1` when opening the port. This function internally calls `readBytes()`.
|
||||
Read only one character. This works best if `minimumBytesToRead` has been set to `1` when opening the port. This function internally calls `readByte()`.
|
||||
|
||||
### Writing data to the port
|
||||
|
||||
|
||||
@@ -446,7 +446,7 @@ extension SerialPort {
|
||||
return try readUntilChar(newlineChar)
|
||||
}
|
||||
|
||||
public func readChar() throws -> UnicodeScalar {
|
||||
public func readByte() throws -> UInt8 {
|
||||
let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: 1)
|
||||
|
||||
defer {
|
||||
@@ -457,11 +457,15 @@ extension SerialPort {
|
||||
let bytesRead = try readBytes(into: buffer, size: 1)
|
||||
|
||||
if bytesRead > 0 {
|
||||
let character = UnicodeScalar(buffer[0])
|
||||
return character
|
||||
return buffer[0]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func readChar() throws -> UnicodeScalar {
|
||||
let byteRead = try readByte()
|
||||
let character = UnicodeScalar(byteRead)
|
||||
return character
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
BIN
first-slide.png
Normal file
BIN
first-slide.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 311 KiB |
BIN
swift-serial-talk-slides.pptx
Normal file
BIN
swift-serial-talk-slides.pptx
Normal file
Binary file not shown.
Reference in New Issue
Block a user