123 lines
4.0 KiB
C#
123 lines
4.0 KiB
C#
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();
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|