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;
            }
        }
Example #2
0
        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);
        }