From 0000a66827439d2b6e07352b5d602e6cc48ee3e0 Mon Sep 17 00:00:00 2001 From: LQF Date: Wed, 23 Aug 2017 16:36:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=89=E8=BD=A6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=B8=B2=E5=8F=A3=E5=8F=8A=E9=98=88=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/AnChe.cpp | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ App/AnChe.h | 38 ++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 App/AnChe.cpp create mode 100644 App/AnChe.h diff --git a/App/AnChe.cpp b/App/AnChe.cpp new file mode 100644 index 00000000..89e9d1c6 --- /dev/null +++ b/App/AnChe.cpp @@ -0,0 +1,70 @@ +#include "Kernel\Sys.h" + +#include "Device/Pwm.h" + +#include "Config.h" + +#include "AnChe.h" + +AnCheConfig::AnCheConfig() +{ + _Name = "AnChe"; + _Start = &Anche; + _End = &TagEnd; + Init(); + + Serial1Power = true; // 串口2开关状态 + BaudRate1 = 9600; // 串口2波特率 + DataBits1 = 8; // 串口2数据位 + Parity1 = 0; // 串口2奇偶校验位 + StopBits1 = 1; // 串口2停止位 + Serial2Power = true; // 串口3开关状态 + BaudRate2 = 9600; // 串口3波特率 + DataBits2 = 8; // 串口3数据位 + Parity2 = 0; // 串口3奇偶校验位 + StopBits2 = 1; // 串口3停止位 + IsInfrare=false; // 是否红外控制 + InitWeight[0] = 80; // 初始重量变化阈值 + InitWeight[1] = 80; // 初始重量变化阈值 + StableWeight[0] = 80; // 稳定重量变化阈值 + StableWeight[1] = 80; // 稳定重量变化阈值 + +} + +static AnCheConfig* _cfg = nullptr; +static ByteArray _bak; +static uint _saveTask = 0; + +static void SaveTask(void* param) +{ + if (!_cfg) return; + + // 比较数据,如果不同则保存 + auto bs = _cfg->ToArray(); + if (_bak.Length() == 0 || bs != _bak) + { + _bak = bs; + _cfg->Save(); + } +} + +static AnCheConfig* InitConfig() +{ + static AnCheConfig cfg; + if (!_cfg) + { + _cfg = &cfg; + _cfg->Load(); + + _bak = cfg.ToArray(); + if (!_saveTask) _saveTask = Sys.AddTask(SaveTask, nullptr, 1000, 10000, "保存配置"); + } + + return _cfg; +} + +void AnChe::GetConfig() +{ + Config = InitConfig(); +} + diff --git a/App/AnChe.h b/App/AnChe.h new file mode 100644 index 00000000..86cfbe02 --- /dev/null +++ b/App/AnChe.h @@ -0,0 +1,38 @@ +#ifndef __AnChe_H_ +#define __AnChe_H_ + +#include "Kernel\Sys.h" +#include "Platform\Pin.h" +class AnCheConfig; + +class AnChe +{ +public : + AnCheConfig* Config; + void GetConfig(); +}; + +// 配置 +class AnCheConfig : public ConfigBase +{ +public: + byte Anche; + bool Serial1Power; // 串口2开关状态 + int BaudRate1; // 串口2波特率 + byte DataBits1; // 串口2数据位 + byte Parity1; // 串口2奇偶校验位 + byte StopBits1; // 串口2停止位 + bool Serial2Power; // 串口3开关状态 + int BaudRate2; // 串口3波特率 + byte DataBits2; // 串口3数据位 + byte Parity2; // 串口3奇偶校验位 + byte StopBits2; // 串口3停止位 + bool IsInfrare; // 是否红外控制 + ushort InitWeight[2]; // 初始重量变化阈值 + ushort StableWeight[2]; // 稳定重量变化阈值 + byte TagEnd; + + AnCheConfig(); +}; + +#endif