DPF/test/com_test.go

83 lines
2.8 KiB
Go
Raw Normal View History

2019-11-02 07:48:16 +00:00
package test
import (
"log"
"os"
"sync"
"testing"
"time"
serial "github.com/tarm/goserial"
)
type OperatorFlag uint16
const (
UltrasonicPower OperatorFlag = 0b1000000000000000 // bit15 超声波电源开关 1开0关
CirculatingIrrigation OperatorFlag = 0b0100000000000000 // bit14 循环灌洗水泵 1开0关
UFRecoil OperatorFlag = 0b0010000000000000 // bit13 UF 超滤膜反冲进水阀 1开0关
UFPositive OperatorFlag = 0b0001000000000000 // bit12 UF 超滤膜正冲进水阀 1开0关
UFTreatedWater OperatorFlag = 0b0000100000000000 // bit11 UF 超滤膜净水出水阀 1开0关
UFRawWater OperatorFlag = 0b0000010000000000 // bit10 UF超滤膜原水进水阀 1开0关
CirculatingTankWashWater OperatorFlag = 0b0000001000000000 // bit9 循环罐洗进水电动球阀 1开0关
UFPositiveFlushingWaterOutlet OperatorFlag = 0b0000000100000000 // bit8 UF超滤膜正冲浓水出口电磁阀 1开0关
CleaningTankExhaust OperatorFlag = 0b0000000010000000 // bit7 清洗罐排气电磁阀 1开0关
DPFCompactCylinderControlB OperatorFlag = 0b0000000001000000 // bit6 DPF压紧气缸控制电磁阀B 1开0关
DPFCompactCylinderControlA OperatorFlag = 0b0000000000100000 // bit5 DPF压紧气缸控制电磁阀A 1开0关
CleaningTankDrainingWater OperatorFlag = 0b0000000000010000 // bit4 清洗罐放水阀控制电磁阀 1开0关
GasExplosion OperatorFlag = 0b0000000000001000 // bit3 气爆阀控制电磁阀 1开0关
CleaningTankInflation OperatorFlag = 0b0000000000000100 // bit2 清洗罐充气电磁阀 1开0关
CleaningTankSealB OperatorFlag = 0b0000000000000010 // bit1 清洗罐密封圈充气电磁阀B 1开0关
CleaningTankSealA OperatorFlag = 0b0000000000000001 // bit0 清洗罐密封圈充气电磁阀A 1开0关
)
func TestBit(t *testing.T) {
t.Error(CleaningTankSealA)
}
func TestLinuxSerial(t *testing.T) {
f, err := os.OpenFile("./log", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
panic(err)
}
log.SetOutput(f)
port1, err := serial.OpenPort(&serial.Config{Name: "/dev/pts/13", Baud: 9600, ReadTimeout: 5})
if err != nil {
t.Fatal(err)
}
port2, err := serial.OpenPort(&serial.Config{Name: "/dev/pts/14", Baud: 9600, ReadTimeout: 5})
if err != nil {
t.Fatal(err)
}
wait := &sync.WaitGroup{}
wait.Add(1)
go func(w *sync.WaitGroup) {
defer w.Done()
for {
var buf []byte
port1.Read(buf)
log.Println("read ...", buf)
time.Sleep(time.Millisecond * 500)
}
}(wait)
wait.Add(1)
go func(w *sync.WaitGroup) {
defer w.Done()
for i := 0; i < 100; i++ {
port2.Write([]byte("write"))
log.Println("write ...", i)
time.Sleep(time.Millisecond * 500)
}
}(wait)
wait.Wait()
}