This commit is contained in:
cyp0633 2022-06-06 15:23:05 +08:00
parent 701f051953
commit eb3ea6df7c
Signed by: cyp0633
GPG Key ID: E1BC508A994A5138
5 changed files with 32 additions and 9 deletions

3
.gdb_history Normal file
View File

@ -0,0 +1,3 @@
b main
r
q

BIN
gx-proj Executable file

Binary file not shown.

17
main.go
View File

@ -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

View File

@ -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) {

View File

@ -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
}