WINCE平台下C#应用程序中使用看门狗
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
近日使用wince平台做C#的开发,由于设备提供商的设备不够稳定,有时会出现在运行过程中设备黑屏、假死的现象,故在程序中加入看门狗功能。当设备假死导致程序停止工作之后,没有及时喂狗,可以通过CPU让设备重启,恢复软件的正常工作状态,从一定程度上防止因为硬件假死导致程序不能正常工作的状态。
以下是基于wince嵌入式开发平台写的一个看门狗测试程序,经测试可以达到预期使用效果,现在共享给需要的人。
要说明的一点是,要使用看门狗的功能,要先调用看门狗的动态库,我在附件的项目中有提供。(FeedDog/bin/Debug/WDogDLL.dll)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; namespace FeedDog
{
//作者:姚量
//日期:2016-1-5
//说明:基于WINCE5.0平台的看门狗测试程序
//博客:http://www.cnblogs.com/leon719/
public partial class Form1 : Form
{ //初始化应用程序看门狗
[DllImport("WDogDLL.dll")]
public extern static bool InitWatchdog(uint dwPeriod); //启动看门狗。注意:初始化看门狗后,启动看门狗才有监控效果
[DllImport("WDogDLL.dll")]
public extern static bool StartWatchdog(); //停止看门狗。停止看门狗后,一直没有喂狗,也不重启系统。
[DllImport("WDogDLL.dll")]
public extern static bool StopWatchdog(); //喂狗函数。初始化并且启动看门狗后,周期内不喂狗,则重启设备
[DllImport("WDogDLL.dll")]
public extern static bool FeedWatchdog(); public Form1()
{
InitializeComponent();
} private void btn_init_Click_1(object sender, EventArgs e)
{
uint feedPeriod;
try
{
feedPeriod = Convert.ToUInt32(tb_feedTime.Text.Trim());
}
catch
{
feedPeriod = ;
}
if (InitWatchdog(feedPeriod))
{
AddInfo("初始化看门狗成功!");
}
else
{
AddInfo("初始化看门狗失败!");
}
} private void btn_start_Click_1(object sender, EventArgs e)
{
if (StartWatchdog())
{
AddInfo("启动看门狗成功!");
}
else
{
AddInfo("启动看门狗失败!");
}
} private void btn_stop_Click_1(object sender, EventArgs e)
{
if (StopWatchdog())
{
AddInfo("停止看门狗成功!");
}
else
{
AddInfo("停止看门狗失败!");
}
} private void btn_feed_Click_1(object sender, EventArgs e)
{
if (FeedWatchdog())
{
AddInfo("喂狗成功!");
}
else
{
AddInfo("喂狗失败!");
}
} private void AddInfo(string msg)
{
lb_feedback.Text = msg;
}
}
}
附件地址:
http://pan.baidu.com/s/1o7vDdI6
WINCE平台下C#应用程序中使用看门狗的更多相关文章
- 在多任务(RTOS)环境中使用看门狗
最近在SEGGER的博客上看到一篇有关在实时操作系统使用看门狗的文章.从一个失败的太空项目出发,分析了看门狗的作用及使用,自我感觉很有启发,特此翻译此文并推荐给各位同仁.为了阅读方便,有些航天领域名词 ...
- MacOS平台下@rpath在动态链接库中的应用
一.背景介绍 公司开发的一个底层库被用在了Mac平台的多个产品中.在开发这个底层库的初期,对于Mac OSX下的Install name 并没有过多的了解.对于XCode中的install name项 ...
- AMD平台下在Windows虚拟机中安装Mac10.8.6【Written By KillerLegend】
我的电脑CPU是AMD,以前在虚拟机中装过Windows操作系统,感觉很简单,这几天想体验一下苹果系统,未来也可能会从事Mac相关软件开发,于是从早上便兴致勃勃的开始了--于是悲剧也开始了,上网各种查 ...
- macOS平台下Qt应用程序菜单翻译及调整
一.翻译 在macOS平台上,系统会为应用程序菜单添加一些额外的菜单项.先来看一些典型的例子: 这个是Qt Creator的菜单,系统为应用程序菜单添加了一些桌面显示操作相关的菜单项: 这个是Qt D ...
- freecplus框架,Linux平台下C/C++程序员提高开发效率的利器
目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参数文 ...
- 对于Linux平台下C语言开发中__sync_函数的认识
reference:http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html#Atomic-Builtins A built ...
- 【NodeJs】Ctrl+C在Linux平台和Windows平台下的TCP连接中的不同表现
Linux平台:CentOS release 6.5 (Final) Windows平台:Windows 7 旗舰版 服务器端代码如下: var net = require('net'); var s ...
- 对于Linux平台下C语言开发中__sync_函数的认识(转)
reference:http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html#Atomic-Builtins A built-i ...
- 利用zabbix监控ogg进程(Windows平台下)
本文给大家介绍如何监控windows平台下的ogg程序.(注:所有操作都在administrator用户下面进行操作) 监控linux平台下的ogg程序请看:https://www.cnblogs.c ...
随机推荐
- Notepad++使用技法
Alt+H 隐藏行 Ctrl+Tab 实现在多个打开的窗口间切换 Ctrl+Shift+Q区块注释 Ctrl+K行注释(取消Ctrl+Shift+K) 文件 新建文件 Ctrl+N 打开文件 C ...
- poj 1724 ROADS 最短路
题目链接 n个节点, m条边, 一开始有K这么多的钱, 每条边有len, cost两个属性, 求1到n的最短距离, 花费要小于k. dis数组开成二维的, dis[u][cost]表示到达u花费为co ...
- (Problem 92)Square digit chains
A number chain is created by continuously adding the square of the digits in a number to form a new ...
- 转载:Ajax及 GET、POST 区别
转载:Ajax及 GET.POST 区别 收获: xhr.setRequestHeader(), xhr.getResponseHeader() 可以设置和获取请求头/响应头信息; new FormD ...
- Windows XP密钥(共38枚)
翱翔博客(http://hi.baidu.com/guoguo6688/home) Windows XP Professional VOL版密钥:=========================== ...
- 组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)
组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...
- Codeforces 701C They Are Everywhere(Two pointers+STL)
[题目链接] http://codeforces.com/problemset/problem/701/C [题目大意] 给出 一个字符串,里面包含一定种类的字符,求出一个最短的子串,使得其包含该字符 ...
- HDU 4417 Super Mario
题解:函数式线段树求区间小于等于k的数有几个,离线做法,首先将所有询问和序列一起离散,然后用函数式线段树处理. #include <map> #include <cstdio> ...
- 求高手帮忙解决一下问题Java Web Cookie实例
package cn.com; import java.io.IOException; import java.io.PrintWriter; import java.util.LinkedHashM ...
- [学习笔记]HTML5之canvas
虐了一下午的canvas 先撸了一个七巧板 <!doctype html> <html> <head> <meta charset="utf-8&q ...