Browse Source

修改状态显示取值和图标

章政 6 years ago
parent
commit
54acc139fc

+ 0 - 1
PLCDataReader/Main.Designer.cs

@@ -1702,7 +1702,6 @@ namespace UAS_PLCDataReader
             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
             this.Text = "设备监控管理平台";
             this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
-            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing);
             this.Load += new System.EventHandler(this.Main_Load);
             ((System.ComponentModel.ISupportInitialize)(this.RibbonNav)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.MainTabControl)).EndInit();

+ 48 - 48
PLCDataReader/Main.cs

@@ -167,16 +167,6 @@ namespace UAS_PLCDataReader
 
             Ptime = new Dictionary<int, PollingTimer>();
         }
-        /// <summary>
-        /// 关闭前将所有设备离线,状态更新为离线
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void Main_FormClosing(object sender, FormClosingEventArgs e)
-        {
-            dh.ExecuteSql("update devicepollingconfig set dpc_status='Stop' where dpc_status='Running'", "update");
-            dh.ExecuteSql("update devicepollinglog set dpg_status='Stop' where dpg_status='Running'", "update");
-        }
         #endregion
 
         #region 设备列表界面
@@ -414,17 +404,13 @@ namespace UAS_PLCDataReader
                     sql.Append("insert into DEVICEPOLLINGLOG(dpg_id,dpg_decode,dpg_starttime,dpg_interval)values");
                     sql.Append("(DEVICEPOLLINGLOG_seq.nextval,'" + pl.DeviceCode + "',sysdate,'" + pl.Interval + "')");
                     dh.ExecuteSql(sql.ToString(), "insert");
-                    sql.Clear();
-                    sql.Append("MERGE INTO DeviceRunstatus alias1 USING (select '" + pl.DeviceCode + "' dr_decode from  dual) alias2 ");
-                    sql.Append("ON (alias1.dr_decode=alias2.dr_decode) WHEN MATCHED THEN  UPDATE  SET dr_startdate =sysdate ");
-                    sql.Append("WHEN NOT MATCHED THEN INSERT (Dr_id,dr_decode,dr_dename,Dr_runstatus,dr_startdate) VALUES (DeviceRunstatus_seq.nextval,");
-                    sql.Append("'" + pl.DeviceCode + "','" + pl.DeviceName + "','running',sysdate)");
-                    dh.ExecuteSql(sql.ToString(), "update");
+                    LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, "running");
                     pt.AddTask(RunTask, pl);
                     //添加到状态为运行的行
                     PollSettingPaintRowIndex.Add(i);
                     GridPollingSetting.Focus();
                 }
+                else LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, "stopped");
             }
         }
 
@@ -499,7 +485,7 @@ namespace UAS_PLCDataReader
                 }
                 else
                 {
-                    ModBusTCPClient modclient = new ModBusTCPClient(DNC.Rows[0]["dnc_ip"].ToString(), int.Parse(DNC.Rows[0]["dnc_port"].ToString()));
+                    ModBusTCPClient modclient = new ModBusTCPClient(DNC.Rows[0]["dnc_ip"].ToString(), int.Parse(DNC.Rows[0]["dnc_port"].ToString()), pl.DeviceCode, pl.DeviceName);
                     client.Add(DpcID, modclient);
                 }
                 //如果不包含该项数据则在键值对中添加
@@ -665,7 +651,7 @@ namespace UAS_PLCDataReader
             if (PageDeviceStatus.PageVisible)
             {
                 DeviceStatusQuerySQL.Clear();
-                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dpc_status,dpc_id from device left join DEVICEPOLLINGCONFIG on dpc_decode=de_code order by de_code");
+                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dr_runstatus from device left join devicerunstatus on dr_decode=de_code order by de_code");
                 PaintDeviceStatusControl(DeviceStatusQuerySQL.ToString());
                 //填充筛选条件,车间和线体
                 DataTable dt = (DataTable)dh.ExecuteSql("select wc_code,wc_name from workcenter", "select");
@@ -678,13 +664,13 @@ namespace UAS_PLCDataReader
             DeviceStatusQuerySQL.Clear();
             if (CheckEditDeviceStatusEnable.Checked)
             {
-                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dpc_status,dpc_id from device left join DEVICEPOLLINGCONFIG ");
-                DeviceStatusQuerySQL.Append("on dpc_decode=de_code where nvl(dpc_enable,0)<>0 order by de_code");
+                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dr_runstatus from device left join devicerunstatus ");
+                DeviceStatusQuerySQL.Append("on dr_decode=de_code where nvl(dpc_enable,0)<>0 order by de_code");
             }
             else
             {
-                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dpc_status,dpc_id from device left join DEVICEPOLLINGCONFIG ");
-                DeviceStatusQuerySQL.Append("on dpc_decode=de_code order by de_code");
+                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dr_runstatus from device left join devicerunstatus ");
+                DeviceStatusQuerySQL.Append("on dr_decode=de_code order by de_code");
             }
             PaintDeviceStatusControl(DeviceStatusQuerySQL.ToString());
         }
@@ -695,13 +681,13 @@ namespace UAS_PLCDataReader
             string WC = BaseUtil.GetComboxEditValue(ComboxDeviceStatusWC);
             if (CheckEditDeviceStatusEnable.Checked)
             {
-                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dpc_status,dpc_id from device left join DEVICEPOLLINGCONFIG ");
-                DeviceStatusQuerySQL.Append("on dpc_decode=de_code where nvl(dpc_enable,0)<>0 and de_wccode='" + WC + "' order by de_code");
+                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dr_runstatus from device left join devicerunstatus ");
+                DeviceStatusQuerySQL.Append("on dr_decode=de_code where nvl(dpc_enable,0)<>0 and de_wccode='" + WC + "' order by de_code");
             }
             else
             {
-                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dpc_status,dpc_id from device left join DEVICEPOLLINGCONFIG ");
-                DeviceStatusQuerySQL.Append("on dpc_decode=de_code where de_wccode='" + WC + "' order by de_code");
+                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dr_runstatus from device left join devicerunstatus ");
+                DeviceStatusQuerySQL.Append("on dr_decode=de_code where de_wccode='" + WC + "' order by de_code");
             }
             PaintDeviceStatusControl(DeviceStatusQuerySQL.ToString());
             sql.Clear();
@@ -720,8 +706,8 @@ namespace UAS_PLCDataReader
             string LC = BaseUtil.GetComboxEditValue(ComboxDeviceStatusLC);
             if (CheckEditDeviceStatusEnable.Checked)
             {
-                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dpc_status,dpc_id from device left join ");
-                DeviceStatusQuerySQL.Append("DEVICEPOLLINGCONFIG on dpc_decode=de_code where nvl(dpc_enable,0)<>0");
+                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dr_runstatus from device left join ");
+                DeviceStatusQuerySQL.Append("devicerunstatus on dr_decode=de_code ");
                 if (WC != "全部")
                     DeviceStatusQuerySQL.Append(" and de_wccode='" + WC + "' ");
                 if (LC != "全部")
@@ -730,8 +716,8 @@ namespace UAS_PLCDataReader
             }
             else
             {
-                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dpc_status,dpc_id from device left join ");
-                DeviceStatusQuerySQL.Append("DEVICEPOLLINGCONFIG on dpc_decode=de_code ");
+                DeviceStatusQuerySQL.Append("select distinct de_code,de_name,dr_runstatus from device left join ");
+                DeviceStatusQuerySQL.Append("devicerunstatus on dr_decode=de_code ");
                 if (WC != "全部" && LC != "全部")
                     DeviceStatusQuerySQL.Append(" where de_wccode='" + WC + "' and de_linecode='" + LC + "' ");
                 if (WC == "全部" && LC != "全部")
@@ -781,16 +767,23 @@ namespace UAS_PLCDataReader
                         pic.Picedit.MouseHover += Pic_MouseHover;
                         pic.Picedit.Properties.SizeMode = PictureSizeMode.Squeeze;
                         //如果该设备已启动
-                        if (ReturnData.ContainsKey(dt.Rows[j * CountPerRow + i]["de_code"].ToString()))
+                        switch (dt.Rows[j * CountPerRow + i]["dr_runstatus"].ToString())
                         {
-                            if (ReturnData[dt.Rows[j * CountPerRow + i]["de_code"].ToString()].RunStatus == "Running")
-                            {
-                                pic.Picedit.Image = Properties.Resources.net_connected;
-                            }
-                        }
-                        else
-                        {
-                            pic.Picedit.Image = Properties.Resources.network_offline;
+                            case "running":
+                                pic.Picedit.Image = Properties.Resources.running;
+                                break;
+                            case "disconnect":
+                                pic.Picedit.Image = Properties.Resources.disconnect;
+                                break;
+                            case "stopped":
+                                pic.Picedit.Image = Properties.Resources.stopped;
+                                break;
+                            case "noanswer":
+                                pic.Picedit.Image = Properties.Resources.noanswer;
+                                break;
+                            default:
+                                pic.Picedit.Image = Properties.Resources.stopped;
+                                break;
                         }
                         pic.Text = dt.Rows[j * CountPerRow + i]["de_code"].ToString();
                         pic.Picedit.BorderStyle = BorderStyles.HotFlat;
@@ -850,16 +843,23 @@ namespace UAS_PLCDataReader
                 }
                 for (int i = 0; i < (j == RowCount - 1 ? LastRowCount : CountPerRow); i++)
                 {
-                    if (ReturnData.ContainsKey(dt.Rows[j * CountPerRow + i]["de_code"].ToString()))
-                    {
-                        if (ReturnData[dt.Rows[j * CountPerRow + i]["de_code"].ToString()].RunStatus == "Running")
-                        {
-                            (PanelDeviceStatus.Controls[dt.Rows[j * CountPerRow + i]["de_code"].ToString() + i + j] as PictureEditWithText).Picedit.Image = Properties.Resources.net_connected;
-                        }
-                    }
-                    else
+                    switch (dt.Rows[j * CountPerRow + i]["dr_runstatus"].ToString())
                     {
-                        (PanelDeviceStatus.Controls[dt.Rows[j * CountPerRow + i]["de_code"].ToString() + i + j] as PictureEditWithText).Picedit.Image = Properties.Resources.network_offline;
+                        case "running":
+                            (PanelDeviceStatus.Controls[dt.Rows[j * CountPerRow + i]["de_code"].ToString() + i + j] as PictureEditWithText).Picedit.Image = Properties.Resources.running;
+                            break;
+                        case "disconnect":
+                            (PanelDeviceStatus.Controls[dt.Rows[j * CountPerRow + i]["de_code"].ToString() + i + j] as PictureEditWithText).Picedit.Image = Properties.Resources.disconnect;
+                            break;
+                        case "stopped":
+                            (PanelDeviceStatus.Controls[dt.Rows[j * CountPerRow + i]["de_code"].ToString() + i + j] as PictureEditWithText).Picedit.Image = Properties.Resources.stopped;
+                            break;
+                        case "noanswer":
+                            (PanelDeviceStatus.Controls[dt.Rows[j * CountPerRow + i]["de_code"].ToString() + i + j] as PictureEditWithText).Picedit.Image = Properties.Resources.noanswer;
+                            break;
+                        default:
+                            (PanelDeviceStatus.Controls[dt.Rows[j * CountPerRow + i]["de_code"].ToString() + i + j] as PictureEditWithText).Picedit.Image = Properties.Resources.stopped;
+                            break;
                     }
                 }
             }

+ 50 - 0
PLCDataReader/Properties/Resources.Designer.cs

@@ -80,6 +80,16 @@ namespace UAS_PLCDataReader.Properties {
             }
         }
         
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap computer_process_72px_501146_easyicon_net {
+            get {
+                object obj = ResourceManager.GetObject("computer_process_72px_501146_easyicon_net", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   查找 System.Drawing.Bitmap 类型的本地化资源。
         /// </summary>
@@ -90,6 +100,16 @@ namespace UAS_PLCDataReader.Properties {
             }
         }
         
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap disconnect {
+            get {
+                object obj = ResourceManager.GetObject("disconnect", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   查找 System.Drawing.Bitmap 类型的本地化资源。
         /// </summary>
@@ -120,6 +140,16 @@ namespace UAS_PLCDataReader.Properties {
             }
         }
         
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap noanswer {
+            get {
+                object obj = ResourceManager.GetObject("noanswer", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   查找 System.Drawing.Bitmap 类型的本地化资源。
         /// </summary>
@@ -130,6 +160,26 @@ namespace UAS_PLCDataReader.Properties {
             }
         }
         
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap running {
+            get {
+                object obj = ResourceManager.GetObject("running", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap stopped {
+            get {
+                object obj = ResourceManager.GetObject("stopped", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   查找 System.Drawing.Bitmap 类型的本地化资源。
         /// </summary>

+ 15 - 0
PLCDataReader/Properties/Resources.resx

@@ -145,4 +145,19 @@
   <data name="U_Letter_72px_1121581_easyicon_net" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\U_Letter_72px_1121581_easyicon.net.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="computer_process_72px_501146_easyicon_net" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\computer_process_72px_501146_easyicon.net.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="disconnect" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\disconnect.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="noanswer" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\noanswer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="running" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\running.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="stopped" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\stopped.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
 </root>

+ 10 - 0
PLCDataReader/PublicMethod/LogicHandler.cs

@@ -80,5 +80,15 @@ namespace UAS_PLCDataReader.PublicMethod
             sql.Append("update DeviceRunstatus set dr_qty=:dr_inqty,dr_okqty=:dr_okqty,dr_TEMPERATURE=:dr_TEMPERATURE where dr_decode='" + Decode + "'");
             dh.ExecuteSql(sql.ToString(), "select", INQTY, OUTQTY, TEMPERATURE);
         }
+
+        public static void UpdateDeviceStatus(string iDecode, string iDename, string iDestatus)
+        {
+            sql.Clear();
+            sql.Append("MERGE INTO DeviceRunstatus alias1 USING (select '" + iDecode + "' dr_decode from  dual) alias2 ");
+            sql.Append("ON (alias1.dr_decode=alias2.dr_decode) WHEN MATCHED THEN  UPDATE  SET dr_startdate =sysdate,Dr_runstatus='" + iDestatus + "' ");
+            sql.Append("WHEN NOT MATCHED THEN INSERT (Dr_id,dr_decode,dr_dename,Dr_runstatus,dr_startdate) VALUES (DeviceRunstatus_seq.nextval,");
+            sql.Append("'" + iDecode + "','" + iDename + "','" + iDestatus + "',sysdate)");
+            dh.ExecuteSql(sql.ToString(), "update");
+        }
     }
 }

+ 12 - 3
PLCDataReader/PublicMethod/ModBusTCPClient.cs

@@ -88,8 +88,13 @@ namespace UAS_PLCDataReader.PublicMethod
 
         private string port;
 
-        public ModBusTCPClient(string IP, int Port)
+        string decode = "";
+        string dename = "";
+
+        public ModBusTCPClient(string IP, int Port,string Decode,string Dename)
         {
+            decode = Decode;
+            dename = Dename;
             socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
             serverFullAddr = new IPEndPoint(IPAddress.Parse(IP), Port);//设置IP,端口
             try
@@ -98,7 +103,7 @@ namespace UAS_PLCDataReader.PublicMethod
             }
             catch (Exception)
             {
-
+                LogicHandler.UpdateDeviceStatus(decode, dename,"disconnect");
             }
         }
 
@@ -119,16 +124,20 @@ namespace UAS_PLCDataReader.PublicMethod
                     arr[i] = (byte)Convert.ToInt32(Command.Substring(i * 2, 2), 16);
                 }
                 socket.Send(arr);
+
                 byte[] receive = new byte[1024 * 1024];
+                LogicHandler.UpdateDeviceStatus(decode, dename, "noanswer");
                 int length = socket.Receive(receive);
+                LogicHandler.UpdateDeviceStatus(decode, dename, "running");
                 if (!returnvalue.ContainsKey(socket.RemoteEndPoint.ToString()))
                 {
                     returnvalue.Add(socket.RemoteEndPoint.ToString(), BaseUtil.ByteToHexadecimalString(receive, length));
                 }
+              
             }
             catch (Exception e)
             {
-                Console.WriteLine(e.Message);
+                LogicHandler.UpdateDeviceStatus(decode, dename, "disconnect");
             }
         }
     }

BIN
PLCDataReader/Resources/computer_process_72px_501146_easyicon.net.png


BIN
PLCDataReader/Resources/disconnect.png


BIN
PLCDataReader/Resources/noanswer.png


BIN
PLCDataReader/Resources/running.png


BIN
PLCDataReader/Resources/stopped.png


+ 5 - 0
PLCDataReader/UAS_PLCDataReader.csproj

@@ -359,6 +359,11 @@
     <None Include="Resources\devicecontrol.png" />
     <None Include="Resources\close_24px_1069872_easyicon.net.png" />
     <None Include="Resources\check_16px_1137507_easyicon.net.png" />
+    <None Include="Resources\computer_process_72px_501146_easyicon.net.png" />
+    <None Include="Resources\noanswer.png" />
+    <None Include="Resources\disconnect.png" />
+    <None Include="Resources\stopped.png" />
+    <None Include="Resources\running.png" />
     <Content Include="Tool\DevExpress.Charts.Designer.v15.2.dll" />
     <Content Include="Tool\DevExpress.Data.v15.2.dll" />
     <Content Include="Tool\DevExpress.Printing.v15.2.Core.dll" />