Kernel V0.14 081010

  • Hallo


    Wenn ich mit dem Kernel V0.14 meine Testprojekte (VB2008 + C#2008) starten möchte, scheitert dies beim Versuch ein Bitmap in eine Picturebox zu laden. (TargetInvocationExeption).


    Mit Kernel V0.13 starten die Projekte problemlos.


    Kann mir jemand etwas dazu sagen?
    Liegt ein Problem des Kernels vor oder muss ich an den Projekten eine Einstellung ändern?

  • Dieses Problem tritt auch bei mir auf, jedoch nur wenn die Bilder einen Alphakanal haben!?
    Bei allen anderen Bildern habe ich bis jetzt keine Probleme gehabt.


    Hängt dies ev. mit der neu hinzugefügten AlphaBlend-API zusammen?



    Mit freundlichen Grüßen
    Martin Kradjel

  • Danke für den Hinweis.
    Mit .bmp's Dateien funktioniert es bei mir auch mit dem Kernel V.014.
    Hatte bisher .png's verwendet, welche mit V0.13 noch funktionieren.


    Mit freundlichen Grüssen, Jakob Schiesser

  • Guten Tag Herr Schiesser,
    eigentlich sollte es auch weiterhin mit Pngs funktionieren! Was sagt die Exception genau? Können Sie diese nicht behandeln?

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Guten Tag Herr Zutter


    In private void InitializeComponent()
    auf die Zeile this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));


    erscheint die Fehlermeldung. Hinweise werden keine gegeben, die allgemeine Hilfe wird vorgeschlagen.
    Ich tippe auch darauf, dass ein Problem mit der AlphaBlend API vorliegt.


    Die Fehler lassen sich sehr schnell reproduzieren:
    Neues Projekt, PicoMod3, Picturebox mit png Image, F5 ...
    Image auf Bmp wechseln, alles ok.
    Oder Kernel V0.13, alles ok.


    Da ich nicht alle möglichen Fehler behandeln will, die in V0.13 nicht entstehen, arbeite ich vorderhand mit V0.13 weiter.


    Mit freundlichen Grüssen, Jakob Schiesser


    Fehler Details:

  • Hallo, ein gutes neues Jahr wünsche ich allen.
    Ich bin genau auf das gleiche Problem wie scn gestoßen und versuche nun verzweifelt Bilder darzustellen.


    Ich arbeite mit C# 2005, CF 2.0 SP2, kann allerdings nicht sagen mit welcher Kernel Version da ich es noch nicht geschafft habe den seriellen Anschluss zu nutzen, ich kopiere und debugge über den Ethernetanschluss. Es ist Windows CE 4.2 und vermutlich ein NetDCU6, worauf der Platform Schlüssel in der Registry hindeutet (an die Platine komme ich selbst nicht direkt, aber aus dem Kasten schauen 2xUSB, 2xserielle und 1xNetzwerkanschluss heraus)


    Ebenfalls, in dieser Zeile taucht eine "Exception" auf, ohne weitere Details.
    this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));


    auch mein StackTrace schaut genauso aus:

    Code
    1. ...
    2. InnerException:
    3. Message="Exception"
    4. StackTrace:
    5. at Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
    6. at System.Drawing.Bitmap._InitFromMemoryStream(MemoryStream mstream)
    7. at System.Drawing.Bitmap..ctor(Stream stream)
    8. ...


    Völlig gleich wie ich versuche das/die Bilder zu laden, es taucht immer der gleiche Fehler auf. Ich habe es auch als Resourcen-Datei versucht, so wie hier beschrieben ist -> gleicher Fehler.


    Das Format scheint auch keine Rolle zu spielen, habe einige Kombinationen durch: PNG, BMP, JPG, mit Alphakanal oder ohne. Die Auflösung der Bilder habe ich zwischen 100x70 und 800x600 getestet, Dateigrößen lagen zwischen 50kb und 2MB.


    In der IDE wird das Bild angezeigt und im Pocket 2003 Emulator funktioniert das ganze auch.


    Hier im Forum bin ich auf das BmpView-Programm gestoßen welches abwechselnd 2 Bilder zeigt, ich habe es mit eVC++ 4 kompiliert und direkt auf dem NetDCU gestartet: es läuft ohne Probleme, danach habe ich zum testen meine 2MB große BMP-Datei genommen welche in C# zur Exception führte und in das eVC++ Projekt aufgenommen: es wurde mit einer Auflösung von 800x600 angezeigt, lediglich die Ladezeit war etwas lange, wohl aufgrund der Größe. Die anderen JPG-Dateien habe ich mit diesem Projekt aber noch nicht direkt zum laufen gebracht, meine Kenntnisse in C++ beschränken sich etwas.


    Vor hatte ich eine kleine Visualisierung für einen Hausinstallationsbussystem in C# zu entwickeln, dazu sollten ein Grundriss und einige Symbole gehören, aber es wird etwas knapp mit dem RAM.


    Wieso läuft das riesen Bild nun mit dem eVC++ aber nicht mit C#?
    Was kann ich noch versuchen um Bilder auf dem NetDCU mit C# darzustellen?


    Eine Suche nach Microsoft.AGL.Common.MISC.HandleAr im Internet führt häufig zu "out of memory" Ergebnissen, kann es damit zusammenhängen?

  • Hallo,


    bitte versuchen Sie mal folgendes:


    Öffnen Sie den >>System Properties<< Dialog (Start->Settings->Control Panel->System). Und öffnen Sie die Registerkarte >>Memory<<.
    Nun starten Sie die C# Applikation die die Exception auslöst. Mit dem Memory Dialog können Sie sehen wieviel RAM zur Verfügung steht.


    Ist nach dem Auslösen der Exception noch Program Memory verfügbar? Können Sie die Maus oder das Keyboard bedienen und
    weitere Applikationen / Fenster öffnen?


    DKuhne.

    F&amp;S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Vielen Dank für Ihre Antwort,


    Der Regler ist mir bekannt und ich hatte ihn auch schon auf das kleinstmögliche gestellt.
    Vor dem Zeitpunkt des Programmstarts werden ~4MB durch den Storage belegt da ich bestimmte Teile des .NET CF 2.0 nicht nach /ffsdisk/ auslagern kann. Während mein Programm läuft steigt der Memory-Verbrauch auf ~14MB an (ohne Bilder), frei sind dann immer noch ~10MB. Ich habe auch schon den Quelltext den es hier im Forum gibt eingebaut, dieser regelt die Speicherverteilung von 50:50 auf 10:90.


    Kann es denn wirklich am Speicherverbrauch liegen wenn selbst das kleinste Bild mit 100x70px nicht geladen werden kann?
    Wie bereits geschrieben: in eVC++ lädt selbst das 800x600px, 2MB große Bild zuzüglich der beiden kleinen aus der Testanwendung.


    Programm Memory ist die ganze Zeit verfügbar, die Maus hängt nicht und alles läuft flüssig, aber das von Ihnen beschriebene Problem hatte ich auch schon als ich zu viele Dateien in den RAM kopiert habe, war aber in einem anderen Zusammenhang und die Ursache auch verständlich.

  • Ich habe nun eine Testprogramm erstellt das nur eine 10x4 Pixel große, grau stufige Datei anzeigen soll. Diese bmp-Datei selbst ist 2KB klein.
    Die Exception wird erneut ausgelöst, ich schließe ein Speicherproblem fast aus, denn die Speicherverteilung sieht zum Fehlerzeitpunkt wie folgend aus:
    Storage Memory: 504KB/1024KB
    Program Memory: 12900KB/22780KB


    Es sind also noch knapp 10 MB frei um die 2KB große BMP Datei anzuzeigen, wieso wird aber dennoch diese Exception ausgelöst:


    Der Quelltext zu diesem einfachen Test-Programm sieht wie folgend aus:


    Ich weiß nicht was ich noch versuchen könnte um Bilder mittels C# darzustellen. Auch wenn ich das Bild indirekt über einen FileStream versuche zu laden bekomme ich den Fehler sobald die Funktion System.Drawing.Bitmap() aufgerufen wird.
    Das .Net CF Framework welches ich eingespielt habe trägt den Namen NETCFv2.wce4.MIPSII.cab, kann es an diesem liegen, oder ist der Fehler woanders zu suchen?


    Ich würde auch gerne in C# die serielle Schnittstelle ansprechen und auch einmal den Bootloader beobachten, jedoch scheint COM1 und COM2 bereits durch irgendeinen Prozess in Verwendung zu sein, COM3 ist zwar ansprechbar, aber wohl leider nicht aus dem Gehäuse geführt. Der Taskmanager zeigt keine Prozesse an, wie kann ich COM1/2 wieder freigeben bzw. zunächst ermitteln wer diesen blockiert damit ich ermitteln kann welcher Anschluss welcher ist? (ich habe keinen direkten Zugriff auf die Platine) Ist das gelöst kann ich bestimmt im Bootloader sehen welche Kernelversion verwendet wird. Über einen der seriellen Anschlüsse erhalte ich kurz nach oder während dem Booten ?K|Zob0 in meiner Terminal-Anwendung, die Zahl ist manchmal unterschiedlich.

  • Hat schon jemand versucht ob/wieso mein Codeschnipsel funktioniert?


    Da es sich bei meinem vermutlich um einen NetDCU handelt bin ich vielleicht in einem anderen Forum besser aufgehoben, ich dachte vielleicht bin ich aufgrund der gleich lautenden Fehlermeldung hier richtig. Sollte ich besser in einem anderen Forum nochmals fragen?

  • Hallo x-coder,


    welche NetDCU und welchen Kernel verwenden Sie?


    DKuhne.

    F&amp;S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • In der Registry konnte ich den Eintrag NetDCU6 - Typ 3 finden, keine Versionsangabe [HKLM\Platform].
    Die Kernel Version konnte ich bisher noch nicht herausfinden. Da ich das System nicht selbst zusammengestellt und eingerichtet habe, sondern eine Anwendung dafür entwickeln soll, weis ich ich nicht ob ich einfach den Kernel ohne Schwierigkeiten updaten kann zumal mir sämtliches Zubehör wie die Starter-CD fehlt, mit DCUTerm hätte ich aber Zugriff auf COM2.


    Gehen beim updaten des Kernels Einstellungen (Registry) verloren, oder benötige ich danach Dateien / Treiber um das System wieder zum laufen zu bekommen? -Nicht das ich nach dem Updaten im dunklen stehe weil mir der Display-Treiber / Einstellungen fehlen oder ich keine Verbindung mehr herstellen kann.


    Kann ich ein Backup-Image des kompletten Flash anfertigen?


    Nachtrag:
    Ich habe es jetzt einfach mal gewagt und den neusten Kernel V1.33 aufgespielt, zuvor war V1.20 installiert.
    Ergebnis: Das Problem mit den Bildern ist verschwunden diese werden nun ohne diese "Exception" (siehe oben) einwandfrei geladen, wäre interessant zu wissen woran es nun genau gelegen hat.


    Vielen Dank für Ihre Hilfe und für dieses Forum.