initial commit
This commit is contained in:
		
							
								
								
									
										139
									
								
								cVMS.NET_CS/RunCode/Device/_CONNECT.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								cVMS.NET_CS/RunCode/Device/_CONNECT.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
| using System.Windows.Media.Animation; | ||||
| using AR; | ||||
| using COMM; | ||||
|  | ||||
| namespace vmsnet | ||||
| { | ||||
|     public partial class FMain | ||||
|     { | ||||
|         Boolean bRunConnection = true; | ||||
|         Task thConnection;   //연결체크 | ||||
|  | ||||
|         void bwDeviceConnection() | ||||
|         { | ||||
|             //TimeSpan ts; | ||||
|             while (this.IsDisposed == false && bRunConnection) | ||||
|             { | ||||
|                 if (VAR.I32.Get(EVarI32.DevConnectSeq) == 0) | ||||
|                 { | ||||
|                     //하나의 대상만 연결시도를 하지 않게하기 위해 연결횟수를 가지고 로테이션한다. | ||||
|                     if (PUB.DAQ.Any() == false) | ||||
|                     { | ||||
|                         PUB.log.AddE($"Connect Error : No DAQ List"); | ||||
|                         System.Threading.Thread.Sleep(5000); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         var DAQ = PUB.DAQ.Where(t => t.isOn == false).OrderBy(t => t.ConnTryCount).FirstOrDefault(); | ||||
|                         if (DAQ != null) | ||||
|                         { | ||||
|                             //비활성화되어있다면 비활성 처리한다. | ||||
|                             if (DAQ.Disable == false) | ||||
|                             { | ||||
|                                 PUB.RaiseRemoteCommandEvent(rCommand.DisableUIItems, DAQ.idx); | ||||
|                                 DAQ.Disable = true; | ||||
|                             } | ||||
|  | ||||
|                             //장치의연결시도 | ||||
|                             try | ||||
|                             { | ||||
|                                 var ts = DateTime.Now - DAQ.ConnectTry; | ||||
|                                 if (ts.TotalSeconds > 5) | ||||
|                                 { | ||||
|                                     //discnt += 1 | ||||
|                                     PUB.StatusMSG($"{DAQ.Name} 연결시도중({DAQ.IP}:{DAQ.PORT})"); | ||||
|                                     //PUB.log.Add(AR.Log.ETYPE.NORMAL, "DA100 연결시도"); | ||||
|                                     DAQ.ConnectTry = DateTime.Now; | ||||
|                                     if (DAQ.ConnTryCount > 65530) | ||||
|                                         DAQ.ConnTryCount = 0; | ||||
|                                     else | ||||
|                                         DAQ.ConnTryCount += 1; | ||||
|  | ||||
|                                     PUB.RaiseRemoteCommandEvent(rCommand.DAQTryConnect, DAQ.idx); | ||||
|                                     if (DAQ.Connect().Result) | ||||
|                                     { | ||||
|                                         PUB.log.Add(AR.Log.ETYPE.NORMAL, $"{DAQ.Name} 연결성공({DAQ.IP}:{DAQ.PORT})"); | ||||
|                                         PUB.RaiseRemoteCommandEvent(rCommand.DAQConnected, DAQ.idx); | ||||
|                                     } | ||||
|                                     else | ||||
|                                     { | ||||
|                                         PUB.log.Add(AR.Log.ETYPE.NORMAL, $"{DAQ.Name} 연결실패({DAQ.IP}:{DAQ.PORT})"); | ||||
|                                         PUB.RaiseRemoteCommandEvent(rCommand.DAQDisconnected, DAQ.idx); | ||||
|                                     } | ||||
|  | ||||
|                                     PUB.log.AddAT($"[{DAQ.idx}]Connect to {DAQ.IP}:{DAQ.PORT}"); | ||||
|                                 } | ||||
|                             } | ||||
|                             catch (Exception ex) | ||||
|                             { | ||||
|                                 PUB.log.AddE($"[{DAQ.idx}] Connect error {DAQ.IP}:{DAQ.PORT} Message={ex.Message}"); | ||||
|                             } | ||||
|                         } | ||||
|                         else System.Threading.Thread.Sleep(1000); | ||||
|                     } | ||||
|  | ||||
|                     VAR.I32[EVarI32.DevConnectSeq] += 1; | ||||
|                 } | ||||
|                 else if (VAR.I32.Get(EVarI32.DevConnectSeq) == 1) | ||||
|                 { | ||||
|                     //Master K | ||||
|                     if (PUB.masterk.IsInit == false && PUB.CONFIG.plc_port.StartsWith("COM")) | ||||
|                     { | ||||
|                         var ts = VAR.TIME.RUN(EVarTime.CONNTRY_PLC); | ||||
|                         if (ts.TotalSeconds > 5) | ||||
|                         { | ||||
|                             PUB.masterk.Init(PUB.CONFIG.plc_port); | ||||
|                             VAR.TIME[EVarTime.CONNTRY_PLC] = DateTime.Now; | ||||
|                             VAR.I32[EVarI32.CONNTRY_PLC] += 1; | ||||
|                             PUB.log.Add($"MasterK Connect to {PUB.CONFIG.plc_port}"); | ||||
|                         } | ||||
|                         else System.Threading.Thread.Sleep(500); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         if (VAR.I32[EVarI32.CONNTRY_PLC] == 0) | ||||
|                         { | ||||
|                             //PUB.log.AddAT($"Master K Port Not set : {PUB.CONFIG.plc_port}"); | ||||
|                             VAR.I32[EVarI32.CONNTRY_PLC] += 1; | ||||
|                         } | ||||
|                         System.Threading.Thread.Sleep(1000); | ||||
|                     } | ||||
|                     VAR.I32[EVarI32.DevConnectSeq] += 1; | ||||
|                 } | ||||
|                 else //indicator | ||||
|                 { | ||||
|                     if (PUB.indicator.IsOpen == false && PUB.CONFIG.indicator_port.StartsWith("COM")) | ||||
|                     { | ||||
|                         var ts = VAR.TIME.RUN(EVarTime.CONNTRY_INDICATOR); | ||||
|                         if (ts.TotalSeconds > 5) | ||||
|                         { | ||||
|                             PUB.indicator.SlaveID = (byte)PUB.CONFIG.indicator_slaveno; | ||||
|                             PUB.indicator.Configure.BaudRate = PUB.CONFIG.indicator_baud; | ||||
|                             PUB.indicator.Open(PUB.CONFIG.indicator_port); | ||||
|                             VAR.TIME[EVarTime.CONNTRY_INDICATOR] = DateTime.Now; | ||||
|                             VAR.I32[EVarI32.CONNTRY_INDICATOR] += 1; | ||||
|                             PUB.log.Add($"Indicator Connect to {PUB.CONFIG.indicator_port}"); | ||||
|                         } | ||||
|                         else System.Threading.Thread.Sleep(500); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         if (VAR.I32[EVarI32.CONNTRY_INDICATOR] == 0) | ||||
|                         { | ||||
|                             //PUB.log.AddAT($"Indicator Port Not set : {PUB.CONFIG.indicator_port}"); | ||||
|                             VAR.I32[EVarI32.CONNTRY_INDICATOR] += 1; | ||||
|                         } | ||||
|                         System.Threading.Thread.Sleep(1000); | ||||
|                     } | ||||
|                     VAR.I32.Clear(EVarI32.DevConnectSeq); | ||||
|                 } | ||||
|                 System.Threading.Thread.Sleep(1000); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Arin(asus)
					Arin(asus)