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