public void StartProcess(eAssignedLane_Printer Lane, string filename) { if (PrinterManager.getInstance() == null) { return; } else { Log4.PrinterLogger.InfoFormat("[SOA]StartProcess({0},{1})", Lane.ToString(), filename); //如果檔案是用XML則需要enqueue if (PrinterManager.getInstance().ExchangeMethod == SFCData.eSFCDataExchangeMethod.XML) { InspectedPanel panel = null; while (panel == null) { panel = null; try { panel = IPCHelper.DeserializeFromXML <InspectedPanel>(filename); } catch (Exception ex) { //Log4.SFCLogger.InfoFormat("Pause {0} ms", iPause); //Thread.Sleep(iPause); //Log4.SFCLogger.ErrorFormat("DeserializeFromXML File {0} Exception:{1}", AssemblyPath + "\\DataExchange\\" + e.Name, ex.Message); } } switch (Lane) { case eAssignedLane_Printer.None: break; case eAssignedLane_Printer.Lane1: ViewModelLocator.Atom.FlowHostVM.spiInspectedData.Add("[" + eAssignedLane_Printer.Lane1.ToString() + "]" + panel.InspectStartTime); Log4.PrinterLogger.InfoFormat(" -Push [{0}] CurrentInspectModeTemp.InspectMode={1} .InspectResult={2}", Lane.ToString(), panel.InspectMode, panel.InspectResult); PrinterManager.getInstance().CurrentInspectModeTemp[0].InspectMode = panel.InspectMode; PrinterManager.getInstance().CurrentInspectModeTemp[0].InspectResult = panel.InspectResult; Log4.PrinterLogger.InfoFormat(" -Enqueue [{0}] SPI Data InspectTime = {1}", Lane.ToString(), panel.InspectStartTime); PrinterManager.getInstance().RemotePrinter[0].Printer.InspectedPanels.Enqueue(panel); break; case eAssignedLane_Printer.Lane2: ViewModelLocator.Atom.FlowHostVM.spiInspectedData.Add("[" + eAssignedLane_Printer.Lane2.ToString() + "]" + panel.InspectStartTime); Log4.PrinterLogger.InfoFormat(" -Push [{0}] CurrentInspectModeTemp.InspectMode={1} .InspectResult={2}", Lane.ToString(), panel.InspectMode, panel.InspectResult); PrinterManager.getInstance().CurrentInspectModeTemp[1].InspectMode = panel.InspectMode; PrinterManager.getInstance().CurrentInspectModeTemp[1].InspectResult = panel.InspectResult; Log4.PrinterLogger.InfoFormat(" -Enqueue [{0}] SPI Data InspectTime = {1}", Lane.ToString(), panel.InspectStartTime); PrinterManager.getInstance().RemotePrinter[1].Printer.InspectedPanels.Enqueue(panel); break; } } switch (Lane) { case eAssignedLane_Printer.None: break; case eAssignedLane_Printer.Lane1: PrinterManager.getInstance().RemotePrinter[0].Printer.StartProcess(); break; case eAssignedLane_Printer.Lane2: PrinterManager.getInstance().RemotePrinter[1].Printer.StartProcess(); break; } } }