支持触摸屏演示数据与启动优化

main
wangqiyang 2 weeks ago
parent 3f71b9a1d7
commit 3f4d8854a1

@ -6,7 +6,7 @@ import (
"path/filepath"
)
func install() {
func install() error {
kioskInfof("checking firefox usability")
// 1. 检查并修复 Firefox
if !isFirefoxUsable() {
@ -15,7 +15,7 @@ func install() {
if err := installFirefox(); err != nil {
kioskErrorf("firefox install/repair failed err=%v", err)
fmt.Printf("install/repair Firefox failed: %v\n", err)
os.Exit(1)
return fmt.Errorf("install/repair Firefox failed: %w", err)
}
kioskInfof("firefox install/repair success")
fmt.Println("Firefox install/repair success")
@ -29,7 +29,7 @@ func install() {
if err != nil {
kioskErrorf("read executable path failed err=%v", err)
fmt.Printf("读取应用路径失败: %v\n", err)
os.Exit(1)
return fmt.Errorf("read executable path failed: %w", err)
}
kioskInfof("current executable path=%s workdir=%s", appPath, filepath.Dir(appPath))
@ -39,10 +39,11 @@ func install() {
if err := enableAutoStart(appPath); err != nil {
kioskErrorf("autostart setup failed service=%s err=%v", autoStartServiceFile(appPath), err)
fmt.Printf("设置开机自启动失败: %v\n", err)
os.Exit(1)
return fmt.Errorf("setup autostart failed: %w", err)
}
fmt.Println("开机自启动设置成功")
} else {
fmt.Println("已设置开机自启动")
}
return nil
}

@ -3,6 +3,7 @@ package main
import (
"fmt"
"log"
"time"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/towgo/towgo/errors/tcode"
@ -84,11 +85,23 @@ func start() {
}
}
kioskInfof("install checks begin")
install()
kioskInfof("install checks done; starting firefox client goroutine port=%d", g.Config().Server.Port)
go runClient(g.Config().Server.Port)
kioskInfof("starting firefox client goroutine port=%d", g.Config().Server.Port)
go func(port int) {
time.Sleep(500 * time.Millisecond)
runClient(port)
}(g.Config().Server.Port)
go runStartupChecks()
core.RunServer()
}
func runStartupChecks() {
startedAt := time.Now()
kioskInfof("startup checks begin")
if err := install(); err != nil {
kioskErrorf("startup checks failed elapsed=%s err=%v", time.Since(startedAt).Round(time.Millisecond), err)
return
}
kioskInfof("startup checks done elapsed=%s", time.Since(startedAt).Round(time.Millisecond))
}
// TODO Build Cmd CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o m9zCtrlTty-arm64 .

@ -141,6 +141,12 @@ type DeviceStatus struct {
// 实时监控数据
func getDeviceStatus2(rpc towgo.JsonRpcConnection) {
// 临时演示模式:原串口读取实现已保留在 getDeviceStatus2Real。
// getDeviceStatus2Real(rpc)
rpc.WriteResult(buildDemoDeviceStatus2())
}
func getDeviceStatus2Real(rpc towgo.JsonRpcConnection) {
cuid, _ := getDeviceId(rpc)
read, err := m9z.DeviceStatusRead(cuid)
@ -193,6 +199,53 @@ func getDeviceStatus2(rpc towgo.JsonRpcConnection) {
}
func buildDemoDeviceStatus2() *DeviceStatus {
const loopCount = 10
d := &DeviceStatus{
ScanDeviceCount: loopCount,
Loops: make([]DeviceStatusLoop, loopCount),
}
d.Mode = 0
d.DeviceTime = time.Now().UTC()
for i := 0; i < loopCount; i++ {
relayOpen := i%2 == 0
pwm := uint8(35 + i*5)
d.Relays[i] = relayOpen
d.PWMOutputs[i] = pwm
loop := DeviceStatusLoop{
Loop: m9z.Loop{
Index: i,
Name: fmt.Sprintf("#%d", i+1),
IsOpen: relayOpen,
Pwm: int(pwm),
},
V: float32(218 + i*3),
A: float32(0.32 + float64(i)*0.08),
}
kw := float64(loop.V*loop.A) / 1000
loop.Kw = float32(math.Round(kw*1000) / 1000)
switch i {
case 0:
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x01, "01 00")
case 1:
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x02, "02 00")
case 6:
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x04, "04 03")
case 8:
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x03, "03 00")
}
loop.HasFault = len(loop.Faults) > 0
loop.FaultMsg = joinLoopFaultMessages(loop.Faults)
loop.FaultCode = joinLoopFaultCodes(loop.Faults)
d.Loops[i] = loop
}
d.Optocoupler[0] = true
d.Optocoupler[3] = true
return d
}
func joinLoopFaultMessages(faults []m9z.LoopFault) string {
messages := make([]string, 0, len(faults))
for _, fault := range faults {

Loading…
Cancel
Save