【发布时间】:2014-04-08 19:39:30
【问题描述】:
情况
我有一个FEZ Cobra II NET 正在运行测试代码。它每秒向 LAN 上的服务器发送数据。服务器将数据写入文本文件。在 27 小时和 97,200 次成功发送后,Cobra 停止发送。显然,我不会在 27 小时内进行调试,而且我不知道如何排除故障,因为标准的软件故障排除方法不适用。
问题
- 如果我要写入记录 Cobra 上的错误,我将如何访问它们?
- NETMF 有应用程序日志吗?我们如何访问它们?
- 有事件查看器吗?
- 这里还有哪些其他可行的故障排除/调试步骤?
代码
public class Program
{
private static Timer timer;
private Network network;
public static void Main()
{
Program p = new Program();
p.network = new Network();
p.RepeatedlySendDataToWcfService();
Thread.Sleep(Timeout.Infinite);
}
private void RepeatedlySendDataToWcfService()
{
Program.timer =
new Timer(this.TimerCallback_SendSbcData, new object(), 0, 1000);
}
private void TimerCallback_SendSbcData(object stateInfo)
{
SbcData data = new SbcData();
this.network.Send(data);
}
}
搜索和研究
【问题讨论】:
-
能不能让它更频繁地发送,看看是否和包数有关?
-
@peter_mcc 这真是个好主意!现在你提到它似乎很明显。
-
“很明显,我不会在 27 小时内调试” - 为什么不运行带有调试器的设备,并定期检查它?至少您可以在应用程序失败时检查它的状态,例如发现具有意外值的变量。
-
您链接到的一篇文章指出“部署 .NET Micro Framework 应用程序后,您可以使用与任何其他托管 C# 应用程序基本相同的技术在 Visual Studio 中对其进行调试。”我认为,最坏的情况是,您必须使用模拟器。
-
我注意到在 NetMF 计时器示例中,它们将目标方法包装在“new TimerCallback()”中。它可能只是一个网络信号,围绕数据发送的 Try/Catch 应该处理。您可以将错误记录到存储卡中。
标签: c# network-programming embedded .net-micro-framework