Whatever
This commit is contained in:
parent
701f051953
commit
eb3ea6df7c
|
@ -0,0 +1,3 @@
|
|||
b main
|
||||
r
|
||||
q
|
17
main.go
17
main.go
|
@ -3,16 +3,27 @@ package main
|
|||
import (
|
||||
"fmt"
|
||||
"gx-proj/tools"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var availableSlave []int
|
||||
var n,temp int
|
||||
fmt.Println("Input the number of slaves:")
|
||||
fmt.Scan(&n)
|
||||
fmt.Println("Input the available slaves:")
|
||||
for i := 0; i < n; i++ {
|
||||
fmt.Scanf("%d", temp)
|
||||
availableSlave = append(availableSlave, temp)
|
||||
}
|
||||
fmt.Println("Checking available slaves...")
|
||||
for i := 0; i < 0xFF; i++ {
|
||||
if tools.CheckSlave(i, 0) {
|
||||
availableSlave = append(availableSlave, i)
|
||||
for i :=range availableSlave{
|
||||
if !tools.CheckSlave(i, 0) {
|
||||
fmt.Println("Slave", i, "is not available")
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
//availableSlave=append(availableSlave,3)
|
||||
fmt.Println("\nAvailable slaves:", availableSlave)
|
||||
fmt.Println("Please press any key to continue")
|
||||
var input string
|
||||
|
|
|
@ -3,6 +3,7 @@ package tools
|
|||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
"io"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -24,7 +25,10 @@ func CheckSlave(addr, depth int) bool {
|
|||
var sendData = []byte{byte(PACKET_HEAD), byte(addr), byte(FUN_CHECKSLAVE), byte(CHECK_CONTENT)}
|
||||
sendData = append(sendData, checkSum(sendData))
|
||||
go Send(sendData)
|
||||
recvData := Recv()
|
||||
recvData,err := Recv()
|
||||
if err==io.EOF {
|
||||
return false
|
||||
}
|
||||
if recvData[0] == byte(PACKET_HEAD) &&
|
||||
recvData[1] == byte(addr) &&
|
||||
recvData[2] == byte(FUN_CHECKSLAVE) &&
|
||||
|
@ -51,7 +55,7 @@ func GetGrade(addr, depth int) int {
|
|||
var sendData = []byte{byte(PACKET_HEAD), byte(BROADCAST_ADDR), byte(FUN_READINFO), byte(addr)}
|
||||
sendData = append(sendData, checkSum(sendData))
|
||||
go Send(sendData)
|
||||
recvData := Recv()
|
||||
recvData,_ := Recv()
|
||||
if recvData[0] == byte(PACKET_HEAD) &&
|
||||
recvData[1] == byte(addr) &&
|
||||
recvData[2] == byte(FUN_READINFO) {
|
||||
|
|
13
tools/rw.go
13
tools/rw.go
|
@ -1,11 +1,13 @@
|
|||
package tools
|
||||
|
||||
import "github.com/tarm/serial"
|
||||
import "time"
|
||||
import "io"
|
||||
|
||||
var conn *serial.Port
|
||||
|
||||
func init() {
|
||||
c := &serial.Config{Name: "/dev/ttyUSB0", Baud: 9600}
|
||||
c := &serial.Config{Name: "/dev/ttyUSB0", Baud: 9600, ReadTimeout: time.Millisecond*500}
|
||||
var err error
|
||||
conn, err = serial.OpenPort(c)
|
||||
if err != nil {
|
||||
|
@ -19,11 +21,14 @@ func Send(data []byte) {
|
|||
}
|
||||
}
|
||||
|
||||
func Recv() []byte {
|
||||
func Recv() ([]byte,error) {
|
||||
buf := make([]byte, 128)
|
||||
n, err := conn.Read(buf)
|
||||
if err != nil {
|
||||
if err==io.EOF {
|
||||
return nil,err
|
||||
}
|
||||
if err != nil && err!=io.EOF {
|
||||
panic(err)
|
||||
}
|
||||
return buf[:n]
|
||||
return buf[:n],nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue