mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM7 mit .Net Mikro Framework (Endlossschleife?)


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag!

Ich habe ein Projekt an der Uni mit dem Embedded Master TFT. Dieser soll 
mit .Net Mikro Framework programmiert werden. Mein Problem ist nun, dass 
ich werte vom adc dauerhaft auslesen und auf dem tft ausgeben möchte 
aber nicht weiß wie ich das anstellen soll. das auslesen und ausgeben 
des adc wertes auf dem tft funktioniert bisher nur durch drücken eines 
buttons.

Ich habe schon einiges versucht aber immer wenn ich eine while(true) 
endlosschleife verwende, zeigt er mir nichts an. Ich habe mal meinen 
Code soweit verkürzt wie ich denke, dass es zum verständnis reicht. Sry, 
falls es immernoch zu lang sein sollte, aber ich denke mal, so kann mir 
eher jemand helfen.

namespace ProjektA
{
    public class Program : Microsoft.SPOT.Application
    {

        static PersistentStorage ps;

        public static void Main()
        {
                Program myApplication = new Program();

                Window mainWindow = myApplication.CreateWindow();

       // Create the object that configures the GPIO pins to buttons.
                GPIOButtonInputProvider inputProvider = new 
GPIOButtonInputProvider(null);

                // Start the application
                myApplication.Run(mainWindow);
        }

        private Window mainWindow;
        ListBox listBox = new ListBox();
        public Window CreateWindow()
        {

            listBox.Items.Add(text);

            // Add the text control to the window.
            mainWindow.Child = listBox;

            // Connect the button handler to all of the buttons.
            mainWindow.AddHandler(Buttons.ButtonUpEvent, new 
ButtonEventHandler(OnButtonUp), true);

            // Set the window visibility to visible.
            mainWindow.Visibility = Visibility.Visible;

            // Attach the button focus to the window.
            Buttons.Focus(mainWindow);
            return mainWindow;
         }

         private void OnButtonUp(object sender, ButtonEventArgs e)
        {
         for (int i = 0; i < 50; i++) //50 Messungen in 500ms vornehmen
         {
            value += adcmessung.GewichtAuslesen();  //ADC Wert auslesen
            Thread.Sleep(10);                       //10ms warten
         }

         value = value / 50; //Mittelwert
         string W = string.Concat("Wert: ", value.ToString("N"), " 
kg");//"N" für zwei Nachkommastellen mit runden

                listBox.Dispatcher.BeginInvoke(new 
DispatcherOperationCallback(UpdateText), new object[] { W });


                if (listBox.Items.Count >= 15)
                {
                    listBox.Items.Clear();
                }
}

Ich hoffe, mir kann da jemand helfen, denn so langsam gehen mir die 
Ideen aus... :(
Vielen Dank schonmal!

Autor: dridders (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute mal das es dann genauso ablaeuft wie auch im normalen 
.NET-Framework: solange du den Haupt-Thread blockierst (eben durch deine 
Endlosschleife) kann er sich eben nicht um seine UI-Events kuemmern. 
Somit kein Update der Anzeige. Entweder manuell ein Application.DoEvents 
ausfuehren, oder sinniger einen Timer benutzen und dich von dem 
regelmaessig aufrufen lassen, statt einer resourcenfressenden 
Endlosschleife.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.