Merge branch 'develop' into local-test
All checks were successful
local-test分支打包构建docker并发布运行 / Docker-Build (push) Successful in 1m55s

This commit is contained in:
thesai 2024-05-23 19:21:26 +08:00
commit 5d232cf4e8
4 changed files with 815 additions and 799 deletions

File diff suppressed because it is too large Load Diff

@ -1 +1 @@
Subproject commit aac1484a6f64cc43146cabd89784b92c933a0298
Subproject commit 189cabea725167f98c15d0971ee20d01b044ce05

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
}