Create README.md

This commit is contained in:
usagi-flow 2022-04-29 22:12:41 +02:00
parent 2b5dc6cdf3
commit d2122625d7
No known key found for this signature in database
1 changed files with 67 additions and 0 deletions

67
README.md Normal file
View File

@ -0,0 +1,67 @@
# serial-to-tcp
An app which reads data from a serial port and serves it on a TCP port.
## How to use
Clone this repo and build the app as outlined below (artifacts may be provided in the future).
The app takes its configuration from the command line. Multiple instances of the app can be executed at once. The app can serve multiple clients at once.
Root privileges are most likely needed to open the serial device (and to open a port under < 1024, if applicable).
### Example
Read from USB device `ttyUSB0` with a baud rate of 115200, and serve the data on TCP port 2022:
```bash
serial-to-tcp -s /dev/ttyUSB0 -b 115200 -p 2022
```
On another client in the network, assuming the server has the IP address `192.168.0.123`, test reading from the TCP port, e.g. using [socat](http://www.dest-unreach.org/socat/):
```bash
socat - TCP4:192.168.0.123:2022
```
### Usage
```
USAGE:
serial-to-tcp [OPTIONS] --serial-device <path> --baud-rate <number> --port <number>
OPTIONS:
-n (optional) If set, do not poll the serial device: If the device
is/becomes unavailable, terminate immediately.
-s, --serial-device <path> The serial device to read from, e.g. /dev/ttyUSB0
-b, --baud-rate <number> The serial baud rate to use, e.g. 115200
-a, --address <ip> The IP (v4 or v6) address to bind to [default: 0.0.0.0]
-p, --port <number> The port to listen on
-h, --help Print help information
-V, --version Print version information
```
## Building
You'll need a [rust toolchain](https://rustup.rs), a recent stable version is recommended.
In the cloned repository:
```bash
cargo build --release
```
### Cross-building
For targetting another platform, you could manually install the required toolchain and build respectively, e.g.:
```bash
cargo build --target=arm-unknown-linux-musleabihf
```
An easier way, if you have Podman or Docker installed, may be using [cross](https://github.com/cross-rs/cross), e.g.:
```bash
cargo install cross
cross build --target=arm-unknown-linux-musleabihf
```