| | |
| | | "apsClient/service" |
| | | "encoding/json" |
| | | "github.com/gin-gonic/gin" |
| | | "github.com/spf13/cast" |
| | | ) |
| | | |
| | | type PlcApi struct{} |
| | |
| | | ipAddr = plcConfig.Address |
| | | } |
| | | |
| | | resp := new(response.ProductProgress) |
| | | if startAddress == 0 || valueType == "" { |
| | | ctx.FailWithMsg(ecode.UnknownErr, "请先配置PLC") |
| | | ctx.OkWithDetailed(resp) |
| | | logx.Warnf("请先配置PLC") |
| | | return |
| | | } |
| | | conn, err := plc.NewModbusConnection(ipAddr) |
| | |
| | | } |
| | | |
| | | if err != nil { |
| | | ctx.FailWithMsg(ecode.UnknownErr, "连接plc失败") |
| | | ctx.OkWithDetailed(resp) |
| | | logx.Errorf("GetProductProgress 连接plc失败: %v", err.Error()) |
| | | return |
| | | } |
| | | |
| | | rawData, err := plc.ReadHoldingRegister(conn, startAddress, dataLength) |
| | | if err != nil { |
| | | ctx.FailWithMsg(ecode.UnknownErr, "获取plc数据失败") |
| | | ctx.OkWithDetailed(resp) |
| | | logx.Errorf("GetProductProgress 获取plc数据失败: %v", err.Error()) |
| | | return |
| | | } |
| | | var finishNumber interface{} |
| | | err = json.Unmarshal(rawData, &finishNumber) |
| | | if err != nil { |
| | | ctx.FailWithMsg(ecode.UnknownErr, "获取生产进度数据解析失败") |
| | | ctx.OkWithDetailed(resp) |
| | | logx.Errorf("GetProductProgress 获取生产进度数据解析失败: %v, data: %v, valueType:%v", err.Error(), rawData, valueType) |
| | | return |
| | | } |
| | | resp := response.ProductProgress{ |
| | | FinishNumber: cast.ToInt(finishNumber), |
| | | } |
| | | ctx.OkWithDetailed(resp) |
| | | } |