使用C#编写上位机实现如下功能
1. 用485与设备通讯
2. 记录测试数据,并实时保存(单次测试周期预计半年甚至一年)
开启上位机测试的几天或十几天后,发现上位机消失了,数据在某个时刻截止。可是日志文件里面没有任何记录。
测试了两三次,均是这样。想知道该从哪方面排查。。。
日志记录相关代码如下
1. 在主要函数的内部都加了try, catch来捕捉记录
try
{功能代码}
catch (Exception ex)
{
string logMessage = $"上位机崩溃06\nException Type: {ex.GetType().Name}\nException Message: {ex.Message}\nStack Trace: {ex.StackTrace}";
Logging(logMessage); //记录到日志文件中
}
2. 使用函数来监控上位机关闭的信息
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
uint close_flag = 0;
string close_Result = "有原因";
uint temp2 = 0; //根据原因选择是否关闭,0可以关闭,1可以不关闭
switch (e.CloseReason)
{
case CloseReason.ApplicationExitCall: //应用程序要求关闭
case CloseReason.None: //不明原因
case CloseReason.TaskManagerClosing://任务管理器关闭
case CloseReason.WindowsShutDown: //操作系统准备关机
temp2 = 0;
break;
case CloseReason.FormOwnerClosing: //自身窗口上的关闭按钮
case CloseReason.MdiFormClosing: //MDI窗体关闭时事件
case CloseReason.UserClosing: //用户通过UI关闭窗口,或通过Alt+F4关闭窗口
temp2 = 1; //可以不关闭
break;
default:
temp2 = 0;
close_Result = "意外";
break;
}
if (temp2 == 1)
{
e.Cancel = true;
MessageBox.Show("正在测试,无法关闭!");
}
else
{
close_flag = 1;
}
string text_log = "0x0024 " + close_Result + "关闭上位机 e.CloseReason." + e.CloseReason.ToString();
Logging(text_log); //记录到日志文件
if (close_flag == 1)
{
Logging("上位机已关闭,结束运行!"); //记录到日志文件
}
else
{
Logging("上位机未关闭,继续运行!"); //记录到日志文件
}
}
catch (Exception ex)
{
string logMessage = $"上位机崩溃15\nException Type: {ex.GetType().Name}\nException Message: {ex.Message}\nStack Trace: {ex.StackTrace}";
Logging(logMessage); //记录到日志文件
}
}
1. 用485与设备通讯
2. 记录测试数据,并实时保存(单次测试周期预计半年甚至一年)
开启上位机测试的几天或十几天后,发现上位机消失了,数据在某个时刻截止。可是日志文件里面没有任何记录。
测试了两三次,均是这样。想知道该从哪方面排查。。。

日志记录相关代码如下
1. 在主要函数的内部都加了try, catch来捕捉记录
try
{功能代码}
catch (Exception ex)
{
string logMessage = $"上位机崩溃06\nException Type: {ex.GetType().Name}\nException Message: {ex.Message}\nStack Trace: {ex.StackTrace}";
Logging(logMessage); //记录到日志文件中
}
2. 使用函数来监控上位机关闭的信息
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
uint close_flag = 0;
string close_Result = "有原因";
uint temp2 = 0; //根据原因选择是否关闭,0可以关闭,1可以不关闭
switch (e.CloseReason)
{
case CloseReason.ApplicationExitCall: //应用程序要求关闭
case CloseReason.None: //不明原因
case CloseReason.TaskManagerClosing://任务管理器关闭
case CloseReason.WindowsShutDown: //操作系统准备关机
temp2 = 0;
break;
case CloseReason.FormOwnerClosing: //自身窗口上的关闭按钮
case CloseReason.MdiFormClosing: //MDI窗体关闭时事件
case CloseReason.UserClosing: //用户通过UI关闭窗口,或通过Alt+F4关闭窗口
temp2 = 1; //可以不关闭
break;
default:
temp2 = 0;
close_Result = "意外";
break;
}
if (temp2 == 1)
{
e.Cancel = true;
MessageBox.Show("正在测试,无法关闭!");
}
else
{
close_flag = 1;
}
string text_log = "0x0024 " + close_Result + "关闭上位机 e.CloseReason." + e.CloseReason.ToString();
Logging(text_log); //记录到日志文件
if (close_flag == 1)
{
Logging("上位机已关闭,结束运行!"); //记录到日志文件
}
else
{
Logging("上位机未关闭,继续运行!"); //记录到日志文件
}
}
catch (Exception ex)
{
string logMessage = $"上位机崩溃15\nException Type: {ex.GetType().Name}\nException Message: {ex.Message}\nStack Trace: {ex.StackTrace}";
Logging(logMessage); //记录到日志文件
}
}