예제 #1
0
        /// <summary>
        /// Beim Starten des Programmes werden alle Parkhaus-Daten / Einträge aus der Datenbank in die Parkhausliste der Klasse übertragen,
        /// damit sie vom letzten Programmablauf wieder zur Verfügung stehen. Die Datenbankanbindung wird mithilfe der Programmierschnitttelle
        /// OLE-DB implementiert, wobei unterschiedliche Datenbankabfragen ausgeführt werden können.
        /// </summary>
        /// <param name="connectionString"></param>
        public void datenAusDatenbankAuslesen(String connectionString)
        {
            OleDbCommand cmd;
            DataSet      dataSet = new DataSet();


            String plz, ort, parkhausnummer, stellplatznummer, stellplatztyp, istBelegt, kennzeichen;
            int    anzahlPKW, anzahlMotorrad, anzahlLKW;


            /// SQL-Abfragen zur Wiederherestellung der bereits vorhandenen Parkhäuser und Stellplätze in der Datenbank
            String parkhaus_query   = "SELECT plz, ort, parkhausnummer, anzahlPKW, anzahlMotorrad, anzahlLKW FROM parkhausliste";
            String stellplatz_query = "SELECT parkhausnummer, stellplatznummer, stellplatztyp, istBelegt, kennzeichen FROM stellplatzliste";

            try
            {
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    using (cmd = new OleDbCommand(parkhaus_query, connection))
                    {
                        connection.Open();

                        OleDbDataReader reader = cmd.ExecuteReader();

                        /// Auslesen aller Parkhauseinträge aus der Datenbank zur Wiederherstellung der Daten
                        while (reader.Read())
                        {
                            plz            = reader["plz"].ToString();
                            ort            = reader["ort"].ToString();
                            parkhausnummer = reader["parkhausnummer"].ToString();
                            anzahlPKW      = Int32.Parse(reader["anzahlPKW"].ToString());
                            anzahlMotorrad = Int32.Parse(reader["anzahlMotorrad"].ToString());
                            anzahlLKW      = Int32.Parse(reader["anzahlLKW"].ToString());

                            Parkhaus parkhaus = new Parkhaus(ort, plz, parkhausnummer, anzahlPKW, anzahlMotorrad, anzahlLKW);
                            parkhausliste.Add(parkhaus);
                        }
                        reader.Close();
                    }

                    using (cmd = new OleDbCommand(stellplatz_query, connection))
                    {
                        OleDbDataReader reader = cmd.ExecuteReader();
                        foreach (Parkhaus parkhaus in parkhausliste)
                        {
                            parkhaus.Stellplatzliste.Clear();
                        }

                        /// Auslesen aller Stellplatzeinträge aus der Datenbank zur Wiederherstellung der Daten
                        while (reader.Read())
                        {
                            parkhausnummer   = reader["parkhausnummer"].ToString();
                            stellplatznummer = reader["stellplatznummer"].ToString();
                            stellplatztyp    = reader["stellplatztyp"].ToString();
                            istBelegt        = reader["istbelegt"].ToString();
                            kennzeichen      = reader["kennzeichen"].ToString();

                            Stellplatz stellplatz = new Stellplatz(stellplatznummer, stellplatztyp, Boolean.Parse(istBelegt), parkhausnummer);
                            stellplatz.Kennzeichen = kennzeichen;


                            foreach (Parkhaus parkhaus in parkhausliste)
                            {
                                if (parkhaus.Parkhausnummer.Equals(parkhausnummer))
                                {
                                    parkhaus.Stellplatzliste.Add(stellplatz);
                                    break;
                                }
                            }
                        }
                        reader.Close();
                    }
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Inhalt konnte nicht geladen werden");
            }
        }
예제 #2
0
        public async void Start()
        {
            mqttClient = new MqttFactory().CreateMqttClient();

            var options = new MqttClientOptionsBuilder()

                          // Set client ID for app
                          .WithClientId(str_ClientID)

                          // Set ip adress & port to send messages to
                          .WithTcpServer(str_IpAdress, Convert.ToInt32(str_PortAdress))

                          .WithWillMessage(new MqttApplicationMessageBuilder().WithTopic("Died").WithPayload($"{str_ClientID} ist Tot!! :(").Build())

                          .WithCleanSession()

                          .Build();

            await mqttClient.ConnectAsync(options);


            // Logic for Client
            mqttClient.ApplicationMessageReceived += (s, e) =>
            {
                Console.WriteLine("### RECEIVED APPLICATION MESSAGE ###");
                Console.WriteLine($"+ ClientID = {e.ClientId}");
                Console.WriteLine($"+ Topic = {e.ApplicationMessage.Topic}");
                Console.WriteLine($"+ Payload = {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
                Console.WriteLine($"+ QoS = {e.ApplicationMessage.QualityOfServiceLevel}");
                Console.WriteLine($"+ Retain = {e.ApplicationMessage.Retain}");

                // Get Credentials
                string   str_TmpPayload     = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                string[] str_ClientIdSender = str_TmpPayload.Split(';');

                // Topic REGISTER
                if (e.ApplicationMessage.Topic == "Register" && str_ClientIdSender[0] != this.str_ClientID)
                {
                    // Get all available Displays
                    List <Stellplatz> __Stellplatz = DataController.ReturnStellplatz();

                    // Tmp bool
                    bool bool_IsRegistered = false;

                    foreach (Stellplatz Item in __Stellplatz)
                    {
                        if (Item.str_Bezeichnung == str_ClientIdSender[0])
                        {
                            bool_IsRegistered = true;
                            Message _msg = new Message();
                            _msg.str_TopicName = "AknowledgeRegister";
                            _msg._Message      = Item.str_Bezeichnung;
                            publish(_msg);

                            // Reasign price after restart
                            foreach (StellplatzArtikel Items in DataController.ReturnStellplatzArtikel())
                            {
                                if (Item.int_Id == Items.int_StellplatzID)
                                {
                                    _msg.str_TopicName = Item.str_Bezeichnung;
                                    foreach (Live_Artikel article in DataController.ReturnLiveArtikel())
                                    {
                                        if (article.int_ID == Items.int_ArtikelID)
                                        {
                                            _msg._Message = article.dbl_SellPrice.ToString();
                                            Thread.Sleep(250);
                                            publish(_msg);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Check if exists
                    if (!bool_IsRegistered)
                    {
                        Stellplatz _Stellplatz = new Stellplatz();

                        // Generate unique client_Id
                        _Stellplatz.str_Bezeichnung = CreateClientId(str_ClientIdSender[0]);
                        _Stellplatz.str_MacAdress   = str_ClientIdSender[1];

                        _Stellplatz.Insert();

                        DataController.CreateDataLayer();
                        bool_IsRegistered = false;

                        Message _msg = new Message();
                        _msg.str_TopicName = "AknowledgeRegister";
                        _msg._Message      = _Stellplatz.str_Bezeichnung;

                        SubscribeAsync(_msg);

                        publish(_msg);

                        _msg.str_TopicName = _Stellplatz.str_Bezeichnung + "/delete";
                        SubscribeAsync(_msg);
                    }
                }
            };
        }