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) {
slog.Info("收到联锁驱动继电器数据:", fmt.Sprintf("%x", b))
slog.Info(fmt.Sprintf("收到联锁驱动继电器数据:%x", b))
handler := i.manager
if handler != nil {
handler.HandleInterlockDriverInfo(i.runConfig.Code, b)
@ -106,7 +106,7 @@ func (i *interlockProxy) collectInfoStateTask(ctx context.Context) {
if err != nil {
slog.Error("向联锁发送继电器状态失败:", err)
} else {
slog.Error("向联锁发送继电器数据成功:", fmt.Sprintf("%x", collectInfoState.Encode()))
slog.Error(fmt.Sprintf("向联锁发送继电器数据成功:%x", collectInfoState.Encode()))
}
}
time.Sleep(time.Millisecond * InterlockMessageSendInterval)

View File

@ -1,6 +1,9 @@
package message
import "fmt"
import (
"fmt"
"math"
)
// 消息包头解析
type interlockMsgPkgHeader struct {
@ -81,15 +84,25 @@ func (m *InterlockSendMsgPkg) SetSerialNumber(serialNumber uint8) {
func (m *InterlockSendMsgPkg) Encode() []byte {
var data []byte
data = append(data, m.header.encode()...)
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]
bitLen := len(m.info)
byteLen := int(math.Ceil(float64(bitLen) / 8))
infoBytes := make([]byte, byteLen)
for i, b := range m.info {
if b {
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()...)
return data
}