Initial commit
This commit is contained in:
		
							
								
								
									
										122
									
								
								Handler/Project/RunCode/StateMachine/_SM_DIO.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								Handler/Project/RunCode/StateMachine/_SM_DIO.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Drawing; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using AR; | ||||
| namespace Project | ||||
| { | ||||
| 	public partial class FMain | ||||
| 	{ | ||||
| 		private void Dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e) | ||||
| 		{ | ||||
| 			if (e.Direction == arDev.DIO.eIOPINDIR.INPUT) | ||||
| 			{ | ||||
| 				var diPin = DIO.Pin.input.Where(t=>t.terminalno == e.ArrIDX).FirstOrDefault(); | ||||
|                 if(diPin == null) | ||||
|                 { | ||||
|                     PUB.log.AddE($"DI INDEX:{e.ArrIDX} 에 해당하는 터미널 대상이 없습니다"); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     var pin = (eDIName)diPin.idx; | ||||
|                     if (AR.SETTING.Data.Log_DI) | ||||
|                     { | ||||
|                         PUB.log.Add("DIO", String.Format("DI:IDX={0},DIR={1},VAL={2},NM={3}", e.ArrIDX, e.Direction, e.NewValue, diPin)); | ||||
|                     } | ||||
|                     var value =  DIO.GetIOInput(pin); | ||||
|                     _DIO_INPUT_VALUE_CHANGED(pin, value); | ||||
|                 } | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
|                 var doPin = DIO.Pin.output.Where(t => t.terminalno == e.ArrIDX).FirstOrDefault(); | ||||
|                 if (doPin == null) | ||||
|                 { | ||||
|                     PUB.log.AddE($"DO INDEX:{e.ArrIDX} 에 해당하는 터미널 대상이 없습니다"); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     var pin = (eDOName)doPin.idx; | ||||
|  | ||||
|                     if (AR.SETTING.Data.Log_DO) | ||||
|                     { | ||||
|                         //타워램프는 제외하낟. | ||||
|                         if (e.ArrIDX != (byte)eDOName.TWR_GRNF && | ||||
|                             e.ArrIDX != (byte)eDOName.TWR_REDF && | ||||
|                             e.ArrIDX != (byte)eDOName.TWR_YELF && | ||||
|                             e.ArrIDX != (byte)eDOName.BUT_STARTF && | ||||
|                             e.ArrIDX != (byte)eDOName.BUT_STOPF && | ||||
|                             e.ArrIDX != (byte)eDOName.BUT_RESETF) | ||||
|                             PUB.log.Add("DIO", String.Format("DO:IDX={0},DIR={1},VAL={2}", e.ArrIDX, e.Direction, e.NewValue)); | ||||
|                     } | ||||
|                     _DIO_OUTPUT_VALUE_CHANGED(pin, e.NewValue); | ||||
|  | ||||
|                 } | ||||
|                | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		void _DIO_IOMessage(object sender, arDev.DIO.MessageEventArgs e) | ||||
| 		{ | ||||
| 			if (e.IsError) | ||||
| 			{ | ||||
| 				if (e.Message.ToLower().IndexOf("inposi") != -1 || e.Message.ToLower().IndexOf("동일위치") != -1) | ||||
| 				{ | ||||
| 					PUB.log.AddAT("DIO:" + e.Message); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					PUB.log.AddE("DIO:" + e.Message); | ||||
| 				} | ||||
| 			} | ||||
| 			else PUB.log.Add("DIO:" + e.Message); | ||||
| 		} | ||||
|  | ||||
| 		//void IO_SaftySensor_Changed(eDIName pin, eFlag flag, eVar_Date varDt_On, eVar_Date varDt_Off, bool value) | ||||
| 		//{ | ||||
| 		//    //안전센서는 일정 시간 동작하는것을 체크한다 | ||||
| 		//    Pub.log.AddAT(string.Format("{0} Sensor : {1}", pin, value)); | ||||
| 		//    if (value) Pub.Var_dateTime[(int)varDt_On] = DateTime.Now; | ||||
| 		//    else Pub.Var_dateTime[(int)varDt_Off] = DateTime.Now; | ||||
| 		//} | ||||
|  | ||||
| 		void IncCount(int seq, int port, int value = 1) | ||||
| 		{ | ||||
| 			if (PUB.counter.DateStr != DateTime.Now.ToShortDateString()) | ||||
| 			{ | ||||
| 				if (port == 0) PUB.counter.CountDP1 = value; | ||||
| 				if (port == 1) PUB.counter.CountDP2 = value; | ||||
| 				if (port == 2) PUB.counter.CountDP3 = value; | ||||
| 				if (port == 3) PUB.counter.CountDP4 = value; | ||||
| 				PUB.counter.DateStr = DateTime.Now.ToShortDateString(); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				if (port == 0) PUB.counter.CountDP1 += value; | ||||
| 				if (port == 1) PUB.counter.CountDP2 += value; | ||||
| 				if (port == 2) PUB.counter.CountDP3 += value; | ||||
| 				if (port == 3) PUB.counter.CountDP4 += value; | ||||
| 			} | ||||
|  | ||||
|  | ||||
| 			//각 포트별 수량은 차수별 작업이므로 차수가 변경되면 리셋됨 | ||||
| 			//리셋되는 코드 필요함 | ||||
| 			if (port == 0) PUB.counter.CountP0 += value; | ||||
| 			if (port == 1) PUB.counter.CountP1 += value; | ||||
| 			if (port == 2) PUB.counter.CountP2 += value; | ||||
| 			if (port == 3) PUB.counter.CountPrintR += value; | ||||
| 			else | ||||
| 			{ | ||||
| 				PUB.log.AddAT(string.Format("[{0}] 미지정 포트이므로 수량 증가 불가", seq)); | ||||
| 			} | ||||
|  | ||||
| 			//Pub.log.AddI("수량정보가 저장 되었습니다"); | ||||
| 			PUB.counter.Save(); | ||||
| 		} | ||||
|  | ||||
|  | ||||
|  | ||||
| 		 | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 ChiKyun Kim
					ChiKyun Kim