public frmSupervisorio() { InitializeComponent(); FlagsEscrita = new FlagsEscrita(); FlagsLeitura = new FlagsLeitura(); if (File.Exists(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "configs.json"))) { Configs = JsonConvert.DeserializeObject <Configs>(File.ReadAllText(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "configs.json"))); } if (!(Configs is null)) { Credentials = new NetworkCredential(Configs.Username, Configs.Password, Configs.Domain); NetworkPath = Configs.NetworkPath; TimeoutLeitura = Configs.TimeoutRead; } #region Scanner _scannerService = new ScannerService(Configs.ScannerSerialPort, FlagsEscrita, FlagsLeitura); _scannerService.StartListening(out string statusScanner); if (statusScanner != string.Empty) { //GravarLog(statusScanner); } #endregion }
/// <summary> /// Cria uma instancia da classe SerialListener que tenta escutar a porta serial informada com os seguintes parametros: /// BaudRate = 9600 /// Parity = None /// DataBits = 8 /// StopBits = One /// </summary> public ScannerService(string portName, FlagsEscrita escrita, FlagsLeitura leitura) { PortName = portName; BaudRate = 115200; Parity = Parity.None; DataBits = 8; StopBits = StopBits.One; flagsEscrita = escrita; flagsLeitura = leitura; }
private async void CallCLP() { foreach (Lote lote in LotesEnfileirados) { bolEmProducao = true; lote.Status = Lote.StatusLote.EmProducao; LoteEmProducao = lote; List <Blank> blanks = lote.Blanks; while (bolEmProducao) { FindDeviceConnection(); SetAutomaticMode(); // Envia comando de Leitra de Status byte[] response = _deviceService.ReadStatus(FlagsEscrita.GetHiFlags(), FlagsEscrita.GetLoFlags()); bool statusFrame = _deviceService.StatusFrameIsOk(); TrataResposta(response, statusFrame); // Quando Leitura QR Pendente 0 -> 1 if ((FlagsLeitura.UltimoLeituraQrPendente != FlagsLeitura.ImpressaoQrPendente) && FlagsLeitura.ImpressaoQrPendente) { FlagsEscrita.QrLeituraConcluida = false; } // Quando lote finalizado 0 -> 1 if ((FlagsLeitura.UltimoLoteFinalizado != FlagsLeitura.LoteFinalizado) && FlagsLeitura.LoteFinalizado) { // Concluir o lote atual Lote loteFinalizando = LotesEnfileirados.Where(l => l.Status == Lote.StatusLote.Finalizando).FirstOrDefault(); loteFinalizando.Status = Lote.StatusLote.Concluido; FlagsEscrita.FinalLote = false; FlagsEscrita.LoteValido = false; } if (FlagsLeitura.SistemaModoManual) { // Se o sistema estiver em manual mandar comando de modo Auto novamente SetAutomaticMode(); } if (!Directory.GetFiles(NetworkPath).Any(file => file.Contains(".png"))) { CopiaQrParaPastaLaser(blanks); } if (FilaLotes.Count > 0) { FlagsEscrita.TemProximoLote = true; } else { FlagsEscrita.TemProximoLote = false; } if (blanks.All(b => b.Status == Blank.StatusBlank.Validado || b.Status == Blank.StatusBlank.NaoOk)) { bolEmProducao = false; FilaLotes.Dequeue(); LoteEmProducao.Status = Lote.StatusLote.Finalizando; FlagsEscrita.FinalLote = true; FlagsEscrita.LoteValido = blanks.Any(b => b.Status == Blank.StatusBlank.NaoOk) ? false : true; if (FilaLotes.Count == 0) { //Recarregar nova fila de lotes para produção //LotesEnfileirados.Clear(); } } if (Token.IsCancellationRequested) { break; } Token.WaitHandle.WaitOne(1000); await Task.Delay(100); } } }