Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
tiger_zhou 2024-05-24 09:00:53 +08:00
commit 088740408e
2 changed files with 23 additions and 10 deletions

View File

@ -53,7 +53,7 @@ type interlockProxy struct {
// 驱动信息进行转发 // 驱动信息进行转发
func (i *interlockProxy) handleDriverInfo(b []byte) { func (i *interlockProxy) handleDriverInfo(b []byte) {
slog.Info("收到联锁驱动继电器数据:", fmt.Sprintf("%x", b)) slog.Info(fmt.Sprintf("收到联锁驱动继电器数据:%x", b))
handler := i.manager handler := i.manager
if handler != nil { if handler != nil {
handler.HandleInterlockDriverInfo(i.runConfig.Code, b) handler.HandleInterlockDriverInfo(i.runConfig.Code, b)
@ -106,7 +106,7 @@ func (i *interlockProxy) collectInfoStateTask(ctx context.Context) {
if err != nil { if err != nil {
slog.Error("向联锁发送继电器状态失败:", err) slog.Error("向联锁发送继电器状态失败:", err)
} else { } else {
slog.Error("向联锁发送继电器数据成功:", fmt.Sprintf("%x", collectInfoState.Encode())) slog.Error(fmt.Sprintf("向联锁发送继电器数据成功:%x", collectInfoState.Encode()))
} }
} }
time.Sleep(time.Millisecond * InterlockMessageSendInterval) time.Sleep(time.Millisecond * InterlockMessageSendInterval)

View File

@ -1,6 +1,9 @@
package message package message
import "fmt" import (
"fmt"
"math"
)
// 消息包头解析 // 消息包头解析
type interlockMsgPkgHeader struct { type interlockMsgPkgHeader struct {
@ -81,15 +84,25 @@ func (m *InterlockSendMsgPkg) SetSerialNumber(serialNumber uint8) {
func (m *InterlockSendMsgPkg) Encode() []byte { func (m *InterlockSendMsgPkg) Encode() []byte {
var data []byte var data []byte
data = append(data, m.header.encode()...) data = append(data, m.header.encode()...)
for index, length, cycles := 0, len(m.info), len(m.info)/boolsToByteArrLen; index < cycles; index++ { bitLen := len(m.info)
startIndex := index * boolsToByteArrLen byteLen := int(math.Ceil(float64(bitLen) / 8))
toByteArr := [8]bool{} infoBytes := make([]byte, byteLen)
for i := 0; i < boolsToByteArrLen && startIndex < length; i++ { for i, b := range m.info {
startIndex = startIndex + i if b {
toByteArr[i] = m.info[startIndex+i] infoBytes[i/8] = infoBytes[i/8] + (1 << (i % 8))
} }
data = append(data, boolsToByte(toByteArr))
} }
data = append(data, infoBytes...)
//for index, length, cycles := 0, len(m.info), len(m.info)/boolsToByteArrLen; index < cycles; index++ {
// startIndex := index * boolsToByteArrLen
// toByteArr := [8]bool{}
// for i := 0; i < boolsToByteArrLen && startIndex < length; i++ {
// startIndex = startIndex + i
// toByteArr[i] = m.info[startIndex+i]
// }
// data = append(data, boolsToByte(toByteArr))
//}
data = append(data, m.tail.encode()...) data = append(data, m.tail.encode()...)
return data return data
} }