Files
bj_power/bj_power_mes/internal/robot/scanner.go
T

58 lines
1.3 KiB
Go
Raw Normal View History

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
}