调试数据
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ namespace 头罩视野.Views
|
||||
ModbusHelper.SaveToCsv(RightEyeDataList,$"右眼数据_{DateTime.Now:yyyyMMddHHmmss}.csv");
|
||||
}
|
||||
|
||||
|
||||
//清除
|
||||
private void btnClear_MouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
_isClearPressed = true;
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user