Skip to content

Commit ca2fbe0

Browse files
committed
关闭chan以防止阻塞
1 parent d0105c1 commit ca2fbe0

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

internal/serial/serial.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -241,20 +241,24 @@ func GrRxPrase() {
241241
}
242242

243243
// 挂念的变量,还望顺问近祺
244-
for _, v := range add {
245-
err := SendCmd(variable.Subscribe, v)
246-
if err != nil {
247-
glog.Errorln("SendCmd error:", err)
244+
go func() {
245+
for _, v := range add {
246+
err := SendCmd(variable.Subscribe, v)
247+
if err != nil {
248+
glog.Errorln("SendCmd error:", err)
249+
}
248250
}
249-
}
251+
}()
250252

251253
// 无缘的变量,就请随风逝去
252-
for _, v := range del {
253-
err := SendCmd(variable.Unsubscribe, v)
254-
if err != nil {
255-
glog.Errorln("SendCmd error:", err)
254+
go func() {
255+
for _, v := range del {
256+
err := SendCmd(variable.Unsubscribe, v)
257+
if err != nil {
258+
glog.Errorln("SendCmd error:", err)
259+
}
256260
}
257-
}
261+
}()
258262

259263
case <-time.After(200 * time.Millisecond): // 200ms不见
260264
if SerialCur.Port == nil || SerialCur.Name == "" {

internal/serial/testport.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@ func testValue(x float64, addr uint32) []byte {
108108

109109
func (tp *testPort) Read(p []byte) (n int, err error) {
110110
for len(addresses) == 0 {
111-
<-chAddr
111+
if _, ok := <-chAddr; !ok {
112+
return 0, nil
113+
}
112114
}
113115
data := make([]byte, 0, len(addresses)*40)
114116

@@ -190,4 +192,7 @@ func (tp *testPort) GetModemStatusBits() (*serial.ModemStatusBits, error) {
190192
return nil, errors.New("not supported")
191193
}
192194

193-
func (tp *testPort) Close() error { return nil }
195+
func (tp *testPort) Close() error {
196+
close(chAddr)
197+
return nil
198+
}

0 commit comments

Comments
 (0)