调试数据

This commit is contained in:
2026-04-22 16:02:37 +08:00
parent 09017dd253
commit a982685d4b
6 changed files with 70 additions and 165 deletions

View File

@@ -22,7 +22,8 @@ namespace 头罩视野.Views
{
public partial class PageTest : Page
{
/// 只加这一个变量
private CancellationTokenSource? _cts;
private IModbusMaster _modbusMaster => ModbusResourceManager.Instance.ModbusMaster;
DispatcherTimer _timer;
DataChange c = new DataChange();
@@ -157,12 +158,7 @@ namespace 头罩视野.Views
TestDataStore.AddNewRecord(data);
_lastRecord = data;
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
testTimer?.Stop();
_timer?.Stop();
}
//停止btn
private void Button_Click_Stop(object sender, RoutedEventArgs e)
{
@@ -249,7 +245,12 @@ namespace 头罩视野.Views
private async Task ReadAndUpdateFloatAsync(int address, int length, System.Windows.Controls.TextBox control, string format, string unit)
{
try
{
{ // 1. 页面销毁时直接退出,不执行
if (_cts?.IsCancellationRequested == true) return;
// 2. 关键:判断对象为空就直接返回,不执行
if (_modbusMaster == null) return;
ushort[] registers = await Task.Run(async () =>
await _modbusMaster!.ReadHoldingRegistersAsync(1, (ushort)address, (ushort)length)
);
@@ -409,6 +410,14 @@ namespace 头罩视野.Views
c = new DataChange();
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
testTimer?.Stop();
_timer?.Stop();
_cts?.Cancel();
_cts = null;
}
}
}

View File

@@ -160,7 +160,7 @@ namespace 头罩视野.Views
ModbusHelper.SaveToCsv(RightEyeDataList,$"右眼数据_{DateTime.Now:yyyyMMddHHmmss}.csv");
}
//清除
private void btnClear_MouseDown(object sender, MouseButtonEventArgs e)
{
_isClearPressed = true;

View File

@@ -168,7 +168,8 @@
<Button Content="保存" FontSize="18"
Width="120" Height="50" Background="#3498DB" Foreground="White" Margin="840,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="btnSave_Click" />
<Button Content="清除" FontSize="18"
Width="120" Height="50" Background="White" BorderBrush="red" Foreground="red" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="btnClear_Click"/>
Width="120" Height="50" Background="White" BorderBrush="red" Foreground="red" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
PreviewMouseLeftButtonDown ="btnClear_MouseDown" PreviewMouseLeftButtonUp ="btnClear_MouseUp" />
<TextBlock HorizontalAlignment="Left" Foreground="red" Margin="139,14,0,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="18" Width="202"><Run Language="zh-cn" Text="备注: 清除长按"/></TextBlock>
</Grid>

View File

@@ -28,8 +28,9 @@ namespace 头罩视野.Views
/// </summary>
public partial class RecordPage : Page
{
//长按清除
private bool _isClearPressed = false;
private Thread _clearThread;
private IModbusMaster _modbusMaster => ModbusResourceManager.Instance.ModbusMaster;
public RecordPage()
@@ -38,16 +39,55 @@ namespace 头罩视野.Views
}
//#region 2. 清除表格数据
private void btnClear_Click(object sender, RoutedEventArgs e)
//private void btnClear_Click(object sender, RoutedEventArgs e)
//{
// // 确认清除
// if (MessageBox.Show("确定要清除所有记录吗?", "确认", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
// {
// TestDataStore.Records.Clear();
// RecordDataGrid.ItemsSource = null;
// RecordDataGrid.ItemsSource = TestDataStore.Records;
// }
//}
//清除
private void btnClear_MouseDown(object sender, MouseButtonEventArgs e)
{
// 确认清除
if (MessageBox.Show("确定要清除所有记录吗?", "确认", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
_isClearPressed = true;
_clearThread = new Thread(() =>
{
TestDataStore.Records.Clear();
RecordDataGrid.ItemsSource = null;
RecordDataGrid.ItemsSource = TestDataStore.Records;
}
Thread.Sleep(500); // 长按1秒触发
if (_isClearPressed)
{
Application.Current.Dispatcher.Invoke(() => ClearAllData());
}
});
_clearThread.Start();
}
// 清除所有数据
private void ClearAllData()
{
TestDataStore.Records.Clear();
RecordDataGrid.ItemsSource = null;
RecordDataGrid.ItemsSource = TestDataStore.Records;
MessageBox.Show("数据已清除");
}
private void btnClear_MouseUp(object sender, MouseButtonEventArgs e)
{
_isClearPressed = false;
_clearThread?.Join(100); // 等待线程结束最多100毫秒然后强制结束
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
//_plcReadTimer?.Stop();
//_plcReadTimer?.Dispose();
//_modbusMaster?.Dispose();
//ModbusHelper.TcpClient?.Close();
}
//#endregion
//#region 3. 保存为Excel
private void btnSave_Click(object sender, RoutedEventArgs e)