/***************************************************************************                       Qt 控制watchdog app hacking* 声明:*     本文主要是为了查看之前朋友留下的Qt控制watchdog软件运作机制。**                                       2015-12-31 深圳 南山平山村 曾剑锋*************************************************************************/

一、参考文档:1. Qt Documentation:http://doc.qt.io/qt-4.8/qbasictimer.html2. QTimer和QBasicTimer使用:http://blog.csdn.net/thinkme2010/article/details/91127853. stm32独立看门狗和窗口看门狗的区别是什么?http://www.zhixinrui.com/thread-1192-1-1.html4. Linux下Watchdoghttp://blog.csdn.net/hshl1214/article/details/6248942

二、QBasicTimer Class:This is a fast, lightweight, and low-level class used by Qt internally. We recommend using the higher-level QTimer class rather than this class if you want to use timers in your applications. Note that this timer is a repeating timer that will send subsequent timer events unless the stop() function is called.三、Linux下watchdog的工作原理Watchdog在实现上可以是硬件电路也可以是软件定时器,能够在系统出现故障时自动重新启动系统。在Linux 内核下, watchdog的基本工作原理是:当watchdog启动后(即/dev/watchdog 设备被打开后),如果在某一设定的时间间隔内/dev/watchdog没有被执行写操作, 硬件watchdog电路或软件定时器就会重新启动系统。四、cat mainwindow.cpp#include "mainwindow.h"#include "ui_mainwindow.h"#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <linux/types.h>#include <linux/watchdog.h>#include <QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);fd = 0;times = 0;}MainWindow::~MainWindow(){delete ui;::close(fd);}void MainWindow::timerEvent(QTimerEvent *){int dummy;QString str;times++;/*** timer每次都会执行,有点不合理*/if(ui->checkBox->isChecked())::ioctl(fd,WDIOC_KEEPALIVE,&dummy);ui->times->setText(str.sprintf("%d",times));}void MainWindow::on_pushButton_clicked(){// 打开watchdog设备文件,就相当于开机了watchdog,并设置了一个默认值// 这个默认值是多少,目前不知道,去跟一下驱动,应该是可以获知的。if(ui->pushButton->text() == QString("open watchdog")){ui->pushButton->setText("close watchdog");ui->checkBox->setDisabled(true);fd = ::open("/dev/watchdog",O_WRONLY);if(fd < 0){QMessageBox::about(this,"error","open watchdog failure");exit(-1);}times = 0;ui->times->setText("0");timer.start(1000,this);}else    // 关闭fd,就相当于关闭了watchdog
        {ui->pushButton->setText("open watchdog");ui->checkBox->setEnabled(true);timer.stop();::close(fd);}}void MainWindow::moveEvent(QMoveEvent *){this->move(QPoint(0,0));}void MainWindow::resizeEvent(QResizeEvent *){this->showMaximized();}void MainWindow::closeEvent(QCloseEvent *){exit(0);}

转载于:https://www.cnblogs.com/zengjfgit/p/5090664.html

Qt 控制watchdog app hacking相关推荐

  1. linux watchdog demo hacking

    /*********************************************************************** linux watchdog demo hacking ...

  2. 支持Tasker控制的app合集

    跟各种Tasker插件打交道,原因有两点: 1.站在开发者的角度:Tasker虽为神器,也不能面面俱到,一个原因就是Android自身过于分裂化造成的,不可能兼顾全平台和机型:个人开发者精力有限,也满 ...

  3. 仿vivo控制中心下载_手机控制中心app

    手机控制中心app可以用来提供系统管理功能和界面设置功能,它让你快速的访问你手机的各个应用,手机控制中心app还拥有飞机模式.WiFi.调整亮度.手电筒.相机.控制音频.计算器等调控功能,欢迎使用. ...

  4. 仿vivo控制中心下载_仿vivo控制中心下载_手机控制中心app

    手机控制中心app可以用来提供系统管理功能和界面设置功能,它让你快速的访问你手机的各个应用,手机控制中心app还拥有飞机模式.WiFi.调整亮度.手电筒.相机.控制音频.计算器等调控功能,欢迎使用. ...

  5. 利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈

    利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈 有需要的朋友可以直接拷贝代码拿来使用,按钮是自锁按钮控制的,不是点动开关型的.这是经过许多人的经验总结和奉献才调通的程序, ...

  6. Python 通过微信控制实现app定位发送到个人服务器,再转发微信服务器接收位置信息。

    考虑到女友的安全问题,就做了一个app实现定位和服务器实现转发的东西.刚学python,竟没想到用对象编程会更加方便,全程过程式开发,代码有点臃肿,就当学习下python吧.效果就是:在微信公众号中输 ...

  7. Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息

    import socket import threading import os import requests from flask import Flask from flask import r ...

  8. 基于高通410c开发板,开发android端家庭控制中心APP(1)

    家庭控制中心APP运行在android端,通过与服务器通讯控制高通410c开发板. 基本功能如下: 1. 应用分为三个功能模块,包括电动窗帘.智能照明以及烟雾模块. 2. 电动窗帘模块中,包括调整窗帘 ...

  9. 基于STM32蓝牙控制的app智能台灯设计

    提示:记录毕设 文章目录 前言 一.任务书 1.1设计(研究)目标: 1.2设计(研究)内容: 二.代码思路 三.硬件设计 3.1总体设计 3.2蓝牙部分设计 四.联系我们 五.部分代码 喜欢请点赞哦 ...

最新文章

  1. 缓冲流、转换流、序列化流代码练习
  2. 【转】WPF之路-常用布局控件一
  3. codeforces B. Design Tutorial: Learn from Life
  4. 如何在centos7上安装FreeIPA的客户端
  5. Django结合Bootstrap分页显示mysql中的值
  6. JAVA共通関数--シングルクォーテーションをSQL用に追加する
  7. 详解将FTP映射至Windows
  8. 树莓派gpio接ttl转usb串口调试
  9. javascript视频教程之《ECMA5核心+设计模式》
  10. 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计下载 2.2.2 安卓版 - 河东软件园...
  11. 【已解决】微信小程序web-view嵌套H5,使用setStorageSync,localStorage.setItem有时候失效的问题
  12. 给自己的IntelliJ IDEA 设置签名
  13. NVIDIA 图像显卡参数列表
  14. EFPower tool 使用时发生的异常
  15. html 整体缩小zoom,页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
  16. ibm服务器修改uefi和legacy,uefi和legacy的区别详细分析(附带uefi改legacy教程)
  17. 50道简单家常菜~~~~~让你得意厨房
  18. 执行npm run build的时候报错怎么办?
  19. c++课程设计总结报告
  20. 在Spring Cloud中.yml与.properties

热门文章

  1. Redis事件驱动库转
  2. 再学Android之多线程
  3. Flutter入门二——项目结构及配置文件简介
  4. linux系统安全加固脚本
  5. Windows Server 2008 R2之三十二:证书注册WEB服务(一)
  6. 毕业2年从月薪400到6000 继续网络梦
  7. Learning Perl(Perl语言入门)学习笔记(3)
  8. netty源码分析服务器启动 NioEventLoop创建
  9. 在4k扇区的磁盘上执行dbca会报ORA-27047 错误
  10. 基于JWT(Json Web Token)的ASP.NET Web API授权方式