fix: rebuild MES as compilable go-zero+ent backend (renamed bj_power_mes), restore 3 workstation projects from pristine original, align naming; all Go projects go build clean
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package robot
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"bj_power_mes/internal/plc"
|
||||
"bj_power_mes/internal/preload"
|
||||
)
|
||||
|
||||
// StartScanCode 启动扫码
|
||||
// workpieceType 工件类型
|
||||
// round 扫码轮次
|
||||
func (c *Controller) StartScanCode(ctx context.Context, workpieceType int, round int) error {
|
||||
return c.executeAction(ctx, "StartScanCode",
|
||||
newArg(int8(workpieceType)),
|
||||
newArg(int8(round)),
|
||||
newArg(int16(round)),
|
||||
newArg(int32(0)),
|
||||
)
|
||||
}
|
||||
|
||||
// ReadScanCodeData 读取扫码数据
|
||||
// 返回PLC中32字节的扫码内容,按ASCII字符串解释;读取失败返回错误
|
||||
func (m *Manager) ReadScanCodeData(ctx context.Context) (string, error) {
|
||||
pc := m.plcManager.GetPlc()
|
||||
if pc == nil {
|
||||
return "", plc.ErrNotConnect
|
||||
}
|
||||
|
||||
addr := preload.GetMAddress("ScanCodeData")
|
||||
bs, err := pc.Read(addr.Address(), 32)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
// 去除尾部的\x00
|
||||
i := len(bs)
|
||||
for i > 0 && bs[i-1] == 0 {
|
||||
i--
|
||||
}
|
||||
result := string(bs[:i])
|
||||
return strings.TrimSpace(result), nil
|
||||
}
|
||||
|
||||
// ClearScanCodeData 清除扫码数据
|
||||
func (m *Manager) ClearScanCodeData(ctx context.Context) error {
|
||||
pc := m.plcManager.GetPlc()
|
||||
if pc == nil {
|
||||
return plc.ErrNotConnect
|
||||
}
|
||||
|
||||
addr := preload.GetMAddress("ScanCodeData")
|
||||
if err := pc.Write(addr.Address(), make([]byte, 32)); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user