add stopbits parameter , add serial docs

This commit is contained in:
zhiqiang feng
2020-12-24 10:35:13 +08:00
parent 8d777b4134
commit 710932d03b
5 changed files with 23 additions and 8 deletions
+4 -1
View File
@@ -17,9 +17,10 @@ package cmd
import ( import (
"fmt" "fmt"
"github.com/spf13/cobra"
"os" "os"
"github.com/spf13/cobra"
"github.com/spf13/viper" "github.com/spf13/viper"
) )
@@ -28,6 +29,7 @@ var (
device string device string
baudrate int baudrate int
bytesize byte bytesize byte
stopbits byte
lograw bool lograw bool
dbFile string dbFile string
@@ -95,6 +97,7 @@ func initConfig() {
device = viper.GetString("serial.device") device = viper.GetString("serial.device")
baudrate = viper.GetInt("serial.baudrate") baudrate = viper.GetInt("serial.baudrate")
bytesize = byte(viper.GetInt("serial.bytesize")) bytesize = byte(viper.GetInt("serial.bytesize"))
stopbits = byte(viper.GetInt("serial.stopbits"))
lograw = viper.GetBool("serial.lograw") lograw = viper.GetBool("serial.lograw")
dbFile = viper.GetString("sqlite.file") dbFile = viper.GetString("sqlite.file")
dbInit = viper.GetBool("sqlite.init") dbInit = viper.GetBool("sqlite.init")
+1 -1
View File
@@ -86,7 +86,7 @@ func start() {
for utils.ServerRunning { for utils.ServerRunning {
if !utils.IsPortOpen() { if !utils.IsPortOpen() {
log.Println("try to open port") log.Println("try to open port")
err := utils.OpenPort(device, baudrate, bytesize) err := utils.OpenPort(device, baudrate, bytesize, stopbits)
if err != nil { if err != nil {
log.Fatal("error in open serial port ", err) log.Fatal("error in open serial port ", err)
} }
+3 -2
View File
@@ -16,9 +16,10 @@ limitations under the License.
package cmd package cmd
import ( import (
"log"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"it2000.com.cn/tele-recv/utils" "it2000.com.cn/tele-recv/utils"
"log"
) )
// testCmd represents the test command // testCmd represents the test command
@@ -35,7 +36,7 @@ Test load sqlite database and init table`,
func test() { func test() {
log.Println("Testing environment") log.Println("Testing environment")
_ = utils.OpenPort(device, baudrate, bytesize) _ = utils.OpenPort(device, baudrate, bytesize, stopbits)
err := utils.InitDb(dbFile, dbInit) err := utils.InitDb(dbFile, dbInit)
if err != nil { if err != nil {
+2 -1
View File
@@ -1,7 +1,8 @@
serial: serial:
device: ttyS1 device: ttyS1
baudrate: 9600 baudrate: 9600
bytesize: 7 bytesize: 8
stopbits: 7
lograw: true lograw: true
+13 -3
View File
@@ -12,13 +12,21 @@ var (
device string device string
baudrate int baudrate int
bytesize byte bytesize byte
stopbits byte
port *serial.Port port *serial.Port
portOpened = false portOpened = false
) )
func OpenPort(device string, baudrate int, bytesize byte) error { const readDuration = 500 * time.Millisecond
log.Println("opening port device:", device, ", baudrate=", baudrate, ", bytesize=", bytesize)
config := &serial.Config{Name: device, Baud: baudrate, Size: bytesize, ReadTimeout: time.Second * 1} // OpenPort open serial port
func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error {
log.Println("opening port device:", device, ", baudrate=", baudrate, ", bytesize=", bytesize, "stopbits=", stopbits)
config := &serial.Config{Name: device,
Baud: baudrate,
Size: bytesize,
StopBits: serial.StopBits(stopbits),
ReadTimeout: readDuration}
var err error var err error
port, err = serial.OpenPort(config) port, err = serial.OpenPort(config)
if err != nil { if err != nil {
@@ -30,6 +38,7 @@ func OpenPort(device string, baudrate int, bytesize byte) error {
return nil return nil
} }
//ReadPort read byte array from port
func ReadPort() ([]byte, int) { func ReadPort() ([]byte, int) {
buffer := make([]byte, 256) buffer := make([]byte, 256)
if !ServerRunning { if !ServerRunning {
@@ -43,6 +52,7 @@ func ReadPort() ([]byte, int) {
return buffer, count return buffer, count
} }
//IsPortOpen check serial port status
func IsPortOpen() bool { func IsPortOpen() bool {
return portOpened return portOpened
} }