コード例 #1
0
        /*Modbus开始读取数据*/
        private void BeginReadData()
        {
            try
            {
                ushortdata.Clear();
                modbusTcpDriver.ReadHoldingRegisters(Convert.ToUInt16("1065"),
                                                     Convert.ToUInt16("14"),
                                                     ref ushortdata);
                AirData ad = new AirData();
                ad.airTemperature1 = ((decimal)ushortdata[0] / 10).ToString();
                ad.airHumidity1    = ((decimal)ushortdata[1] / 10).ToString();;
                ad.pm251           = ushortdata[2].ToString();
                ad.cH2O1           = ushortdata[3].ToString();
                ad.pm101           = ushortdata[4].ToString();
                ad.cO21            = ushortdata[5].ToString();
                ad.tVoc1           = ((decimal)ushortdata[6] / 10).ToString();
                ad.airTemperature2 = ((decimal)ushortdata[7] / 10).ToString();
                ad.airHumidity2    = ((decimal)ushortdata[8] / 10).ToString();
                ad.pm252           = ushortdata[9].ToString();
                ad.cH2O2           = ushortdata[10].ToString();
                ad.pm102           = ushortdata[11].ToString();
                ad.cO22            = ushortdata[12].ToString();
                ad.tVoc2           = ((decimal)ushortdata[13] / 10).ToString();

                string sql = string.Format(@"insert into CZFactoryAirQualitity (Area,Datetime,Tempetature,Humidity,[PM2.5],PM10,CO2,CH2O,TVOC) 
                                            values ('1','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')"
                                           , DateTime.Now, ad.airTemperature1, ad.airHumidity1, ad.pm251, ad.pm101, ad.cO21, ad.cH2O1, ad.tVoc1);
//                string sql1 = string.Format(@"insert into CZFactoryAirQualitity (Area,Datetime,Tempetature,Humidity,[PM2.5],PM10,CO2,CH2O,TVOC)
//                                            values ('2','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')"
//                                            , DateTime.Now, ad.airTemperature2, ad.airHumidity2, ad.pm252, ad.pm102, ad.cO22, ad.cH2O2, ad.tVoc2);
                SqlUtil.ExcuteSql(sql);
                //SqlUtil.ExcuteSql(sql1);
            }
            catch (Exception estr)
            {
                //MessageBox.Show(estr.Message.ToString());
                WriteLog(estr.Message);
                connnect();
                BeginReadData();
            }
        }
コード例 #2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            connnect();
            try
            {
                ushortdata.Clear();
                modbusTcpDriver.ReadHoldingRegisters(Convert.ToUInt16("1065"),
                                                     Convert.ToUInt16("14"),
                                                     ref ushortdata);
                AirData ad = new AirData();
                ad.airTemperature1 = ((decimal)ushortdata[0] / 10).ToString();
                ad.airHumidity1    = ((decimal)ushortdata[1] / 10).ToString();;
                ad.pm251           = ushortdata[2].ToString();
                ad.cH2O1           = ushortdata[3].ToString();
                ad.pm101           = ushortdata[4].ToString();
                ad.cO21            = ushortdata[5].ToString();
                ad.tVoc1           = ((decimal)ushortdata[6] / 10).ToString();
                ad.airTemperature2 = ((decimal)ushortdata[7] / 10).ToString();
                ad.airHumidity2    = ((decimal)ushortdata[8] / 10).ToString();
                ad.pm252           = ushortdata[9].ToString();
                ad.cH2O2           = ushortdata[10].ToString();
                ad.pm102           = ushortdata[11].ToString();
                ad.cO22            = ushortdata[12].ToString();
                ad.tVoc2           = ((decimal)ushortdata[13] / 10).ToString();

                string sql2 = string.Format(@"insert into CZFactoryAirQualitity (Area,Datetime,Tempetature,Humidity,[PM2.5],PM10,CO2,CH2O,TVOC) 
                                            values ('1','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')"
                                            , DateTime.Now, ad.airTemperature1, ad.airHumidity1, ad.pm251, ad.pm101, ad.cO21, ad.cH2O1, ad.tVoc1);
//                string sql1 = string.Format(@"insert into CZFactoryAirQualitity (Area,Datetime,Tempetature,Humidity,[PM2.5],PM10,CO2,CH2O,TVOC)
//                                            values ('2','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')"
//                                            , DateTime.Now, ad.airTemperature2, ad.airHumidity2, ad.pm252, ad.pm102, ad.cO22, ad.cH2O2, ad.tVoc2);
                SqlUtil.ExcuteSql(sql2);
                //SqlUtil.ExcuteSql(sql1);
            }
            catch (Exception estr)
            {
                WriteLog(estr.Message);
                connnect();
            }

            timer3.Interval = 60000;//设置读取modbus数据时间为1分钟
            timer3.Start();

            this.KeyPreview = true;
            //查询最新一条数据结果
            string         sql0  = "select top 1 [PM2.5],PM10,Tempetature,Humidity ,CO2 ,TVOC,CH2O FROM CZFactoryAirQualitity where area='1' order by datetime desc";
            SqlConnection  conn0 = new SqlConnection("server=192.168.1.6;database=scz;uid=sa;pwd=flybarrier");
            SqlDataAdapter sda0  = new SqlDataAdapter(sql0, conn0);
            DataTable      dt0   = new DataTable();

            sda0.Fill(dt0);
            conn0.Close();
            if (dt0 != null && dt0.Rows.Count > 0)
            {
                //1、湿度
                string sd = dt0.Rows[0]["Humidity"].ToString();
                lblv_humidity.Text = sd;
                double shidu = double.Parse(sd);
                if (shidu > 60)
                {
                    lbl_sdshd.Text = "潮湿";
                }
                else if (shidu >= 30 && shidu <= 60)
                {
                    lbl_sdshd.Text = "正常";
                }
                else if (shidu < 30)
                {
                    lbl_sdshd.Text = "干燥";
                }
                //2、二氧化碳-->甲醛
                string CO2 = dt0.Rows[0]["CH2O"].ToString();
                int    co2 = int.Parse(CO2);
                if (co2 >= 100)
                {
                    lbl_eyht.Text = "超标";
                }
                else if (co2 < 100 && co2 > 0)
                {
                    lbl_eyht.Text = "正常";
                }
                lblv_co2.Text = CO2;
                //3、TVOC
                string tv = dt0.Rows[0]["TVOC"].ToString();
                lblv_tvoc.Text = tv;
                double tvoc = double.Parse(tv);
                if (tvoc <= 2)
                {
                    lbl_tvocshd.Text = "正常";
                }
                else if (tvoc > 2)
                {
                    lbl_tvocshd.Text = "超标";
                }
                //4、温度
                string wd    = dt0.Rows[0]["Tempetature"].ToString();
                double wendu = double.Parse(wd);
                if (wendu > 12 && wendu < 19)
                {
                    lbl_wdshd.Text = "凉爽";
                }
                else if (wendu >= 19 && wendu <= 24)
                {
                    lbl_wdshd.Text = "舒适";
                }
                else if (wendu <= 12)
                {
                    lbl_wdshd.Text = "寒冷";
                }
                else if (wendu > 24 && wendu < 28)
                {
                    lbl_wdshd.Text = "温暖";
                }
                else if (wendu >= 28)
                {
                    lbl_wdshd.Text = "炎热";
                }
                lblv_temperature.Text = wd;
                //5、pm2.5的值
                string pm   = dt0.Rows[0]["PM2.5"].ToString();
                int    pm25 = int.Parse(pm);
                lblv_pm.Text = pm.ToString();
                //判断pm2.5的值大小绘制不同的颜色提醒
                if (pm25 > 0 && pm25 <= 35)
                {
                    lblv_pm.ForeColor = Color.LimeGreen;
                    Graphics gra = this.CreateGraphics();
                    Pen      pen = new Pen(Color.LimeGreen, 3);
                    gra.DrawEllipse(pen, 590, 280, 380, 380);
                    lbl_con.Text = "优";
                }
                else if (pm25 >= 36 && pm25 <= 75)
                {
                    lblv_pm.ForeColor = Color.Yellow;
                    Graphics gra = this.CreateGraphics();
                    Pen      pen = new Pen(Color.Yellow, 3);
                    gra.DrawEllipse(pen, 590, 280, 380, 380);
                    lbl_con.Text = "良";
                }
                else if (pm25 >= 76 && pm25 <= 115)
                {
                    lblv_pm.ForeColor = Color.Orange;
                    Graphics gra = this.CreateGraphics();
                    Pen      pen = new Pen(Color.Orange, 3);
                    gra.DrawEllipse(pen, 590, 280, 380, 380);
                    lbl_con.Text = "轻度污染";
                }
                else if (pm25 >= 116 && pm25 <= 150)
                {
                    lblv_pm.ForeColor = Color.Red;
                    Graphics gra = this.CreateGraphics();
                    Pen      pen = new Pen(Color.Red, 3);
                    gra.DrawEllipse(pen, 590, 280, 380, 380);
                    lbl_con.Text = "中度污染";
                }
                else if (pm25 >= 151 && pm25 <= 250)
                {
                    lblv_pm.ForeColor = Color.Violet;
                    Graphics gra = this.CreateGraphics();
                    Pen      pen = new Pen(Color.Violet, 3);
                    gra.DrawEllipse(pen, 590, 280, 380, 380);
                    lbl_con.Text = "重度污染";
                }
                else if (pm25 > 250)
                {
                    lblv_pm.ForeColor = Color.Maroon;
                    Graphics gra = this.CreateGraphics();
                    Pen      pen = new Pen(Color.Maroon, 3);
                    gra.DrawEllipse(pen, 590, 280, 380, 380);
                    lbl_con.Text = "严重污染";
                }
            }

            //全屏显示无边框
            this.SetVisibleCore(false);
            this.FormBorderStyle = FormBorderStyle.None;
            this.WindowState     = FormWindowState.Maximized;
            this.SetVisibleCore(true);

            //设置标题时间
            lbl_date.Text   = DateTime.Now.ToShortDateString();
            lbl_week.Text   = DateTime.Now.ToString("dddd");
            lbl_time.Text   = DateTime.Now.ToString("t");
            timer1.Interval = 1000;
            timer1.Start();
            timer2.Interval = 60000;
            timer2.Start();

            //查询数据表中最新三条记录
            string         sql  = string.Format(@"SELECT top 3 datetime '时间',[PM2.5],PM10,Tempetature '温度',Humidity '湿度',CO2 '二氧化碳',TVOC,CH2O 
                                         FROM CZFactoryAirQualitity where area='1' order by datetime desc");
            SqlConnection  conn = new SqlConnection("server=192.168.1.6;database=scz;uid=sa;pwd=flybarrier");
            SqlDataAdapter sda  = new SqlDataAdapter(sql, conn);
            DataSet        ds   = new DataSet();

            sda.Fill(ds);
            conn.Close();
            dataGridView1.DataSource = ds.Tables[0];

            this.dataGridView1.RowHeadersVisible  = false; //datagridview前面的空白部分去除
            this.dataGridView1.AllowUserToAddRows = false; //去掉最后一行

            //设置列宽
            dataGridView1.Columns[0].Width = 192;
            dataGridView1.Columns[1].Width = 155;
            dataGridView1.Columns[2].Width = 155;
            dataGridView1.Columns[3].Width = 155;
            dataGridView1.Columns[4].Width = 155;
            dataGridView1.Columns[5].Width = 155;
            dataGridView1.Columns[6].Width = 155;
            dataGridView1.Columns[7].Width = 155;

            dataGridView1.Rows[0].Selected    = false;                                                         //取消选中第一行
            dataGridView1.ColumnHeadersHeight = 40;                                                            //设置表头高度
            dataGridView1.ColumnHeadersDefaultCellStyle.Font      = new Font("微软雅黑", 15);
            dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //设置标题内容居中显示;
            foreach (DataGridViewColumn item in this.dataGridView1.Columns)
            {
                item.SortMode = DataGridViewColumnSortMode.NotSortable;//DataGridView列SortMode属性(排序模式)默认为Automatic 在此模式下,右边会预留一个小箭头
            }
            dataGridView1.ColumnHeadersHeightSizeMode             = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
            dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(0, 102, 204);
            dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
        }