public void Execute(IJobExecutionContext context) { try { Console.WriteLine(string.Format("\r\n>> Job 'JOB2' executed at: {0}", DateTime.Now)); Console.WriteLine("----------------------------------------\r\n"); if (!ArduinoComunicate()) { Console.WriteLine("\t3 uzastopne greške u komunikaciji"); } } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); if (ex.Message.Equals("The write timed out.")) { SerialCommunicatorStatic.CloseCommunication(); Console.WriteLine("Closing COM port."); } Console.WriteLine(); Console.ResetColor(); throw; } }
static void Main(string[] args) { const int job1Rerun = 20; //Minute imeđu dva Joba const int job2Rerun = 1; //Minute imeđu dva Joba Console.WriteLine("HMonitor Scheduler 1.0"); Console.WriteLine("----------------------\r\n"); Console.WriteLine(string.Format("Current system Time: {0}", DateTime.Now)); try { //Definicija Schedulera var scheduler = Setup_Scheduler(); //Definicija JOB1 - Weather Underground Setup_JOB1(job1Rerun, scheduler); //Postavljanje serijske komunikacije za JOB2 //Pazi: čitanje iz app settingsa var cString = HMonitorScheduler.Properties.Settings.Default.ArduinoPlinPort; SerialCommunicatorStatic._serialPort = new SerialPort() { PortName = "COM6", BaudRate = 9600, DataBits = 8, StopBits = StopBits.One, Handshake = Handshake.None, WriteTimeout = 1000, ReadTimeout = 1000, ReceivedBytesThreshold = 1, //Encoding = Encoding.Default //System.Text.Encoding.GetEncoding(1252); }; SerialCommunicatorStatic.CloseCommunication();//Za svaki slučaj prvo zatvori port ako je on otvoren SerialCommunicatorStatic.OpenCommunication(); //Definicija JOB2 - Plinsko brojilo Setup_JOB2(job2Rerun, scheduler); } catch (SchedulerException se) { Console.WriteLine(se.Message); } }
private bool ArduinoComunicate() // { bool greska = true; //true = nema greške; false = došlo je do greške //Za svaki slučaj otvori komunikaciju SerialCommunicatorStatic.OpenCommunication(); //Naredba za čitanje vrijednosti s Arduino stacka var komanda = new byte[] { 0x73 }; //Iteracije for (int i = 1; i <= 3; i++) { //Pošalji komandu SerialCommunicatorStatic.SendData(komanda, komanda.Count()); //Primi i procesuiraj odgovor var returnData = SerialCommunicatorStatic.ReceiveDataString(1500); //Ovaj timeout je potreban kako bi Arduino stigao pripremiti podatke5 if (returnData.Any()) { //procesuiraj podatke if (ParseSensorData(string.Join("", returnData))) //ako vrati true = nema greske { //snimi podatke SaveSensor(); //TODO: Arduinu treba poslati komandu da resetira brojač plina greska = true; break; } else { Console.WriteLine("\tDošlo je do greške u parsiranju podataka, pokušavam ponovo."); greska = false; } } } return(greska); }