基于zigbee变电站入侵监测系统报警系统上位机显示

本系统利用Zigbee技术进行多节点监测,应用于变电站的安全防范。上位机软件通过VS2019开发,实时显示状态并能在检测到入侵时触发报警,同时将数据存储到MySQL数据库。采用CC2530作为主控芯片,IAR进行Zigbee代码开发,硬件电路设计借助AD17。上位机连接Zigbee协调器,终端节点连接传感器,实现数据通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系统实现了Zigbee组网监测,应用于变电站使用,多节点监测,上位机软件实时显示状态,同时检测到有人入侵就会报警。上位机将数据存到mysql数据库中。便于后续管理查询。Zigbee协调器连接上位机,Zigbee终端连接传感器。主控芯片采用CC2530

上位机采用VS2019进行编程开发,Zigbee代码采用IAR开发,硬件电路图采用AD17设计

上位机界面端设计

上位机界面效果截图如下:

 

实物图

 

 

硬件电路图如下:

IAR开发界面

上位机源代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;//添加对MySql.Data.MySqlClient的引用。

namespace Test
{
    public partial class Form1 : Form
    {


        MySqlConnection conn;//定义数据库连接
        MySqlCommand cmd = new MySqlCommand();//定义数据库执行操作类
        MySqlDataAdapter adapter;
        DateTime dtStart;//用于在批量添加测试时,记录添加数据库记录的开始时间
        DateTime dtEnd;//用于在批量添加测试时,记录添加数据库记录的结束时间
        private int sum = 0;//用于在批量添加测试时,记录要添加数据库记录的总数

        string user_data_tebles_ck = "cktables";
        string user_data_tebles_ck2 = "cktables2";
        string user_data_tebles_log = "log";

        string server_ip = "127.0.0.1";
        string server_port = "3306";
        string mysql_user = "root";
        string mysql_pass = "1520747634@qq.com";
        string mysql_dataname = "info";


        // CREATE Database `spdata` DEFAULT CHARACTER SET utf8;
        // CREATE Database `test` DEFAULT CHARACTER SET utf8;
        //CREATE TABLE `user` (
        //  `id` int (11) NOT NULL AUTO_INCREMENT,
        //  `序列号` varchar(45) DEFAULT NULL,
        //  `商品名称` varchar(45) DEFAULT NULL,
        //  `商品价格` varchar(45) DEFAULT NULL,
        //  PRIMARY KEY(`id`)
        //) ENGINE=InnoDB DEFAULT CHARSET=utf8;

        //CREATE TABLE `log` (
        //  `id` int (11) NOT NULL AUTO_INCREMENT,
        //  `time` varchar(45) DEFAULT NULL,
        //  `states` varchar(45) DEFAULT NULL,
        //  PRIMARY KEY(`id`)
        //) ENGINE=InnoDB DEFAULT CHARSET=utf8;

        public Form1()
        {
            InitializeComponent();
        }
        private bool OpenConnection()
        {
            try
            {
                String connetStr = "server='" + server_ip + "';port='" + server_port + "';user='" + mysql_user + "';password='" + mysql_pass + "'; database='" + mysql_dataname + "';" + "charset=utf8"; ;

                // server=127.0.0.1/localhost 代表本机,端口号port默认是3306可以不写
                conn = new MySqlConnection(connetStr);
                conn.Open();//打开通道,建立连接,可能出现异常,使用try catch语句
                Console.WriteLine("连接正常!");
                return true;
            }
            catch (MySqlException ex)
            {
                switch (ex.Number)
                {
                    case 0:
                        MessageBox.Show("不能连接服务器!");
                        break;
                    case 1045:
                        MessageBox.Show("账号密码错误!");
                        break;
                    case 1046:
                        MessageBox.Show("数据库未选择");
                        break;

                    default:
                        MessageBox.Show("未知错误!", ex.Number.ToString() + ex);
                        break;

                }
                return false;
            }

        }
        void ShowMsg(string str)
        {
            Console.Write(str + "\r\n");
            Write_SaveTxtFile(str + "\r\n");

            // txtMsg.Items.Add(str + "\r\n");
        }
        public void Write_SaveTxtFile(string txtStr) //保存文本文件  到软件运行目录下  
        {
            string str = System.Windows.Forms.Application.StartupPath;//获取软件的运行目录  
            File.AppendAllText(@str + "\\" + "config.txt", txtStr);  //在软件运行目录下保存log信息  
        }
        void create_tables()
        {
            //CREATE TABLE `log` (
            //  `id` int (11) NOT NULL AUTO_INCREMENT,
            //  `time` varchar(45) DEFAULT NULL,
            //  `states` varchar(45) DEFAULT NULL,
            //  PRIMARY KEY(`id`)
            //int primary key auto_increment,value 自动递增
            string createStatement = "CREATE TABLE "+ user_data_tebles_ck+ "(id int primary key auto_increment,value VarChar(50),time VarChar(50) )";
            string createStatement2 = "CREATE TABLE " + user_data_tebles_ck2 + "(id int primary key auto_increment,value VarChar(50),time VarChar(50) )";
            String sqlConn = "server='" + server_ip + "';port='" + server_port + "';user='" +
                 mysql_user + "';password='" + mysql_pass + "'; database='" + mysql_dataname + "';" + "Charset=utf8;";
            conn = new MySqlConnection(sqlConn);//
            conn.Open();
            try
            {
                // 建表
                using (MySqlCommand cmd = new MySqlCommand(createStatement, conn))
                {
                    cmd.ExecuteNonQuery();
                }
                using (MySqlCommand cmd = new MySqlCommand(createStatement2, conn))
                {
                    cmd.ExecuteNonQuery();
                }
                // 改表或者增加行
                //using (MySqlCommand cmd = new MySqlCommand(alterStatement, conn))
                //{
                //    cmd.ExecuteNonQuery();
                //}
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
                Application.Exit();//直接推出
            }
        }
        void init_mysql()
        {
            //
            //mysql_dataname = "liuhao11";
            String sqlConn = "server="+ server_ip+"; port="+ server_port+"; user="+ mysql_user+"; password=" + mysql_pass + ";";
            MySqlConnection conn = new MySqlConnection(sqlConn);//
            string sqlDB = "SELECT * FROM information_schema.SCHEMATA where SCHEMA_NAME='"+ mysql_dataname+"';";
            MySqlDataAdapter adp = new MySqlDataAdapter(sqlDB, conn);
            DataSet ds = new DataSet();
            adp.Fill(ds);
            if (ds.Tables[0].Rows.Count > 0)
            {
                MessageBox.Show("数据库初始化成功!");
            }
            else
            {
                conn.Open();
                
                // MySqlCommand cmd = new MySqlCommand(string.Format("CREATE DATABASE IF NOT EXISTS '"+ mysql_dataname+"';"));
                MySqlCommand cmd = new MySqlCommand("CREATE DATABASE "+ mysql_dataname+";", conn);
                if (cmd.ExecuteNonQuery() > 0)
                {
                    MessageBox.Show("数据库初始化成功!");
                }
                else {
                    MessageBox.Show("数据库初始化失败!");
                }
                create_tables();
                //string createStatement = "CREATE TABLE "+ user_data_tebles_ck+" (Field1 VarChar(50), Field2 Integer)";
                //string alterStatement = "ALTER TABLE Test1 ADD Field3 Boolean";
                //try
                //{
                //    // 建表
                //    using (MySqlCommand  cmd1 = new MySqlCommand(createStatement, conn))
                //    {
                //        cmd1.ExecuteNonQuery();
                //    }

                //    // 改表或者增加行
                //    //using (MySqlCommand cmd = new MySqlCommand(alterStatement, conn))
                //    //{
                //    //    cmd.ExecuteNonQuery();
                //    //}
                //}
                //catch (MySqlException ex)
                //{
                //    MessageBox.Show(ex.Message);
                //    Application.Exit();//直接推出
                //}
            }
               
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            string[] ports = System.IO.Ports.SerialPort.GetPortNames();//获取电脑上可用串口号
            comboBox1.Items.AddRange(ports);//给comboBox1添加数据
            comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;//如果里面有数据,显示第0个
            comboBox2.Text = "115200";/*默认波特率:115200*/
            comboBox3.Text = "1";/*默认停止位:1*/
            comboBox4.Text = "8";/*默认数据位:8*/
            comboBox5.Text = "无";/*默认奇偶校验位:无*/
            init_mysql();//初始化数据库
            //  radioButton1.ForeColor = Color.Red;
            // radioButton1.Checked = true;
            // dataGridView1.RowHeadersVisible = false;   //隐藏首列
            //String sqlConn 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值