Laden...
D
Daniel83 myCSharp.de - Member
Bielefeld Deutschland Dabei seit 05.02.2008 171 Beiträge
Benutzerbeschreibung

Forenbeiträge von Daniel83 Ingesamt 171 Beiträge

08.09.2009 - 09:23 Uhr

Ich habe eine Funktion, die Daten überträgt. Dort wird nach jedem Datensatz die oben erwähnte Funktion NextState aufgerufen.
Die Form Blockiert, das ist auch nicht schlimm und bedingt sogar gewollt.

Die Checkbox, die man sehen kann ist auf der Form, die hinter der kleinen Form mit der Progessbar liegt.

Liegt es denn daran das mein Gui blockiert, das nur Labels nicht angezeigt werden? In der Kopfzeile, sowie der Wert der Progressbar ändern sich ja. Sonst muss ich es eben doch irgendwie anders machen.

Die Funktionalität ist, das der Endanwender sieht, dass etwas passiert, wärend er sein Gerät "programmiert", da dieser Vorgang gute 1,5min Dauern kann. Außerdem wird ihm so der Zugriff auf die Form mit den Einstellungen verweigert, die dahinter liegt.

Wie gesagt, die 0 in der Kopfzeile ist ein laufindex, den ich dort zu testzwecken rein schreibe, glieches sollte auch im Label stehen.

Wie schon geschrieben hab ich das mit Durchsichtig auch so weit unter Kontrolle inzwischen, nur Text wird nihct dargestellt.

07.09.2009 - 15:44 Uhr

und hier wenn ich das ganze Ausführe. Der Kasten ist eine Checkbos im Hintergrund.

Da sollte eigentlich Text stehen

/Edit: Wenn ich CausesValidation (beim Label) auf true setzte ist zwar anscheinend das Problem mit dem Durchsichtig bei dem label gelöst, nicht jedoch bei der Progressbar beim ersten anzeigen, also vor der Wert änderung. Text bekomme ich trotzdem nicht

07.09.2009 - 15:43 Uhr

Die Komponenten sind Standart.

Das ist das Bild in der Entwurfsumgebung

07.09.2009 - 15:38 Uhr

Buddel den Beitrag mal wieder aus.

in meinen mage sind biser 30 stunde onlinezeit geflossen. woevon ich die meiste zeit auch wirklich gespielt habe und net nur rumgestanden/gesessen

Wohl eher 30 Tage, sonst echt respekt..

Habe nen
80 Priester Nachtelf (Die ewige Wacht)
80 Mensch Pala (Die ewige Wacht)
und noch nen paar kleinere, wobei ich gerade einen Jäger zum farmen züchte.

Was die Frage von Jack angeht, bei dem Priester hab ich es gerade im Kopf, den hab ich in 10 Tagen spielzeit hoch gespielt, aber als Twink mit entsprechendem Gold support und so, auf 80 hab ich ihn bisher ca 11 Tage gespielt. Mein Mainchar ist der seid etwa 4-5 Wochen, Inzwischen liegt das Itemlevel bei über 226.
In den Pala ist deutlich mehr zeit geflossen, mit dem hab ich auf 70 und 80 aktiv geraidet...

Der laufende Zeitbedarf sind 3mal die Woche 4,5 stunden Raiden und sonst was so anliegt. Ich brauch halt was zu tun, mit zeit wo nichts passiert kann ich nichts anfangen, da werd ich nach 30min total verrückt, war aber schon immer so.

Gruß Daniel

07.09.2009 - 15:00 Uhr

Hallo Zusammen,

Habe ein Problem mit einem Label. Ich habe eine kleine Form gebaut, die vor meiner Mainform geöffnet wird, wenn ich Daten übertrage. So weit so gut, die Progressbar aktualisiert sich auch ordentlich, aber ich möchte gerne noch ein wenig Text drauf machen, also hab ich ein Label drauf gemacht, nur tut das nicht was ich möchte. Wenn die Form geladen wird ist manchemal sowohl der Progressbar-, als auch ein Teil des Labelhintergrundes Transparent, wird die Progressbar aktualisiert ist bei der der Hintergrund wieder "hübsch" Grau, doch das Label bleibt transparent. Die Text Übertragung funktioniert, denn in der Kopfzeile kann ich den ohne Probleme Darstellen. Text steht in dem Label niemals drin, egal ob ich was rein schreibe (im Designer, im OnLoad, oder sonst wo)

Habe bestimmt nur irgend ne Eigenschaft falsch gesetzt, oder so, hab mir aber schon die Finger wund gesucht.

mache es so

public void NextState(int _Steps,string _Text)
        {
            lbl_Status.Text = _Text;    //Text im Label setzten
            Text = _Text;               //Text in Kopfzeile ändern
            pgb_Progess.Increment(_Steps);  //Progressbar Erhöhen
            timer1.Enabled = true;      //5ms Warten, wird in Timer1_tick wieder abgestellt
        }

Glaube nicht das das wichtig ist, aber nen bischen Code kann nie schaden. der Timer wartet kurz, sollte es enu gezeichnet werden müssen hilft aber nichts, Validate hab ich auch versucht.

Danke schonmal,

Daniel

Edit: Funktion mit Komentaren versehen

03.09.2009 - 13:05 Uhr

Hallo svenson,

um eine Produktiv Lösung geht es nicht, wir haben zwei Hardware komponenten über eine ModulareSteuerung zusammengebaut, die so nichts mit ein ander zu tun haben, sollte das jemals in serie gehen, muss da ohne hin eine Steuerung für entwickelt werden, nur soll nun diese Kombination mit einem Controlpannel angesteuert werden. Wie ist erstmal egal, hauptsache hübsch.
Es ist also quasi wie eine Entwicklungsumgebung, trotzdem danke für den Einwand.

Gruß Daniel

03.09.2009 - 12:33 Uhr

Hallo svenson,

danke für die Antwort, den Server haben wir auch schon gefunden, damit ist leider total langsam. Werden jetzt die Steuerung auf XP embedded umrüsten und dann mit remote Desktop arbeiten.
Dennoch vielen Dank für die Tips.

Gruß Daniel

02.09.2009 - 16:23 Uhr

Und nochwas vergessen, die Anwendung ist Topmost und Fullscreen ohne irgenwelche Menüleisten oder sonst irgendwas, sowas soll es nicht haben.

Lautbeschreibung und was ich gerade bei MS gelesen hab geht Cerhost nur mit PC benutzbar.

Aber ich werde es dennoch mal morgen versuchen, hat jemand so ein Problem mal gehabt?

02.09.2009 - 16:10 Uhr

Danke schonmal für die Antwort,

schnelles überfliegen der Downloadseite bei Microsoft sagt mir aber, dass es auch hier um die Komunikation von PC und Handy etc geht.

Mein Problem ist nicht dieses, sondern dass, dass ich ein Win CE 6.0 Gerät habe, eine Steuerung mit IPC und ein Win CE 5.0 Gerät Controlpannel habe. Ich möchte mit dem Pannel die Stuerung überwachen und steuern. Leider klappt die Komunikation nicht. Auch der entsprechende Suport des Lieferanden ergab bisher nicht den gewünschten Erfolg. Nun also eine weitere Variante, die Visualisierung läuft auf der Steuerung, dies funktioniert. Das Pannel greift irgenwie auf die Benutzeroberfläche der Steuerung zu und Bedient sie. Auch das mit mit einem PC kein Problem nur eben mit dem CE Gerät.

Ist ein natürlich eine Brust/Auge Lösung, aber es soll nur gezeigt werden und nicht effektiv eingesetzt werden.

02.09.2009 - 15:19 Uhr

Hallo Zusammen,

Hab da ein Anliegen, evtl. hat ja jemand Erfahrung.
Ich brauche eine VNC Verbindung also Server und Client, die beide Win CE geeignet sind. Einzeln ist das kein Problem, nur Zusammen hab ich bisher nichts gefunden. Wildes kombinieren funktioniert leider nicht.
Also ich habe einen Win CE, auf das ich gucken möchte und eine Win CE von dem ich gucken möchte, nirgends einen PC.
Hat da jemand mal was gebraucht und gefunden?

Gruß Daniel

19.08.2009 - 12:10 Uhr

Das mit dem Button.Tag war ne super Idee, hab es jetzt so umgesetzt und es geht sehr gut, wenn es nochmal wer sucht hier der Code:

private List<Button> setLöschenButtons()
        {
            List<Button> LöschenButtons = new List<Button>();
            for (int i = 0; i < 10; i++)
            {
                LöschenButtons.Add(new Button());
                Point _point = new Point(895, (116 + i * 64));
                LöschenButtons[i].Location = _point;
                Size _size = new Size(75, 23);
                LöschenButtons[i].Size=_size;
                LöschenButtons[i].Text = "Löschen";
                LöschenButtons[i].Visible = true;
                LöschenButtons[i].Tag = i;
                LöschenButtons[i].Click += new EventHandler(LöschenButton_Click);

                this.Controls.Add(LöschenButtons[i]);
            }
            return LöschenButtons;
        }

void LöschenButton_Click(object sender, EventArgs e)
        {
            Button tmp=(Button)sender;
            lbl_location.Text= tmp.Tag.ToString();
        }

Vielen Dank euch allen

19.08.2009 - 11:33 Uhr

Die Variante mit dem EventHandler, wie herbivore sie schreibt läuft ja auch super, aber ich komme dann nicht an meinen Laufindex heran. Ich hätte gerne Eine Funktion, die mir i mitgibt, damit ich damit dann auf die entsprechenden anderen Controls in andern Listen zu greifen kann. Deshalb hab ich aus den Gelinkten Beiträgen mir die Variante mit dem Eventhandler mit eiegenen Args gehohlt.

Eine Möglichkeit wäre, dass ich sender als Button caste, mir dann die X und Y Korordinaten hohle und die Auswerte, aber das muss doch irgendwie eleganter gehen

@ ErfinderDesRades: Weltklasse, das ist genau die Elegantere Lösung, die ich gesucht habe

19.08.2009 - 11:04 Uhr

Kurz dazu warum ich das mache und was ich will.

Ich habe eine Form um Konfigurationen vor zu nehmen, da hab ich massig Controls drauf, 10 Button, 1030 Checkboxen und 102 DropDown Menüs, und deshalb brauche ich im Evnthandler den Index, weil ich gerne die Controls in Schleifen abarbeiten will, also zuweisungen und so weiter.

19.08.2009 - 10:56 Uhr

Hallo zusammen,

Habe mich jetzt mit der MSDN und Artikel dazu beschäftigt. Leider hänge ich noch.

Ich möchte gerne Buttons in eine Liste packen. Das geht soweit schonmal.

private List<Button> setLöschenButtons()
        {
            List<Button> LöschenButtons = new List<Button>();
            for (int i = 0; i < 10; i++)
            {
                LöschenButtons.Add(new Button());
                Point _point = new Point(895, (116 + i * 74));
                LöschenButtons[i].Location = _point;
                Size _size = new Size(75, 23);
                LöschenButtons[i].Size=_size;
                LöschenButtons[i].Text = "Löschen";
                LöschenButtons[i].Visible = true;
-->         LöschenButtons[i].Click += ButtonClick(this,new OnClickEventArgs(i));
                this.Controls.Add(LöschenButtons[i]);
            }
            return LöschenButtons;
        }

Wird im Konstruktor der Form aufgerufen.
Da wo der Pfeil vor ist möchte ich gerne den EventHandler anhängen. So wie es da steht bekomme ich

Eine implizite Konvertierung vom Typ "void" in "System.EventHandler"

nehme ich die Parameter weg erhalte ich

Eine implizite Konvertierung vom Typ "System.EventHandler<TipTronic_IO_Modul_Konfig.Form1.OnClickEventArgs>" in "System.EventHandler" ist nicht möglich.

Wieder erwarten hilft mir die Erklährung der MSDN nicht wirklich.
Aschließend noch kurz den teil, wo ich den EventHandler beschrieben hab.


public event EventHandler<OnClickEventArgs> ButtonClick; 

protected virtual void OnButtonClick(int Gruppennummer)
        {
            EventHandler<OnClickEventArgs> buttonClick = this.ButtonClick;
            if (buttonClick != null)
            {
                buttonClick(this, new OnClickEventArgs(Gruppennummer));
            }
        }

        public class OnClickEventArgs : System.EventArgs
        {
            private readonly int gruppennummer;
            public OnClickEventArgs(int Gruppennummer)
                : base()
            {
                this.gruppennummer = Gruppennummer;
            }
            public int Gruppennummer
            { get { return this.gruppennummer; } }
        } 

Bestimmt hab ich nur was dummes vergessen.

Gruß Daniel

edit: ButtonClick eingefügt

17.08.2009 - 12:26 Uhr

Hallo Golo,

Ich habe Jahre lang in Holland Urlaub gemacht und kann dir als Tip sagen, wenn es dir von der Reihenfolge egal ist, lern erst Französisch. Auch wenn ich nicht vielk Französisch in der Schule gelernt hab, konnte ich mit den paar brocken + Englisch und Deutsch echt viel verstehen, also vom Wortschatz kommst du mit der kombination bestimmst schneller ans Ziel.

06.08.2009 - 12:31 Uhr

Hallo Timur Zanagar

VPN Tunnel?

Gruß Daniel

06.08.2009 - 12:00 Uhr

Bei mir an der FH ist der Bachelor Studiengang sehr verschult, also es wird alles vorgegeben, zum Glück hab ich noch nen Dipl. Studiengang. Sollte das bei deinem Masterstudiengang auch so sein, kann es sein, dass du nicht wirklich flexibel irgendwas nehmen kannst, weil alles Haar genau auf ein ander abgestimmt ist.

Wahlfächer haben wir natürlich auch, nur ob die immer angeboten werden ist die Frage, wobei ich denke, dass das Studienangebot an der TU Berlin deutlich Hochwertiger als an meiner kleinen FH sein wird.

06.08.2009 - 11:50 Uhr

Also,

Vorlesungen Besuchen, ja.
Prüfungsvorleistung (Übungen, oder was auch immer, sollte es die geben), evtl.
Prüfungen schreiben, mit sicherheit nein.

Der Masterstudiengang ist ja die erweiterung zum Bachelor und du kannst ja auch nicht zur Uni gehen ohne dein Abitur zuende gemacht zu haben. Aber wenn du Vorlesungen ohen Prüfungsvorleistungen hast, kannst du die ja also Gasthöhrer höhren und dann wenn du dich zum WS 11/12 (glaub ich) anmeldest in dem Prüfungszeitraum bevor die Vorlesungen starten schreiben.
Je nachdem wieviele das sind kannst du so nen Semester sparen, oder es zumindest relativ entspannt angehen und dann was anderes schon mit machen. Sollten die Master studiengänge auch so derbe verschult sein, wie bei uns die Bachelor- dann sehe ich da eher schwarz.

Gruß Daniel

25.06.2009 - 12:24 Uhr

Hallo

Du hast doch X und Y Koordinaten, damit kannst du dir 2 Dreiecke berechnen, eines das du gerade gefahren hast und eines welches du fahren willst, nun berechneste du den Winkel z.B. zur X Achse, wenn die nicht gleich sind musst du lenken, dafür solltest du natürlich wissen welche drehrate du mit welcher lenk zeit bekommst, oder dich einfach rann tasten, wenn du nur ganz wenig lenkst müsstest du dich eigntlich langsam an den soll Winkel ranarbeiten, wenn die Strecke noch lang genug ist.

10.06.2009 - 08:29 Uhr

zwei Möglichkeiten.

Entweder du besorgst dir irgendwo her Kartenmaterial für den fraglichen Bereich mit GPS Koordinaten, oder du bestimmst selbst einen Bereich, für den du das umsetzten willst und gehst hin und holst dir einen GPS Punkt via Gerät, von dem du dann rechnen kannst, wenn du nicht weist wie, nimmst du einen zweiten Punkt und rechnest x- und y-Koordinaten mit dreisatz aus.
Für eine Spaß AP, damit du gucken kannst wo du bist reicht die zweite, für eine "echte" Aplikation kauf dir Karten.

09.06.2009 - 13:47 Uhr

Musst du den definiert z.B. 0,2 ms warten, oder nur kürzer als 1ms, die frage ist was brauchst du genau, um nur un definiert kruz zu warten mach eine schleife mit definierter anzahl von durchläufen, z.B. leere for schleife und guck wie viele durch läufe du brauchst, messen kannst du das übrigens dann auch nicht mehr mit den üblichen Werkzeugen.

09.06.2009 - 13:37 Uhr

Dummer weise bekommst du damit keine genaue Zeit, da du nicht weist, wieviele Taktanteile Windows dir zur verfügung stellt, also nur als richtung, nicht als genaue immer gleiche Zeit

28.05.2009 - 13:27 Uhr

genau so wie du die beim staretn der anwendung da hin bekommst wo sie am anfang stehen

28.05.2009 - 13:11 Uhr

Auf jedenfall das gleiche

28.05.2009 - 13:06 Uhr

du hast die x und die y Position von beiden positionen

also nimmst du x1-x2
und y1-y2
jetzt hast du nen dreieck und rechnest du z frei nach dem alten grichen aus A²+b²=c² und so

28.05.2009 - 13:03 Uhr

Bin mir nicht ganz sicher, hab aber ne C++ Lösung

erstens A ist ein Double?

in C++ war es so, dass wenn du ein int durch einen int teilst du auch einen Int zurück bekommst, also rest wert division, versuche

A = (track_A.Value)/10,0;

26.05.2009 - 10:42 Uhr

Kommt aufs Haus an.

Wenn du ein ein Familienhaus, in dem nihct un endlich viel Stahlbeton verbaut ist versorgen willst, solltest du mit einem AP hinkommen, die haben ja ganz ordentliche reichweiten, wenn du den Garten mit dabei haben willst und der recht groß ist, guck nach nem AP mit entsprechender reichweite. Ob einer reicht wirst du wohl probieren müssen.

13.05.2009 - 10:40 Uhr

Sonst mach doch die überprüfung alt und neu wenn der User Enter Drückt, denke mal das AutoComplete damit bestätigt wird, damit hast du dann Copy&Paste auch raus, nur leider nicht wenn er nur das letzte Zeichen Autovervollständigt.

12.05.2009 - 13:25 Uhr

Hab da noch nen leider etwas schmutzigen Vorschlag. Habe mir die Events angeguckt und nichts gesehen, was auslöst wenn du Autoausfüllen nutzt, wie du schon sagst.
Merke dir doch in einer Variable den alten string, also den, den der User eintippt. Dies machst du im text change event.
Nutzt er nun AutoComplete, so ändert sich der text ja (fast) immer um mehr als ein zeichen, du kannst also einfach alt.length-neu.length>1 testen, trifft das zu hast du damit (fast) alle Fälle abgedeckt.

12.05.2009 - 12:57 Uhr

Möchtest du nur dann reagieren wenn der User AutoComplete nutzt, oder immer dann, wenn es sich um eine entsprechende eingabe handelt?

bsp: textbox inhalt: tes
autocomplete Vorschlag: testeingabe
User wählt aus und drückt enter

   optional könnte der Benutzer auch testeingabe selber schreiben  

möchtestd du reagieren wenn beides zutrifft, oder nur wenn der erste Fall auftritt?

Wenn du beides willst, nimm Jacks Lösung

07.05.2009 - 13:36 Uhr

Dann überprüf doch ob die items selektet sind

[edit] zu langsam

04.05.2009 - 12:31 Uhr

Hallo prom

zu deiner zweiten Frage, mach die lieber etwas länger und dafür für sinnvolle Funktionszusammenstellungen. Wenn du dir bsp. Office oder so anguckst und dir dann vorstellst, dass du für Fett schreiben, Kursiv und Unterstrichen jeweils ein Video anschauen müsstest fände ich das eher nervig, als wenn ich mir ein Video, das 3min dauert dafür ansehe. Schlechtes Beispiel, aber ich hoffe du verstehst was ich meine.

16.04.2009 - 12:18 Uhr

Zitat von Joetempes:
Ist ein Zahl durch n teilbar ohne Rest?
Ganz einfach: Ja, wenn ihre Quersumme durch n teilbar ist.

Funktioniert nur bei zahl>n*10, zuverlässig, sonst nur glückstreffen.

16.04.2009 - 12:15 Uhr

Außerdem ist die Rechnung falsch

zum beispiel 33 * 37 = 35² - 2² = 1225 - 4 = 1229.

Hier hast du + statt Minus gerechnet, es muss 1225 - 4 = 1221 heißen,
Dann ist das ergebnis auch richtig 😉

07.04.2009 - 08:05 Uhr

NotSuportedException tritt auf, weil in deinem CF der Exception Text nicht mit drin ist, es handelt sich um eine andere Exception, also entweder nach instalieren oder einzeln abfangen

03.04.2009 - 13:41 Uhr

Hast du die Variablen irgendwo Lokal zugewiesen und sie sind da wo du sie aufrufst nicht mehr gültig??

20.03.2009 - 14:40 Uhr

So, ich werde jetzt die Auswertung im hintergrund ablaufen lassen und die Auswertezeit begrenzen, so dass ich gar nicht an einen Punkt komme, wo die kritische Grenz überschritten wird.

Ich danke für die Mitthilfe

20.03.2009 - 13:21 Uhr

Ich benutze zur Auswertung natürlich das ByteArrey, ich erzeuge nur eine String um eine Klartext Ausgabe zu machen, gut der wird aus einigen Teilstrings zusammen gesetzt,a ber das ist hier nicht der Punkt, der Punkt ist die aneinanderreihung der Strings und hier werde ich mal gucken, dass ich eine Lösung finde.
Nur das ByteArray auszugeben, kann nicht die Lösung sein, da ich hierfür das tool nicht brauche, und es nur sehr wenig nutzen hätte, im endefekt geht es darum, fehler in der Komunikation sicht bar zu machen, hierfür habe ich auch wesentlich resourcen sparendere Varianten, dadurch, dass ich z.B. nur die fehlerhaften Protokolle ausgebe

20.03.2009 - 13:07 Uhr

Hallo zusammen,

Wollte kurz etwas zur Kirchensteuer situation sagen. Diese wird vom Staat lediglich an die Kirche abgeführt, dies ist eine Dienstleistung, die die Kirche bezahlen muss, hier geht es nur darum eine Zweitefinanzbehörde zu sparen, eigentlich gar nicht so sinn frei und angenehmer finde ich, als würde dies über ein Inkassobüro oder so geschehen.
Für andere Religionen, oder einrcihtungen als die Evangelische oder Katholische Kirche zieht der Staat keine gebühren ein, da diese einfach die Dienstleistung nicht gebucht haben, würden die Zeugen Jehovas das steuereintreibe Produkt buchen, würde der Staat das für die bestimmt auch machen.

20.03.2009 - 12:55 Uhr

Es wird also an der Zeit hängen. Nicht an iorgendwelchen Puffern oder sonst wo, d.h. ich muss mir etwas überlegen wie ich miene Ausgabe schmaler bekomme um das Problem zu lösen. Koreckt?

20.03.2009 - 12:53 Uhr

Mit der Stopwatch habe ich nun für ca 20k Auswertungen ca 70k ms gebraucht das sind dann etwas über 3ms je auswertung der Wert wird natürlich immer größer, kjelänger der String wird in den ich meine "Ausgabe" hinein schreibe, da dieser nicht an die Form übergeben wird.
bei ca 30k Auswertungen bin ich dummerweise schon bei 7ms.

Wenn ich das ganze mit Übergabe an die Form messe, also inkl. Invoke komme ich kurz vor dem Absturz nur auf 3ms je Aufruf.

Meine Auswertung ist wie oben geschrieben nicht sehr mächtig, nur die Ausgabe leider.

20.03.2009 - 11:27 Uhr

So, ich habe mal ein wenig mit definierten Werten getestet und unterschiedliche Programmaufbauten verglichen.

Umgebung: Ich sende alle 5ms ein Telegramm, das ist 5mal mehr als im normal Betrieb überhaupt kommen kann.

(Ich habe eine Version des Tool für WinCE und eine Für Win, getestet habe ich jetzt mit der Win version)

Normaler Aufbau, d.h. nach jedem empfangen Protokoll wird per invoke ein Text in eine Textbox geschrieben:
Laufzeit ~6sec, danach Programmabsturz mit ca55% CPU auslastung
Vermutung Threadpool zugroß?

Aufbau jedes empfangene Protokoll hängt einen String an einen Temporären String an, dieser wird über einen Timer alle 500ms in die Form geschrieben und der String gelöscht.
Laufzeit 10min, nach 10min abgebrochen. Es kam zwischendurch 4mal zu einem "verschlucken". Außerdem fehlen alle 500ms einige Protokolle, ich nummeriere die Automatisch durch, so dass ich Reihenfolge und Menge abschätzen kann
CPU Auslastung ~40-60% kurzzeitig habe ich auch mal 98% gesehen
Vermutung der Leistungsanstieg rührt nur von der größe des Strings her

Aufbau Protokolle werden nur empfangen und ausgewertet, es findet keine Ausgabe statt,
CPU last constant <10%

Die CPU Last beschreibt Maximalwerte, die Auslastung steigt mit der Zeit an.

Schlussfolgerung, das böseste ist der aufruf per invoke, jedoch erklährt das nicht das "verschlucken", da auch zwei ereignisse innerhalb weniger ms nach ein ander auftraten, d.h. an dieser stelle wurde höchstens ein invoke benutzt.
Außerdem sind im Verschluckfall einige Protokolle verloren gegangen.
An einer Stelle habe ich "falsches Protokoll" 170 fehlende Protokolle "3 mal Richtig" 40 fehlende "falsche protokolle".
vor dem ersten falschen kahmen auch eine andere falsche, vor dem ersten beschrieben Protokoll gab es eine längere Pause also ein schreib prozess, jedoch nicht in dem Punkt wo sich die Protokolle verschieben.

19.03.2009 - 11:32 Uhr

Hier Button reagiert nicht sofort in Multithreadumgebung
Habe ich von JAck30lena folgendes gefunden:

viele invokes in sehr kurzen abständen können auch die gui blockieren lassen.

Wenn dem so ist, wovon ich erstmal ungeprüft ausgehe, dann könnte es auch sein, das mein Problem die Ausgabe auf der Form ist, die ich ja per invoke machen muss.

Das könnte ich umgehen, indem ich einen zweiten Prozess starte, der in regelmäßigen Abständen (z.B. 500ms) den Buffer des SerialPorts ausliest und diesen Löscht, die daten aufnimmt zerstückelt aufbereitet und dann zusammenhängend ausgibt.

Die auswertung ist eigentlich nicht so aufwändig, es wird einmal geswitched je nachdem, ob ich alles auswerten will oder nur teile der Protokolle, und danach wird aufgrund der Befehle nach einem String geswitched. Dieser wird mit einem Zeitstempel versehen und ausgegeben.

Ich denke nicht, dass zweimal switch und nen nbischen String zusammen setzten sehr aufwendig ist, wenn invoke aber sehr "teuer" ist, könnte ich so ja ein paar herausnehemen.

Sodass ich Datarecieve komplett außenvor lasse und immer wieder gucke ob etwas vorhanden ist, ist zwar Polling, aber evtl hier sinnvoll.

19.03.2009 - 09:34 Uhr

Irrst du dich oder habe ich das hier falsch verstanden?

Das DataReceived-Ereignis wird in einem sekundären Thread ausgelöst, wenn Daten vom SerialPort-Objekt empfangen werden.

Genau da steht doch dass DataRecieved einen neuen Thread startet

18.03.2009 - 12:40 Uhr

Was passiert eigentlich, wenn Du den ReceivedBytesThreshold des Ports auf 6 setzt?

Keine Veränderung

Die Ereignisse PinChanged, DataReceived und ErrorReceived können u. U. in der falschen Reihenfolge auftreten, und es kann zu einer geringfügigen Verzögerungen kommen, wenn der zugrunde liegende Stream den Fehler meldet und der Ereignishandler ausgeführt wird. Es kann immer nur jeweils ein Ereignishandler ausgeführt werden.

Das DataReceived-Ereignis wird in einem sekundären Thread ausgelöst, wenn Daten vom SerialPort-Objekt empfangen werden.

Aus der MSDN Libary

Verstehe ich das richtig, dass es sein kann, dass DataRecieved nicht sofort sondern Zeitverzögert auslöst?
Des Weiteren, muss Der DataRecieved Thread abgearbeitet sein, bevor durch ein neues Ereignis ein neuer Thread gestartet wird?

Wenn dem beiden so ist, muss ich für fall 1 hoffen dass die verzögerung klein genug ist.
Für Fall 2 müsste ich die auslagerungsgeschichte machen.
Wenn ich aber auslager, also im DataRecieve Event einen neuen Thread starte, die Auswertung ist ohne hin Thread sicher, Startet sich dann nicht immer wieder der gleiche und ich habe genau die gleichen Probleme?

@Joetempes: Habe mir auch vorher schon dein Template angeguckt, die Teile die ich brauche verwende ich auch zumindest ziemlich ähnlich, den rest einstellungen und ausgabe mache ich ja eh anders und kann sie somit wohl auch leider nicht verwenden, wenn ich das bei mir verwenden würde, denke ich, dass ich einfach zuviel mitschleppe, was ich nicht brauche, bzw. nicht verwende.

17.03.2009 - 14:14 Uhr

Koreckt, ich habe auch bisher gedacht, dass ich lausche bis die Bedingung 6Bytes erfüllt ist. Da ich den SerialPort Puffer ja nicht lösche bin icvh nur jetzt gerade darauf gekommen, dass es ja sein kann, dass ich schon Teile aus ihm heraus lese, und die Daten so für folgende Prozesse nicht mehr sichtbar sind, ansonsten hängt sich ja "nur" der Thread auf, der keine 6Bytes bekommt.
Interesannt wäre hier wer dann vorrang hat, werden die 6Bytes erst von der Schleifer verarbeitet, die wartet, oder von der neuen?

17.03.2009 - 13:09 Uhr

Habe HyperTerminal nicht probiert, habe mich jedoch mit einem anderen Programm dran gehängt, es ist leider sehr schwer die entsprechende fehlerstelle zu finden, wenn man das ganze nicht so klar strukturiert bekommt, ich habe in der Anwendung eine Klartext ausgabe, welche mir das erkennen deutlich vereinfacht, es kommen leider zu viele Befehle, als dass man diese einfach so mit verfolgen kann, was die echtzeitfähigkeit angeht, kann ich leider nicht bestätigen, dass die ausgabe, bzw. die Ausgabe Zeit die koreckte ist.
Zur Zeit ist es so, dass ich wenn ich dieses Tool auf einer Windowsplattform nutze, dieses sich nach 3-5 min ohne Fehler aufhängt, anhand der Prozzessorauslastung gehe ich davon aus, dass das Tool hier zu viel Leistung benötigt.

Interesannter Weise findet das Tool ja wieder in das korekte Schema zurück, bisher hatte ich mit dem "einsammeln" der Protokolle im 6er Packet keine Probleme. Kann es sein, dass hier der knackpunkt liegt, habe leider gerade keine Entwicklungsumgebeung hier, sonst würde ich das schnell testen.
In meinem "HyperTerminal" bekomme ich manchmal mit einer eintreff zeit nur 3 Bytes und die anderen 3 dann etwas später. Wenn nun der Event auslöst, habe ich noch keine 6 Bytes "anliegen" also hänge ich in der schleife wenn nun im zweiten moment eder Rest und (ein Teil) des Antwort telegramms kommt, habe ich evtl. die ersten 3 Bytes schon ausgelesen, sie befinden sich also nicht mehr im Speicher???
Kommen die nächsten bytes rein, so wird ein neuer Prozess gestartet und die nun folgenden 6 Bytes eingelesen, es kommt zu vermeindlichen falschen Protokollen.

Das wäre eine Möglichkeit. Dafür müstte ich ja aber dann die Auswertung komplett in meinem GUI Thread machen, oder auch wo anders, zumindest irgendwo, wo ich in den gleichen readbuf von verschiedenen OnDataRecieve events schreiben kann.

Könnte dass das Problem sein?

16.03.2009 - 13:47 Uhr

Hallo zusammen,

irgendwie hab ich es ja mit meinen Com-Port Geschichten, aber irgendwie krieg ich den Rest immer selbst zusammen.

Mein Problem, ich habe ein Programm, welches Trafic mit liest und diesen auswertet.
Es läuft.
Soweit so gut.
Jetzt haben wir hier in der Firma eine neue Hardware entwickeln lassen, diese mit Hilfe meines Tools getestet, hier kommt es zu unplanmäßigen Ereignissen.
Und zwar erwarte ich 6 Byte lange Protokolle, die bekomme ich soweit auch, jedoch kommen zwischen durch nur "verstümmelte" Protokolle an, d.h. meine Rutine kommt durch ein ander, bzw. ich habe Verschiebungen im Protokoll.


4.3.2009 11:46:45:218 [00][0][0][117][0][00]
4.3.2009 11:46:45:109 [00][0][0][0][117][75]
4.3.2009 11:46:44:609 [00][0][0][117][118][76]
4.3.2009 11:46:44:500 [00][0][0][0][117][75]
4.3.2009 11:46:44:15 [00][0][0][117][0][76]<-- müsste mit 117 anfangen un 4x [00] folgen
4.3.2009 11:46:43:890 [75][0][0][0][0][75]<-- bis hier korekt
4.3.2009 11:46:43:375 [76][0][0][0][0][76]

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            empfangen();
        }

private void empfangen()
        {
            int numberOfBytesToRead = 6, count = 0;
            while (numberOfBytesToRead > 0)
            {
                if (serialPort1.BytesToRead > 0)
                {
                    numberOfBytesToRead -= serialPort1.Read(readbuf, 6 - 
numberOfBytesToRead, numberOfBytesToRead);
                }
                count++;
            }
            auswertung(readbuf);
        }//end of Empfangen

Die Auswertung spar ich mir hier, da hier nichts relevantes passiert denke ich.

Der Fehler ist mehr oder weniger reproduzierbar, wollte das eigentlich unserem Zulieferer in die Schuhe schieben, leider will er sich den Schuh nicht anziehen.

Im späteren Verlauf findet das Programm im übrigen wieder in den richtigen Trott rein und bleibt da dann auch drin. Fehlerhafte zeit ca 800ms

Kann es sein, dass ich hier ein Problem damit bekomme, dass andauernt neue Datarecieve Threads geöffnet werden, es sind schon einige.

Mit wenig Trafic konnte ich das Problem bisher nicht erkenne, habe aber eventuell zu kurz gewartet.

Vielen Dank schonmal für Ideen

06.03.2009 - 14:30 Uhr

Hallo Axxus

Was du sochst ist ein Buch über Assembler, ich kann dir leider kein konkretes Buch empfehlen, aber vieleicht ein Tip wenn du kein buch findest, dass sich explizit mit der Übersetzung beschäftigt, wenn du so an If-Verzweigungen interessiert bist, hohl dir ein Buch und überleg dir selbst du es funktioniert. Jedoch ist je nach ziel Plattform der Befehlssatz der Assembler Befehle u.U. unterschiedlich.

Der Befehlssatz ist i.A. sehr begrenzt.

03.03.2009 - 14:40 Uhr

Um das klarzustellen, du möchtest gerne das internet auf deinem Handy von PC beziehen. nicht mitz deinem Laptop über das Handy ins internet.

Habe ich das richtig verstanden?

Evtl wäre WLAN oder Bluetouth als Internet-Träger-Medium das Mittel der Wahl.

Die Standartsoftware hat das zumindest bei meinem damals (k800) nicht her gegeben.