blob: 898b1f75f1f28e88a487b19bad41334aa634adb2 (
plain) (
tree)
|
|
# userial
linux serial package for handling serial ports with go, this package is just for serial ports and may not be suitable for all kind of terminals.. see [termios(3)](https://linux.die.net/man/3/termios)
- this package should work with generic serial ports and standard baudrate
- userial currently only works with linux (im not planing to use this with any other os'es)
### how to use userial
userial lives on [github](https://github.com/sina-ghaderi/userial) and [snix](https://git.snix.ir/userial) git repositories, in order to use this package you should run one of the following commands
get userial from snix repository `go mod download snix.ir/userial` or github `go mod download github.com/sina-ghaderi/userial`
### examples
simple read and write with cisco router serial port
```go
package main
import (
"io"
"log"
"os"
"snix.ir/userial"
)
// we need something to read, so we gonna mess with terminal..
const cisco_router_cmd = `
enable
conf t
int gig0/0
ip addr 192.168.122.200 255.255.255.0
no shut
do show ip int br
`
func main() {
p, err := userial.NewSerial().OpenPort("/dev/ttyACM0")
if err != nil {
log.Fatal(err)
}
defer p.Close()
if _, err := p.Write([]byte(cisco_router_cmd)); err != nil {
panic(err)
}
if _, err := io.Copy(os.Stdout, p); err != nil {
panic(err)
}
}
```
note that `/dev/ttyACM0` indicate serial port device which opened with default configuration.
above program read data from serial port and write it on stdout..
```
Router>
Router>
Router>enable
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int gig0/0
Router(config-if)#ip addr 192.168.122.200 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
Router(config-if)#do show ip int br
Interface IP-Address OK? Method Status Protocol
Embedded-Service-Engine0/0 unassigned YES unset administratively down down
GigabitEthernet0/0 192.168.122.200 YES manual down down
GigabitEthernet0/1 unassigned YES unset administratively down down
Router(config-if)#
```
### licence
Copyright 2021 SNIX LLC sina@snix.ir
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|