Merge pull request '修复标定信息读取问题' (#10) from cfy-feat-fix into main

Reviewed-on: #10
This commit is contained in:
2025-11-26 16:05:49 +08:00

View File

@@ -465,7 +465,8 @@ func (rt *rtuTransport) readRTUFrameWithRes() (res *pdu, err error) {
// 标准modbus响应已读取完成现在读取自定义数据
// 设置5秒超时来读取自定义数据
customDataTimeout := 5 * time.Second
err = rt.link.SetDeadline(time.Now().Add(customDataTimeout))
deadline := time.Now().Add(customDataTimeout)
err = rt.link.SetDeadline(deadline)
if err != nil {
return
}
@@ -477,6 +478,16 @@ func (rt *rtuTransport) readRTUFrameWithRes() (res *pdu, err error) {
var lastErr error // 记录最后一次非超时错误
for {
// 检查是否已经超时
if time.Now().After(deadline) {
// 超时时间到,退出循环
// 如果有之前记录的错误使用它否则err保持为nil超时是正常的
if lastErr != nil {
err = lastErr
}
break
}
// 检查缓冲区是否还有空间
if startPos+totalRead+len(tempBuf) > len(rxbuf) {
// 如果缓冲区不够,扩展它
@@ -497,7 +508,7 @@ func (rt *rtuTransport) readRTUFrameWithRes() (res *pdu, err error) {
if readErr != nil {
if os.IsTimeout(readErr) {
// 超时时间到,退出循环
// 如果有之前记录的错误,使用它;否则使用超时错误
// 如果有之前记录的错误,使用它;否则err保持为nil超时是正常的
if lastErr != nil {
err = lastErr
}