Merge pull request '修复标定信息读取问题' (#10) from cfy-feat-fix into main
Reviewed-on: #10
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user