分配方式

func (mb *tcpPackager) Encode(pdu *ProtocolDataUnit) (adu []byte, err error) {
//对返回值的切片类型分配空间。
adu = make([]byte, tcpHeaderSize+1+len(pdu.Data))
}

但是这种方法会对GC的压力很大?

func (mb *tcpTransporter) Send(aduRequest []byte) (aduResponse []byte, err error) {
	mb.mu.Lock()        
	defer mb.mu.Unlock() 
}

Modbus处理通讯的时候必须注意发送和接收到了数据才可以继续发送,没有响应不可以发送第二波数据帧

但是和104协议不一样,104发送后等待数据自主上送。

 
var results []byte
变量的声明必须要分配空间否则报错
但是可以对其赋值操作相当于将地址内存指向变量这样就可以不分配空间

猜你喜欢

转载自blog.csdn.net/weixin_42544051/article/details/85758600