12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457 |
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- using Aitex.Core.RT.Log;
- using Aitex.Core.UI.MVVM;
- using Aitex.Core.Util;
- using Aitex.Core.Utilities;
- using MECF.Framework.Common.Communications.Tcp.Socket.Server.APM.EventArgs;
- using MECF.Framework.Simulator.Core.Commons;
- using MECF.Framework.Simulator.Core.Driver;
- using MECF.Framework.Simulator.Core.LoadPorts;
- namespace EfemDualSimulator.Views
- {
- public partial class EfemView : UserControl
- {
- public EfemView()
- {
- InitializeComponent();
- this.Loaded += OnViewLoaded;
- }
- private void OnViewLoaded(object sender, RoutedEventArgs e)
- {
- if (DataContext == null)
- {
- DataContext = new EfemViewModel(13000, 0);
- (DataContext as TimerViewModelBase).Start();
- }
- }
- }
- class EfemViewModel : SocketDeviceViewModel
- {
- public string Title
- {
- get { return "Efem Simulator"; }
- }
- public string LP1WaferMap
- {
- get { return _sim.LP1SlotMap; }
- }
- public string LP2WaferMap
- {
- get { return _sim.LP2SlotMap; }
- }
- public string LP3WaferMap
- {
- get { return _sim.LP3SlotMap; }
- }
- public string LP1InfoPadStatus
- {
- get { return _sim.LP1InforPadState; }
- }
- public string LP2InfoPadStatus
- {
- get { return _sim.LP2InforPadState; }
- }
- public string LP3InfoPadStatus
- {
- get { return _sim.LP3InforPadState; }
- }
- private string _selectEfem = "FutureEfem2P";
- public string SelectEFEM { get { return _selectEfem; } set { _selectEfem = value; _sim.SelectEFEM = value; } }
- public ObservableCollection<string> EFEMList { get; set; }
- [IgnorePropertyChange]
- public string InfoPadSet { get; set; }
- public ObservableCollection<WaferItem> WaferList { get; set; }
- public ICommand PlaceCommand { get; set; }
- public ICommand RemoveCommand { get; set; }
- public ICommand ClearCommand { get; set; }
- public ICommand SetAllCommand { get; set; }
- public ICommand RandomCommand { get; set; }
- public ICommand SetInfoPadCommand { get; set; }
- private EfemSimulator _sim;
- public EfemViewModel(int port, int index) : base("EfemViewModel")
- {
- PlaceCommand = new DelegateCommand<string>(Place);
- RemoveCommand = new DelegateCommand<string>(Remove);
- ClearCommand = new DelegateCommand<string>(Clear);
- SetAllCommand = new DelegateCommand<string>(SetAll);
- RandomCommand = new DelegateCommand<string>(RandomGenerateWafer);
- SetInfoPadCommand = new DelegateCommand<string>(SetInfoPadStatus);
- _sim = new EfemSimulator(port);
- Init(_sim);
- WaferList = new ObservableCollection<WaferItem>()
- {
- new WaferItem {Display = "1", Index = 2, State = 3}
- };
- if (index == 1)
- {
- _sim.SetUpWafer("LP1");
- _sim.SetUpWafer("LP2");
- _sim.SetUpWafer("LP3");
- }
- else
- {
- _sim.SetLowWafer("LP1");
- _sim.SetUpWafer("LP2");
- _sim.SetLowWafer("LP3");
- }
- EFEMList = new ObservableCollection<string>() { "FutureEfem2P", "JetEfem", "FutureEfem3P" };
- SelectEFEM = EFEMList[0];
- }
- private void SetInfoPadStatus(string obj)
- {
- if (obj == "LP1")
- {
- _sim.LP1InforPadState = InfoPadSet;
- }
- if (obj == "LP2")
- {
- _sim.LP2InforPadState = InfoPadSet;
- }
- if (obj == "LP3")
- {
- _sim.LP3InforPadState = InfoPadSet;
- }
- }
- private void RandomGenerateWafer(string obj)
- {
- _sim.RandomWafer(obj);
- }
- private void SetAll(string obj)
- {
- _sim.SetAllWafer(obj);
- }
- private void Clear(string obj)
- {
- _sim.ClearWafer(obj);
- }
- private void Remove(string obj)
- {
- _sim.RemoveCarrier(obj);
- }
- private void Place(string obj)
- {
- _sim.PlaceCarrier(obj);
- }
- }
- public class EfemSimulator : SocketDeviceSimulator
- {
- public string LP1SlotMap
- {
- get { return string.Join("", _lp1slotMap); }
- }
- public string LP2SlotMap
- {
- get { return string.Join("", _lp2slotMap); }
- }
- public string LP3SlotMap
- {
- get { return string.Join("", _lp3slotMap); }
- }
- public string SelectEFEM { get; set; }
- //public event Action<string> WriteDeviceEvent;
- private bool[] _lp1SigStateData1 = new bool[32];
- private bool[] _lp1SigStateData2 = new bool[32];
- private bool[] _lp2SigStateData1 = new bool[32];
- private bool[] _lp2SigStateData2 = new bool[32];
- private bool[] _lp3SigStateData1 = new bool[32];
- private bool[] _lp3SigStateData2 = new bool[32];
- private string[] _lp1slotMap = new string[25];
- private string[] _lp2slotMap = new string[25];
- private string[] _lp3slotMap = new string[25];
- private string[] _stationslotMap = new string[25];
- public string LP1InforPadState { get; set; } = "0";
- public string LP2InforPadState { get; set; } = "0";
- public string LP3InforPadState { get; set; } = "0";
- public string LP1Mode { get; set; } = "MANUAL";
- public string LP2Mode { get; set; } = "MANUAL";
- public string LP3Mode { get; set; } = "MANUAL";
- //private LpState _lp1State;
- //private E84State _lp1E84State;
- //private SystemState _systemState;
- //private bool _isPlaced;
- //private bool _isPresent;
- //private int _moveTime = 5000; //
- private PeriodicJob _HwThread;
- private bool _bCommReady;
- public EfemSimulator(int tcpPort)
- : base(tcpPort, -1, "\r", ' ')
- {
- for (int i = 0; i < _lp1slotMap.Length; i++)
- _lp1slotMap[i] = "0";
- for (int i = 0; i < _lp2slotMap.Length; i++)
- _lp2slotMap[i] = "0";
- for (int i = 0; i < _lp3slotMap.Length; i++)
- _lp3slotMap[i] = "0";
- for (int i = 0; i < _stationslotMap.Length; i++)
- _stationslotMap[i] = "0";
- for (int i = 0; i < _lp1SigStateData1.Length; i++)
- _lp1SigStateData1[i] = false;
- for (int i = 0; i < _lp1SigStateData2.Length; i++)
- _lp1SigStateData2[i] = false;
- for (int i = 0; i < _lp2SigStateData1.Length; i++)
- _lp2SigStateData1[i] = false;
- for (int i = 0; i < _lp2SigStateData2.Length; i++)
- _lp2SigStateData2[i] = false;
- for (int i = 0; i < _lp3SigStateData1.Length; i++)
- _lp3SigStateData1[i] = false;
- for (int i = 0; i < _lp3SigStateData2.Length; i++)
- _lp3SigStateData2[i] = false;
- _lp1SigStateData1[0] = false; //LP Placement
- _lp1SigStateData1[1] = false; //Pod Present
- _lp1SigStateData1[2] = false; //Access SW
- _lp1SigStateData1[3] = false; //Pod lock
- _lp1SigStateData1[4] = false; //Cover close
- _lp1SigStateData1[5] = false; // Cover lock
- _lp1SigStateData1[6] = false;
- _lp1SigStateData1[7] = false;
- _lp1SigStateData1[8] = false; //Info pad A
- _lp1SigStateData1[9] = false; //Info pad B
- _lp1SigStateData1[10] = false; //Info pad C
- _lp1SigStateData1[11] = false; //Info pad D
- _lp1SigStateData1[24] = false; //VALID (E84)
- _lp1SigStateData1[25] = false; //CS_0 (E84)
- _lp1SigStateData1[26] = false; //CS_1 (E84)
- _lp1SigStateData1[27] = false; //Valid
- _lp1SigStateData1[28] = false; //TR_REQ (E84)
- _lp1SigStateData1[29] = false; //BUSY (E84)
- _lp1SigStateData1[30] = false; //COMPT (E84)
- _lp1SigStateData1[31] = false; //CONT (E84)
- _lp1SigStateData2[0] = false; //PRESENCE
- _lp1SigStateData2[1] = false; //PLACEMENT
- _lp1SigStateData2[2] = false; //LOAD
- _lp1SigStateData2[3] = false; //UNLOAD
- _lp1SigStateData2[4] = false; //MANUAL MODE
- _lp1SigStateData2[5] = false; //ERROR
- _lp1SigStateData2[6] = false; //CLAMP / UNCLAMP
- _lp1SigStateData2[7] = false; //DOCK/UNDOCK
- _lp1SigStateData2[8] = false; //ACCESS SW
- //A000A 41010 10001 01000
- _lp2SigStateData1[0] = false; //LP Placement
- _lp2SigStateData1[1] = false; //Pod Present
- _lp2SigStateData1[2] = false; //Access SW
- _lp2SigStateData1[3] = false; //Pod lock
- _lp2SigStateData1[4] = false; //Cover close
- _lp2SigStateData1[5] = false; // Cover lock
- _lp2SigStateData1[6] = false;
- _lp2SigStateData1[7] = false;
- _lp2SigStateData1[8] = false; //Info pad A
- _lp2SigStateData1[9] = false; //Info pad B
- _lp2SigStateData1[10] = false; //Info pad C
- _lp2SigStateData1[11] = false; //Info pad D
- _lp2SigStateData1[24] = false; //VALID (E84)
- _lp2SigStateData1[25] = false; //CS_0 (E84)
- _lp2SigStateData1[26] = false; //CS_1 (E84)
- _lp2SigStateData1[27] = false; //Valid
- _lp2SigStateData1[28] = false; //TR_REQ (E84)
- _lp2SigStateData1[29] = false; //BUSY (E84)
- _lp2SigStateData1[30] = false; //COMPT (E84)
- _lp2SigStateData1[31] = false; //CONT (E84)
- _lp2SigStateData2[0] = false; //PRESENCE
- _lp2SigStateData2[1] = false; //PLACEMENT
- _lp2SigStateData2[2] = false; //LOAD
- _lp2SigStateData2[3] = false; //UNLOAD
- _lp2SigStateData2[4] = false; //MANUAL MODE
- _lp2SigStateData2[5] = false; //ERROR
- _lp2SigStateData2[6] = false; //CLAMP / UNCLAMP
- _lp2SigStateData2[7] = false; //DOCK/UNDOCK
- _lp2SigStateData2[8] = false; //ACCESS SW
- //A000A 41010 10001 01000
- _lp3SigStateData1[0] = false; //LP Placement
- _lp3SigStateData1[1] = false; //Pod Present
- _lp3SigStateData1[2] = false; //Access SW
- _lp3SigStateData1[3] = false; //Pod lock
- _lp3SigStateData1[4] = false; //Cover close
- _lp3SigStateData1[5] = false; // Cover lock
- _lp3SigStateData1[6] = false;
- _lp3SigStateData1[7] = false;
- _lp3SigStateData1[8] = false; //Info pad A
- _lp3SigStateData1[9] = false; //Info pad B
- _lp3SigStateData1[10] = false; //Info pad C
- _lp3SigStateData1[11] = false; //Info pad D
- _lp3SigStateData1[24] = false; //VALID (E84)
- _lp3SigStateData1[25] = false; //CS_0 (E84)
- _lp3SigStateData1[26] = false; //CS_1 (E84)
- _lp3SigStateData1[27] = false; //Valid
- _lp3SigStateData1[28] = false; //TR_REQ (E84)
- _lp3SigStateData1[29] = false; //BUSY (E84)
- _lp3SigStateData1[30] = false; //COMPT (E84)
- _lp3SigStateData1[31] = false; //CONT (E84)
- _lp3SigStateData2[0] = false; //PRESENCE
- _lp3SigStateData2[1] = false; //PLACEMENT
- _lp3SigStateData2[2] = false; //LOAD
- _lp3SigStateData2[3] = false; //UNLOAD
- _lp3SigStateData2[4] = false; //MANUAL MODE
- _lp3SigStateData2[5] = false; //ERROR
- _lp3SigStateData2[6] = false; //CLAMP / UNCLAMP
- _lp3SigStateData2[7] = false; //DOCK/UNDOCK
- _lp3SigStateData2[8] = false; //ACCESS SW
- BinaryDataMode = false;
- }
- //public void ChangeSlotMap(SlotMapChangedEventArgs obj)
- //{
- // string slotMap = obj.SlotMap.Replace("'", "");
- // for (int i = 0; i < slotMap.Length; i++)
- // _slotMap[i] = slotMap.Substring(i, 1);
- //}
- public override void ClientConnected(object sender, TcpClientConnectedEventArgs e)
- {
- base.ClientConnected(sender, e);
- Thread.Sleep(10);
- OnWriteMessage("INF:READY/COMM;");
- LOG.Info("Send message " + "INF:READY/COMM;");
- _HwThread = new PeriodicJob(5000, OnSendEvent, "EfemHardware", true);
- }
- private bool OnSendEvent()
- {
- if (!_bCommReady)
- {
- OnWriteMessage("INF:READY/COMM;");
- }
- return true;
- }
- protected override void ProcessUnsplitMessage(string message)
- {
- LOG.Info("Received message " + message);
- string[] msg = message.Split(':');
- if (msg.Length < 2)
- return;
- if (!_bCommReady && message.Contains("ACK:READY/COMM"))
- {
- _bCommReady = true;
- }
- string type = msg[0];
- string cmd = msg[1];
- switch (type)
- {
- case "SET":
- ReceiveSetCommand(cmd);
- break;
- case "MOD":
- ReceiveModCommand(cmd);
- break;
- case "GET":
- ReceiveGetCommand(cmd);
- break;
- case "FIN":
- ReceiveFinCommand(cmd);
- break;
- case "MOV":
- ReceiveMovCommand(cmd);
- break;
- case "EVT":
- ReceiveEvtCommand(cmd);
- break;
- case "TCH":
- ReceiveTchCommand(cmd);
- break;
- default:
- ReceiveUnknownCommand(message);
- break;
- }
- }
- private void ReceiveMovCommand(string cmd)
- {
- bool needINF = true;
- string[] data = cmd.Split('/');
- bool needSendMap = false;
- switch (data[0])
- {
- case "INIT":
- break;
- case "ORGSH": //back to initial
- if (data[1] == "ALL")
- {
- }
- if (data[1] == "P1")
- {
- }
- if (data[1] == "P2")
- {
- }
- break;
- case "ABORG": //Force back to initial
- break;
- case "UNLOCK": //FOUP clamp: Close
- ReceiveCommandUNLOCK(data[1]);
- break;
- case "LOCK": //FOUP clamp: open
- ReceiveCommandLOCK(data[1]);
- break;
- case "DOCK": //FOUP dock:
- ReceiveCommandDOCK(data[1]);
- break;
- case "UNDOCK": //FOUP undock
- ReceiveCommandUNDOCK(data[1]);
- break;
- case "OPEN": //Door open
- ReceiveCommandOPEN(data[1]);
- break;
- case "CLOSE": //Door Close
- ReceiveCommandCLOSE(data[1]);
- break;
- case "WAFSH": //Map
- needSendMap = true;
- break;
- case "GOTO": //Maps and loads the FOUP.
- break;
- case "CSTID":
- break;
- default:
- break;
- }
- SendAck(cmd);
- Thread.Sleep(200);
- if (needINF)
- {
- if (needSendMap)
- {
- Thread.Sleep(200);
- SendMapEvent(data[1]);
- }
- if (data[0] == "CSTID")
- FeedbackCarrierID(cmd);
- else
- SendInf(cmd);
- }
- }
- private void ReceiveCommandCLOSE(string module)
- {
- module = module.Replace(";", "").Replace("\r", "");
- if (module == "P1")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp1SigStateData1[3] = false;
- _lp1SigStateData1[4] = false;
- _lp1SigStateData1[5] = false;
- }
- else
- {
- _lp1SigStateData1[5] = false;
- _lp1SigStateData1[11] = false;
- }
- }
- if (module == "P2")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp2SigStateData1[3] = false;
- _lp2SigStateData1[4] = false;
- _lp2SigStateData1[5] = false;
- }
- else
- {
- _lp2SigStateData1[5] = false;
- _lp2SigStateData1[11] = false;
- }
- }
- if (module == "P3")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp3SigStateData1[3] = false;
- _lp3SigStateData1[4] = false;
- _lp3SigStateData1[5] = false;
- }
- else
- {
- _lp3SigStateData1[5] = false;
- _lp3SigStateData1[11] = false;
- }
- }
- }
- private void ReceiveCommandOPEN(string module)
- {
- module = module.Replace(";", "").Replace("\r", "");
- if (module == "P1")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp1SigStateData1[4] = true;
- _lp1SigStateData1[5] = true;
- }
- else
- {
- _lp1SigStateData1[5] = true;
- _lp1SigStateData1[11] = true;
- }
- }
- if (module == "P2")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp2SigStateData1[4] = true;
- _lp2SigStateData1[5] = true;
- }
- else
- {
- _lp2SigStateData1[5] = true;
- _lp2SigStateData1[11] = true;
- }
- }
- if (module == "P3")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp3SigStateData1[4] = true;
- _lp3SigStateData1[5] = true;
- }
- else
- {
- _lp3SigStateData1[5] = true;
- _lp3SigStateData1[11] = true;
- }
- }
- }
- private void ReceiveCommandDOCK(string module)
- {
- module = module.Replace(";", "").Replace("\r", "");
- if (module == "P1")
- _lp1SigStateData1[5] = true;
- if (module == "P2")
- _lp2SigStateData1[5] = true;
- if (module == "P3")
- _lp3SigStateData1[5] = true;
- }
- private void ReceiveCommandUNDOCK(string module)
- {
- module = module.Replace(";", "").Replace("\r", "");
- if (module == "P1")
- _lp1SigStateData1[5] = false;
- if (module == "P2")
- _lp2SigStateData1[5] = false;
- if (module == "P3")
- _lp3SigStateData1[5] = false;
- }
- private void ReceiveCommandLOCK(string module)
- {
- module = module.Replace(";", "").Replace("\r", "");
- if (module == "P1")
- _lp1SigStateData1[3] = true;
- if (module == "P2")
- _lp2SigStateData1[3] = true;
- if (module == "P3")
- _lp3SigStateData1[3] = true;
- }
- private void ReceiveCommandUNLOCK(string module)
- {
- module = module.Replace(";", "").Replace("\r", "");
- if (module == "P1")
- _lp1SigStateData1[3] = false;
- if (module == "P2")
- _lp2SigStateData1[3] = false;
- if (module == "P3")
- _lp3SigStateData1[3] = false;
- }
- private void ReceiveSetCommand(string cmd)
- {
- string[] data = cmd.Split('/');
- switch (data[0])
- {
- case "LED":
- if (data[1] == "P1")
- {
- if (data[2] == "LOAD")
- {
- if (data[3] == "ON")
- {
- _lp1SigStateData2[2] = true;
- }
- else _lp1SigStateData2[2] = false;
- }
- if (data[2] == "UNLOAD")
- {
- if (data[3] == "ON")
- {
- _lp1SigStateData2[3] = true;
- }
- else _lp1SigStateData2[3] = false;
- }
- if (data[2] == "MANUAL MODE")
- {
- if (data[3] == "ON")
- {
- _lp1SigStateData2[4] = true;
- }
- else _lp1SigStateData2[4] = false;
- }
- }
- if (data[1] == "P2")
- {
- if (data[2] == "LOAD")
- {
- if (data[3] == "ON")
- {
- _lp2SigStateData2[2] = true;
- }
- else _lp2SigStateData2[2] = false;
- }
- if (data[2] == "UNLOAD")
- {
- if (data[3] == "ON")
- {
- _lp2SigStateData2[3] = true;
- }
- else _lp2SigStateData2[3] = false;
- }
- if (data[2] == "MANUAL MODE")
- {
- if (data[3] == "ON")
- {
- _lp2SigStateData2[4] = true;
- }
- else _lp2SigStateData2[4] = false;
- }
- }
- break;
- case "SIZE":
- if (data[1] == "ARM1")
- robotArm1Wafersize = data[2];
- if (data[1] == "ARM2")
- robotArm2Wafersize = data[2];
- if (data[1] == "ALIGN1")
- alignerwafersize = data[2];
- break;
- case "MODE":
- if (data[1] == "P1")
- LP1Mode = data[2].Remove(data[2].Length-1);
- else if (data[1]=="P2")
- LP2Mode = data[2].Remove(data[2].Length - 1);
- else if (data[1]=="P3")
- LP3Mode = data[2].Remove(data[2].Length - 1);
- break;
- }
- SendAck(cmd);
- if (cmd.Contains("FSB") || data[0]=="MODE") return;
- SendInf(cmd);
- }
- private void ReceiveModCommand(string cmd)
- {
- SendAck(cmd);
- }
- #region GET Command
- private void ReceiveGetCommand(string cmdGet)
- {
- string message = $"ACK:{cmdGet}";
- OnWriteMessage(message);
- string[] data = cmdGet.Split('/');
- switch (data[0])
- {
- case "MAPDT":
- FeedbackGetWaferMapDescendingOrder(cmdGet);
- break;
- case "ERROR":
- break;
- case "CLAMP":
- break;
- case "STATE":
- FeedbackGetStatus(cmdGet);
- break;
- case "MODE":
- FeedbackMode(cmdGet);
- break;
- case "TRANSREQ":
- break;
- case "SIGSTAT":
- FeedbackGetSigStatus(cmdGet);
- break;
- case "EVENT":
- break;
- case "CSTID":
- FeedbackCarrierID(cmdGet);
- break;
- case "SIZE":
- FeedbackWaferSize(cmdGet);
- break;
- case "ADPLOCK":
- break;
- case "ADPUNLOCK":
- break;
- }
- }
- private void FeedbackWaferSize(string cmdGet)
- {
- //string message = string.Format("s00ACK:{0}/{1};\r", cmd, string.Join("", _state));
- string[] data = cmdGet.Replace(";", "").Split('/');
- string message = $"INF:{cmdGet.Replace(";", "")}/{robotArm1Wafersize};";
- if (message.Contains("BF1") || message.Contains("BF2") || message.Contains("BF3"))
- message = message.Replace("300", "NONE");
- if (message.Contains("STATION"))
- message = message.Replace("300", "NONE");
- OnWriteMessage(message);
- }
- private string robotArm1Wafersize = "300";
- private string robotArm2Wafersize = "300";
- private string alignerwafersize = "300";
- private int _cid = 0;
- private void FeedbackCarrierID(string cmd)
- {
- _cid++;
- //string message = $"INF:{cmd.Replace(";", "")}/{_cid};\r";
- string message = $"INF:{cmd.Replace(";", "")}/CST:C0000{_cid} TYPE:CST25_AU LOT:AZ0000{_cid} QTY:24 FLOW:033000 STATUS:HOLD PRI:3-1 PD:0418A CSRLOT: CLEAN:2021/11/14 19:57:50 EQPGRP:DUMMY STAGE:CP-TEST1 RECIPE:DUMMY EMP:N . ;\r";
- OnWriteMessage(message);
- }
- private void FeedbackMode(string cmd)
- {
- string[] data = cmd.Split('/');
- string reply = "";
- string lp = data[1].Replace(";", "");
- if (lp=="P1")
- {
- reply = LP1Mode;
- }
- else if (lp=="P2")
- {
- reply = LP2Mode;
- }
- else if (lp=="P3")
- {
- reply=LP3Mode;
- }
- string message = $"INF:{cmd.Replace(";", "")}/{reply};\r";
- OnWriteMessage(message);
- }
- private void FeedbackGetStatus(string cmd)
- {
- //string message = string.Format("s00ACK:{0}/{1};\r", cmd, string.Join("", _state));
- string[] data = cmd.Split('/');
- string reply = "";
- if (data[1] == "TRACK;")
- {
- reply = "00000";
- }
- if (data[1] == "VER;")
- {
- reply = "01.000(2021-03-11)";
- }
- if (data[1] == "INF1;")
- {
- reply = "0.06";
- }
- string message = $"INF:{cmd.Replace(";", "")}/{reply};\r";
- OnWriteMessage(message);
- }
- private void FeedbackGetSigStatus(string cmd)
- {
- string message = "";
- string[] data = cmd.Split('/');
- if (data[1] == "SYSTEM;")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- message = "FFFF/FFFF";
- }
- else
- {
- message = "FFC5/FFFF";
- }
- }
- if (data[1] == "P1;")
- {
- message = $"{ConvertBinToHexString(_lp1SigStateData1)}/{ConvertBinToHexString(_lp1SigStateData2)}";
- }
- if (data[1] == "P2;")
- {
- message = $"{ConvertBinToHexString(_lp2SigStateData1)}/{ConvertBinToHexString(_lp2SigStateData2)}";
- }
- if (data[1] == "P3;")
- {
- message = $"{ConvertBinToHexString(_lp3SigStateData1)}/{ConvertBinToHexString(_lp3SigStateData2)}";
- }
- string datamsg = $"INF:{cmd.Replace(";", "")}/{message};\r";
- OnWriteMessage(datamsg);
- }
- private void FeedbackGetVersion()
- {
- }
- private void SendMapEvent(string module)
- {
- module = module.Replace(";", "").Replace("\r", "");
- var sm = _lp1slotMap.Reverse();
- if (module.Contains("P1"))
- sm = _lp1slotMap.Reverse();
- if (module.Contains("P2"))
- sm = _lp2slotMap.Reverse();
- if (module.Contains("P3"))
- sm = _lp3slotMap.Reverse();
- if (module.Contains("STATION"))
- sm = _stationslotMap.Reverse();
- if (module.Contains("LL"))
- sm = new string[] { "00000000" };
- if (module.Contains("BF"))
- sm = new string[] { "00000000" };
- string message = $"EVT:MAPDT/{module}/{string.Join("", sm)};\r";
- OnWriteMessage(message);
- }
- //25 - 1
- private void FeedbackGetWaferMapDescendingOrder(string cmd)
- {
- var sm = _lp1slotMap.Reverse();
- if (cmd.Contains("P1"))
- sm = _lp1slotMap.Reverse();
- if (cmd.Contains("P2"))
- sm = _lp2slotMap.Reverse();
- if (cmd.Contains("P3"))
- sm = _lp3slotMap.Reverse();
- if (cmd.Contains("STATION"))
- sm = _stationslotMap.Reverse();
- if (cmd.Contains("LL"))
- sm = new string[] { "00000000" };
- if (cmd.Contains("BF"))
- sm = new string[] { "00000000" };
- string message = $"INF:{cmd.Replace(";", "")}/{string.Join("", sm)};\r";
- OnWriteMessage(message);
- }
- //1-25
- private void FeedbackGetWaferCount()
- {
- }
- #endregion GET Command
- private void ReceiveFinCommand(string cmd)
- {
- SendAck(cmd);
- }
- private void ReceiveEvtCommand(string cmd)
- {
- SendAck(cmd);
- }
- private void ReceiveTchCommand(string cmd)
- {
- SendAck(cmd);
- }
- private void ReceiveUnknownCommand(string message)
- {
- //LOG.Write("LoadPort" + _loadPortNumber + " Receive Unknown message," + message);
- }
- private void SendInf(string cmd)
- {
- Thread.Sleep(1500);
- //string msg = _isPlaced ? "s00INF:PODON;\r" : "s00INF:PODOF;\r";
- string message = Encoding.ASCII.GetString(BuildMesage($"INF:{cmd}"));
- OnWriteMessage("INF:" + cmd);
- LOG.Info("Send message " + "INF:" + cmd);
- }
- private void SendAck(string cmd)
- {
- string ack = Encoding.ASCII.GetString(BuildMesage($"ACK:{cmd}"));
- OnWriteMessage("ACK:" + cmd);
- LOG.Info("Send message " + "ACK:" + cmd);
- }
- public static byte[] BuildMesage(string data)
- {
- List<byte> ret = new List<byte>();
- ret.Add(0x1);
- List<byte> cmd = new List<byte>();
- foreach (char c in data)
- {
- cmd.Add((byte)c);
- }
- //cmd.Add((byte)(':')); //3A
- cmd.Add((byte)(';')); //3B
- int length = cmd.Count + 4;
- int checksum = length;
- foreach (byte bvalue in cmd)
- {
- checksum += bvalue;
- }
- byte[] byteschecksum = Encoding.ASCII.GetBytes(Convert.ToString((int)((byte)(checksum & 0xFF)), 16));
- byte[] blength = BitConverter.GetBytes((short)length);
- ret.Add(blength[1]);
- ret.Add(blength[0]);
- ret.AddRange(new byte[] { 0, 0 });
- ret.AddRange(cmd);
- ret.AddRange(byteschecksum);
- ret.Add(0xD);
- return ret.ToArray();
- }
- public void PlaceCarrier(string lp)
- {
- string message = "";
- if (lp == "P1")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp1SigStateData1[0] = true; //LP Placement
- _lp1SigStateData1[1] = false; //Pod Present.
- _lp1SigStateData1[5] = false;//true;
- _lp1SigStateData1[6] = true; //wafer size 8.
- _lp1SigStateData1[7] = false; //wafer size 12.
- _lp1SigStateData1[24] = false; //e84 VALID
- _lp1SigStateData1[25] = true; //e84 CS0
- _lp1SigStateData1[26] = true; //e84 CS1
- _lp1SigStateData1[28] = true; //e84 TR_REQ
- _lp1SigStateData1[29] = false; //e84 BUSY
- _lp1SigStateData1[30] = true; //e84 COMPT
- _lp1SigStateData1[31] = false; //e84 CONT
- _lp1SigStateData2[24] = true; //E84 L_REQ
- _lp1SigStateData2[25] = true; //E84 U_REQ
- _lp1SigStateData2[27] = true; //E84 READY
- _lp1SigStateData2[30] = true; //E84 HO_AVBL
- _lp1SigStateData2[31] = true; //E84 ES
- }
- else
- {
- _lp1SigStateData1[0] = true; //LP Placement
- _lp1SigStateData1[1] = false; //Pod Present.
- _lp1SigStateData1[6] = true; //wafer size 8.
- _lp1SigStateData1[7] = true; //wafer size 12.
- _lp1SigStateData1[8] = true;
- _lp1SigStateData1[9] = true;
- _lp1SigStateData1[11] = false;
- _lp1SigStateData1[24] = true; //e84 VALID
- _lp1SigStateData1[25] = true; //e84 CS0
- _lp1SigStateData1[26] = false; //e84 CS1
- _lp1SigStateData1[28] = true; //e84 TR_REQ
- _lp1SigStateData1[29] = false; //e84 BUSY
- _lp1SigStateData1[30] = true; //e84 COMPT
- _lp1SigStateData1[31] = true; //e84 CONT
- _lp1SigStateData2[24] = true; //E84 L_REQ
- _lp1SigStateData2[25] = true; //E84 U_REQ
- _lp1SigStateData2[27] = true; //E84 READY
- _lp1SigStateData2[30] = true; //E84 HO_AVBL
- _lp1SigStateData2[31] = true; //E84 ES
- }
- message = $"EVT:SIGSTAT/{lp}/{ConvertBinToHexString(_lp1SigStateData1)}" +
- $"/{ConvertBinToHexString(_lp1SigStateData2)}";
- }
- if (lp == "P2")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp2SigStateData1[0] = true; //LP Placement
- _lp2SigStateData1[1] = false; //Pod Present
- _lp2SigStateData1[5] = false;//true;
- _lp2SigStateData1[6] = true; //wafer size 8.
- _lp2SigStateData1[7] = false; //wafer size 12.
- _lp1SigStateData1[24] = true; //e84 VALID
- _lp1SigStateData1[25] = true; //e84 CS0
- _lp1SigStateData1[26] = true; //e84 CS1
- _lp1SigStateData1[28] = true; //e84 TR_REQ
- _lp1SigStateData1[29] = true; //e84 BUSY
- _lp1SigStateData1[30] = true; //e84 COMPT
- _lp1SigStateData1[31] = true; //e84 CONT
- _lp1SigStateData2[24] = true; //E84 L_REQ
- _lp1SigStateData2[25] = true; //E84 U_REQ
- _lp1SigStateData2[27] = true; //E84 READY
- _lp1SigStateData2[30] = true; //E84 HO_AVBL
- _lp1SigStateData2[31] = true; //E84 ES
- }
- else
- {
- _lp2SigStateData1[0] = true; //LP Placement
- _lp2SigStateData1[1] = false; //Pod Present.
- _lp2SigStateData1[6] = true; //wafer size 8.
- _lp2SigStateData1[7] = true; //wafer size 12.
- _lp2SigStateData1[8] = true;
- _lp2SigStateData1[9] = true;
- _lp2SigStateData1[11] = false;
- _lp2SigStateData1[24] = true; //e84 VALID
- _lp2SigStateData1[25] = true; //e84 CS0
- _lp2SigStateData1[26] = true; //e84 CS1
- _lp2SigStateData1[28] = true; //e84 TR_REQ
- _lp2SigStateData1[29] = true; //e84 BUSY
- _lp2SigStateData1[30] = true; //e84 COMPT
- _lp2SigStateData1[31] = true; //e84 CONT
- _lp2SigStateData2[24] = true; //E84 L_REQ
- _lp2SigStateData2[25] = true; //E84 U_REQ
- _lp2SigStateData2[27] = true; //E84 READY
- _lp2SigStateData2[30] = true; //E84 HO_AVBL
- _lp2SigStateData2[31] = true; //E84 ES
- }
- message = $"EVT:SIGSTAT/{lp}/{ConvertBinToHexString(_lp2SigStateData1)}" +
- $"/{ConvertBinToHexString(_lp2SigStateData2)}";
- }
- if (lp == "P3")
- {
- if (SelectEFEM == "FutureEfem3P")
- {
- _lp3SigStateData1[0] = true; //LP Placement
- _lp3SigStateData1[1] = false; //Pod Present
- _lp3SigStateData1[5] = false;//true;
- _lp3SigStateData1[6] = false; //wafer size 8.
- _lp3SigStateData1[7] = true; //wafer size 12.
- _lp2SigStateData1[24] = true; //e84 VALID
- _lp2SigStateData1[25] = true; //e84 CS0
- _lp2SigStateData1[26] = true; //e84 CS1
- _lp2SigStateData1[28] = true; //e84 TR_REQ
- _lp2SigStateData1[29] = true; //e84 BUSY
- _lp2SigStateData1[30] = true; //e84 COMPT
- _lp2SigStateData1[31] = true; //e84 CONT
- _lp2SigStateData2[24] = true; //E84 L_REQ
- _lp2SigStateData2[25] = true; //E84 U_REQ
- _lp2SigStateData2[27] = true; //E84 READY
- _lp2SigStateData2[30] = true; //E84 HO_AVBL
- _lp2SigStateData2[31] = true; //E84 ES
- }
- else
- {
- _lp3SigStateData1[0] = true; //LP Placement
- _lp3SigStateData1[1] = false; //Pod Present
- _lp3SigStateData1[6] = false; //wafer size 8.
- _lp3SigStateData1[7] = true; //wafer size 12.
- _lp3SigStateData1[24] = true; //e84 VALID
- _lp3SigStateData1[25] = true; //e84 CS0
- _lp3SigStateData1[26] = true; //e84 CS1
- _lp3SigStateData1[28] = true; //e84 TR_REQ
- _lp3SigStateData1[29] = true; //e84 BUSY
- _lp3SigStateData1[30] = true; //e84 COMPT
- _lp3SigStateData1[31] = true; //e84 CONT
- _lp3SigStateData2[24] = true; //E84 L_REQ
- _lp3SigStateData2[25] = true; //E84 U_REQ
- _lp3SigStateData2[27] = true; //E84 READY
- _lp3SigStateData2[30] = true; //E84 HO_AVBL
- _lp3SigStateData2[31] = true; //E84 ES
- }
- message = $"EVT:SIGSTAT/{lp}/{ConvertBinToHexString(_lp3SigStateData1)}" +
- $"/{ConvertBinToHexString(_lp3SigStateData2)}";
- }
- OnWriteMessage(message + ";\r");
- }
- private string ConvertBinToHexString(bool[] data)
- {
- uint intdata = 0;
- for (int i = 0; i < data.Length; i++)
- {
- intdata += data[i] ? (uint)Math.Pow(2, i) : 0;
- }
- return intdata.ToString("X8");
- }
- public void RemoveCarrier(string lp)
- {
- string message = "";
- if (lp == "P1")
- {
- _lp1SigStateData1[0] = false; //LP Placement
- _lp1SigStateData1[1] = true; //Pod Present.
- _lp1SigStateData1[24] = false; //e84 VALID
- _lp1SigStateData1[25] = false; //e84 CS0
- _lp1SigStateData1[26] = false; //e84 CS1
- _lp1SigStateData1[28] = false; //e84 TR_REQ
- _lp1SigStateData1[29] = false; //e84 BUSY
- _lp1SigStateData1[30] = false; //e84 COMPT
- _lp1SigStateData1[31] = false; //e84 CONT
- _lp1SigStateData2[24] = false; //E84 L_REQ
- _lp1SigStateData2[25] = false; //E84 U_REQ
- _lp1SigStateData2[27] = false; //E84 READY
- _lp1SigStateData2[30] = false; //E84 HO_AVBL
- _lp1SigStateData2[31] = false; //E84 ES
- message = $"EVT:SIGSTAT/{lp}/{ConvertBinToHexString(_lp1SigStateData1)}" +
- $"/{ConvertBinToHexString(_lp1SigStateData2)}";
- }
- if (lp == "P2")
- {
- _lp2SigStateData1[0] = false; //LP Placement
- _lp2SigStateData1[1] = true; //Pod Present
- _lp2SigStateData1[24] = false; //e84 VALID
- _lp2SigStateData1[25] = false; //e84 CS0
- _lp2SigStateData1[26] = false; //e84 CS1
- _lp2SigStateData1[28] = false; //e84 TR_REQ
- _lp2SigStateData1[29] = false; //e84 BUSY
- _lp2SigStateData1[30] = false; //e84 COMPT
- _lp2SigStateData1[31] = false; //e84 CONT
- _lp2SigStateData2[24] = false; //E84 L_REQ
- _lp2SigStateData2[25] = false; //E84 U_REQ
- _lp2SigStateData2[27] = false; //E84 READY
- _lp2SigStateData2[30] = false; //E84 HO_AVBL
- _lp2SigStateData2[31] = false; //E84 ES
- message = $"EVT:SIGSTAT/{lp}/{ConvertBinToHexString(_lp2SigStateData1)}" +
- $"/{ConvertBinToHexString(_lp2SigStateData2)}";
- }
- if (lp == "P3")
- {
- _lp3SigStateData1[0] = false; //LP Placement
- _lp3SigStateData1[1] = true; //Pod Present
- _lp3SigStateData1[24] = false; //e84 VALID
- _lp3SigStateData1[25] = false; //e84 CS0
- _lp3SigStateData1[26] = false; //e84 CS1
- _lp3SigStateData1[28] = false; //e84 TR_REQ
- _lp3SigStateData1[29] = false; //e84 BUSY
- _lp3SigStateData1[30] = false; //e84 COMPT
- _lp3SigStateData1[31] = false; //e84 CONT
- _lp3SigStateData2[24] = false; //E84 L_REQ
- _lp3SigStateData2[25] = false; //E84 U_REQ
- _lp3SigStateData2[27] = false; //E84 READY
- _lp3SigStateData2[30] = false; //E84 HO_AVBL
- _lp3SigStateData2[31] = false; //E84 ES
- message = $"EVT:SIGSTAT/{lp}/{ConvertBinToHexString(_lp3SigStateData1)}" +
- $"/{ConvertBinToHexString(_lp3SigStateData2)}";
- }
- OnWriteMessage(message + ";\r");
- }
- public void ClearWafer(string lp)
- {
- if (lp == "LP1")
- {
- for (int i = 0; i < _lp1slotMap.Length; i++)
- {
- _lp1slotMap[i] = "0";
- }
- }
- if (lp == "LP2")
- {
- for (int i = 0; i < _lp2slotMap.Length; i++)
- {
- _lp2slotMap[i] = "0";
- }
- }
- if (lp == "LP3")
- {
- for (int i = 0; i < _lp3slotMap.Length; i++)
- {
- _lp3slotMap[i] = "0";
- }
- }
- }
- public void SetAllWafer(string lp)
- {
- if (lp == "LP1")
- {
- for (int i = 0; i < _lp1slotMap.Length; i++)
- {
- _lp1slotMap[i] = "1";
- }
- }
- if (lp == "LP2")
- {
- for (int i = 0; i < _lp2slotMap.Length; i++)
- {
- _lp2slotMap[i] = "1";
- }
- }
- if (lp == "LP3")
- {
- for (int i = 0; i < _lp3slotMap.Length; i++)
- {
- _lp3slotMap[i] = "1";
- }
- }
- }
- public void SetUpWafer(string lp)
- {
- if (lp == "LP1")
- {
- for (int i = 0; i < _lp1slotMap.Length; i++)
- {
- _lp1slotMap[i] = i > 15 ? "1" : "0";
- }
- }
- if (lp == "LP2")
- {
- for (int i = 0; i < _lp2slotMap.Length; i++)
- {
- _lp2slotMap[i] = i > 15 ? "1" : "0";
- }
- }
- if (lp == "LP3")
- {
- for (int i = 0; i < _lp3slotMap.Length; i++)
- {
- _lp3slotMap[i] = i > 15 ? "1" : "0";
- }
- }
- }
- public void SetLowWafer(string lp)
- {
- if (lp == "LP1")
- {
- for (int i = 0; i < _lp1slotMap.Length; i++)
- {
- _lp1slotMap[i] = i < 10 ? "1" : "0";
- }
- }
- if (lp == "LP2")
- {
- for (int i = 0; i < _lp2slotMap.Length; i++)
- {
- _lp2slotMap[i] = i < 10 ? "1" : "0";
- }
- }
- if (lp == "LP3")
- {
- for (int i = 0; i < _lp3slotMap.Length; i++)
- {
- _lp3slotMap[i] = i < 10 ? "1" : "0";
- }
- }
- }
- public void RandomWafer(string lp)
- {
- Random _rd = new Random();
- if (lp == "LP1")
- {
- for (int i = 0; i < _lp1slotMap.Length; i++)
- {
- _lp1slotMap[i] = _rd.Next(0, 10) < 6 ? "0" : "1";
- }
- }
- if (lp == "LP2")
- {
- for (int i = 0; i < _lp2slotMap.Length; i++)
- {
- _lp2slotMap[i] = _rd.Next(0, 10) < 6 ? "0" : "1";
- }
- }
- if (lp == "LP3")
- {
- for (int i = 0; i < _lp3slotMap.Length; i++)
- {
- _lp3slotMap[i] = _rd.Next(0, 10) < 6 ? "0" : "1";
- }
- }
- }
- public class LpState
- {
- public bool IsPlacement { get; set; }
- public bool IsPresent { get; set; }
- public bool IsAccessSwPressed { get; set; }
- public bool ClampState { get; set; }//close=1
- public bool DoorState { get; set; }//open=1
- public bool DockState { get; set; }//docked=1
- public bool IndicatiorPresence { get; set; }//ON=1
- public bool IndicatiorPlacement { get; set; }//ON=1
- public bool IndicatiorLoad { get; set; }//ON=1
- public bool IndicatiorUnload { get; set; }//ON=1
- public bool IndicatiorManualMode { get; set; }//ON=1
- public bool IndicatorAlarm { get; set; }//ON=1
- public bool IndicatiorClampUnclamp { get; set; }//ON=1
- public bool IndicatiorDockUndock { get; set; }//ON=1
- public bool IndicatiorOpAccess { get; set; }//ON=1
- }
- public class E84State
- {
- public bool DiValid { get; set; }//ON=1
- public bool DiCS0 { get; set; }//ON=1
- public bool DiCS1 { get; set; }//ON=1
- public bool DiTrReq { get; set; }//ON=1
- public bool DiBusy { get; set; }//ON=1
- public bool DiCompt { get; set; }//ON=1
- public bool DiCont { get; set; }//ON=1
- public bool DoLoadReq { get; set; }//ON=1
- public bool DoUnloadReq { get; set; }//ON=1
- public bool DoReady { get; set; }//ON=1
- public bool DoHOAvbl { get; set; }//ON=1
- public bool DoES { get; set; }//ON=1
- }
- public class SystemState
- {
- public bool VacuumsSourcePressure1 { get; set; }//Normal=1
- public bool VacuumsSourcePressure2 { get; set; }//Normal=1
- public bool CompressedAirPressure1 { get; set; }//Normal=1
- public bool CompressedAirPressure2 { get; set; }//Normal=1
- public bool DifferentialPressureSensorSetting1 { get; set; }//Normal=1
- public bool DifferentialPressureSensorSetting2 { get; set; }//Normal=1
- public bool FFUAlarm { get; set; }//Normal=1
- public bool IonizerAlarm { get; set; }//Normal=1
- public bool ModeSwitch { get; set; }//RUN=1
- public bool DriverPower { get; set; }//Normal=1
- public bool DoorOpenCloseStatus { get; set; }//close=1
- public bool AreaSensorBarInterlock { get; set; }//Normal=1
- public bool LightRed { get; set; }//ON=1
- public bool LightYellow { get; set; }//ON=1
- public bool LightGreen { get; set; }//ON=1
- public bool LightBlue { get; set; }//ON=1
- public bool LightWhite { get; set; }//ON=1
- public bool FlashRed { get; set; }//Flash=1
- public bool FlashYellow { get; set; }//Flash=1
- public bool FlashGreen { get; set; }//Flash=1
- public bool FlashBlue { get; set; }//Flash=1
- public bool FlashWhite { get; set; }//Flash=1
- public bool Buzzer1 { get; set; }//ON=1
- public bool Buzzer2 { get; set; }//ON=1
- }
- }
- }
|