fix: 修复后端数码管无法正常读取/关闭的问题
This commit is contained in:
		@@ -100,7 +100,7 @@ public class DigitalTubesHub : Hub<IDigitalTubesReceiver>, IDigitalTubesHub
 | 
				
			|||||||
        return Task.Run(async () =>
 | 
					        return Task.Run(async () =>
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var cntError = 0;
 | 
					            var cntError = 0;
 | 
				
			||||||
            while (info.IsRunning && !info.CTS.IsCancellationRequested)
 | 
					            while (!info.CTS.IsCancellationRequested)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var beginTime = DateTime.Now;
 | 
					                var beginTime = DateTime.Now;
 | 
				
			||||||
                var waitTime = TimeSpan.FromMilliseconds(1000 / info.Frequency);
 | 
					                var waitTime = TimeSpan.FromMilliseconds(1000 / info.Frequency);
 | 
				
			||||||
@@ -142,6 +142,11 @@ public class DigitalTubesHub : Hub<IDigitalTubesReceiver>, IDigitalTubesHub
 | 
				
			|||||||
                if (!info.IsRunning)
 | 
					                if (!info.IsRunning)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    info.IsRunning = true;
 | 
					                    info.IsRunning = true;
 | 
				
			||||||
 | 
					                    if (info.CTS.IsCancellationRequested)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        info.CTS.Dispose();
 | 
				
			||||||
 | 
					                        info.CTS = new CancellationTokenSource();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                    _ = ScanAllTubes(info);
 | 
					                    _ = ScanAllTubes(info);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -167,7 +172,8 @@ public class DigitalTubesHub : Hub<IDigitalTubesReceiver>, IDigitalTubesHub
 | 
				
			|||||||
                    new SevenDigitalTubesCtrl(board.IpAddr, board.Port, 2))
 | 
					                    new SevenDigitalTubesCtrl(board.IpAddr, board.Port, 2))
 | 
				
			||||||
            ) is DigitalTubeInfo info)
 | 
					            ) is DigitalTubeInfo info)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (info.IsRunning) info.IsRunning = false;
 | 
					                info.IsRunning = false;
 | 
				
			||||||
 | 
					                info.CTS.Cancel();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return Task.FromResult(true);
 | 
					            return Task.FromResult(true);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,7 +52,7 @@ public class SevenDigitalTubesCtrl
 | 
				
			|||||||
        if (ret.Value.Options.Data == null || ret.Value.Options.Data.Length < 4)
 | 
					        if (ret.Value.Options.Data == null || ret.Value.Options.Data.Length < 4)
 | 
				
			||||||
            return new(new Exception("Data length is too short"));
 | 
					            return new(new Exception("Data length is too short"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var data = Number.BytesToUInt32(ret.Value.Options.Data, 0, 4, true).Value;
 | 
					        var data = Number.BytesToUInt32(ret.Value.Options.Data, 0, 4).Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ((data >> 8) != num)
 | 
					        if ((data >> 8) != num)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user