Laden...

Forenbeiträge von Joetempes Ingesamt 888 Beiträge

29.09.2009 - 08:00 Uhr

Hi,

nehme an das Ding ist nicht so richtig günstig, oder ?

ca. 300€

28.09.2009 - 12:50 Uhr

In der Firma machen wir prinzipiell etwas ähnliches. Dazu verwenden wir ActiveServer der Firma MOXA:

http://www.sphinxcomputer.de/moxa/industrial-remote-i-o-servers-active/m49-g338.html

Da noch einen Lichtschrankensensor angklemmt und schon hast du das was Du willst.
Das Signal schickt er dann ins Netzwerk (IP:Port).

18.09.2009 - 14:46 Uhr

Eclipse mit einem C#-Plugin dürfte noch gehen.

15.09.2009 - 09:57 Uhr

Ja, normaler Windows Druck, nix spezielles.
Schau Dir mal die Klasse **PrintDocument **an.

14.09.2009 - 12:51 Uhr

Verlink doch mal genau auf den Drucker den du meinst.

09.09.2009 - 11:23 Uhr

Ein über einen Umweg würde es gehen.
Anstatt Dein XMLDoc gleich als File zuspeichern, konvertierst Du es erst zu einem String, hängst ein "Environment.NewLine" dran & speicherst den String in einem File.

Fertig.

06.09.2009 - 08:36 Uhr

Und hier noch was um die Kommunikation mit der seriellen Schnittstelle zu verbessern:
Template SerialPort

04.09.2009 - 10:40 Uhr

Hallo,

ich such mir grad ein Wolf, weiss jemand wo ich im DGV einstellen kann, daß die Daten wie im Bild angezeigt werden?

01.09.2009 - 13:39 Uhr

Gib Dir Mühe dann schaffst Du es, ich verwende das Teil in unzähligen Projekten und passe es mir immer so an wie ich es brauche.

12.08.2009 - 09:02 Uhr

Is alles da, muß wohl bei dir liegen.

31.07.2009 - 15:33 Uhr

Dein Problem ist wohl das häufigste welches es im Zusammenhang mit der seriellen Schnittstelle gibt.

Das Thread.Sleep(x) tuts zwar erstmal, ist aber unsauber da u.a. ungenau.
Besser ist es auf eine Dir bekannte Abbruchbedinung zu prüfen.
Z.B. ein Zeilen-Ende oder ein Dir bekanntes Byte.

Ein Beispiel und vielleicht weitere Inspiration findest Du hier:

Template SerialPort

30.07.2009 - 08:17 Uhr

Guten Morgen allerseits,

Ihr hattet natürlich Recht. Ich hatte von gestern auf heute meine letzte Version laufen lassen, und hatte wieder 1000 Threads.

Jetzt habe ich die Version vom kleines_eichhoernchen implementiert.
Das scheint mir das Richtige zu sein, obwohl es ein Lock wahrscheinlich auch getan hätte.

Ich beobachte das jetzt mal und meld mich nochmal bei Bedarf.

29.07.2009 - 16:36 Uhr

Hab mal den Topic-Title angepasst, zum Rest äußere ich mich morgen.
Hab jetzt Feierabend, vielen Dank!

29.07.2009 - 15:38 Uhr

Spitzen-Tip, das hatte ich ja völlig übersehen. Hilfe...

29.07.2009 - 15:26 Uhr

Was genau implementierst du da denn?

Ich sende im Abstand von 100ms beliebige Daten (XML) aus einer Queue über
das Netztwerk.

Btw. der Code ist nicht threadsicher.

Wieso? Der inAction-Bool sperrt mir doch alles bestens!

29.07.2009 - 15:01 Uhr

Habs gelöst, ich beschreibs Euch mal:

Ich hab einen Timer, der alle 100ms ein Object aus einer Queue holt (Peek())
und via Socket versendet. Diese Methode gibt ein Bool zurück. Kommt ein True zurück wird das Object aus der Queue entfernt (Dequeue()).
Dieser Vorgang dauerte manchmal aber länger als 100ms und in der Zeit hat der Timer schon wieder das selbe Object raus geholt.
An der Stelle hat sich mein Algorithmus verhaspelt und die Threads haben sich hochgeschaukelt.

Ich sags Euch: Unsaubere Programmierung rächt sich!

Hier mein neuer Code, der alte war ohne das "InAction-Zeug":


public void Timer_elapsedTime(object sender, ElapsedEventArgs e)
{
            if (this.inAction)
                return;

            this.inAction = true;

            try
            {

                if (this.eventMessageQueue.Count > 0)
                {
                    SocketSender ss = new SocketSender(this.hostData.Ip, this.hostData.Port, this.source, this.eventMessageQueue.Peek());
                    if (ss.Send())
                        this.eventMessageQueue.Dequeue();
                }
            }
            finally
            {
                this.inAction = false;     
            }
        }

29.07.2009 - 12:35 Uhr

Ja, so siehts aus. Genau das ist ja mein Problem.
Bin grad schon mit meinen Kollegen bei einem Code-Review...

29.07.2009 - 07:40 Uhr

Vielen Dank für Eure Antworten.

Es sind leider tatsächlich über 1000 Threads, ich hab mal ein Bild vom Taskmanager angehangen. Ja und sporadische heißt nicht reproduzierbar und natürlich läuft das Programm nur in einer Produktivumgebung.

Ok, wird mir wo nichts anderes übrig bleiben als gründlich zu suchen....

28.07.2009 - 15:50 Uhr

Hallo,

ich habe eine Anwendung wo sporadisch ein Speicherleck auftritt.
Das heißt, der zugesicherte Arbeitsspeicher steigt um 1 GIG und die Anwendung
hat 1000 Threads.

Wie geht Ihr mit sowas um, wie lokalisiert man so ein Problem?
Im LogFile steht leider nichts.

Grüße

27.07.2009 - 11:14 Uhr

Das hier ist glaub ich was Du suchst:
Concate byte[]

21.07.2009 - 12:39 Uhr

Das was Jack gepostet hat "neodynamic" ist richtig Klasse!

16.07.2009 - 13:28 Uhr

Der Dienst soll dann die Daten selbst an der PCI-Schnittstelle abholen.

...das glaub ich weniger, wahrscheinlich verfügt die Messkarte eher noch über eine weitere Schnittstelle, wie z.b. seriell (RS232).

14.07.2009 - 13:56 Uhr

Also ich würde Dir ganz klar zu log4Net raten.
Besser gehts einfach nicht, das kann alles was du beschreibst, und umbiegen musst Du da nix.

14.07.2009 - 07:42 Uhr

Version 2.0.6 wurde released.

11.07.2009 - 17:45 Uhr

Und dann würde ich statt Array ein List<T> verwenden...

29.06.2009 - 15:33 Uhr

**
Zwei Methoden um log4Net-Appender zur Laufzeit hinzuzufügen und zu entfernen.**


/// <summary>
/// Add an appender to the given Root-Logger
/// <param name="i_loggerName">name of logger</param>
/// <param name="i_appender">Appender to add</param>
private void addAppender(string i_loggerName, IAppender i_appender)
{
       ILog log = LogManager.GetLogger(i_loggerName);
       Logger l = (Logger)log.Logger;
       l.AddAppender(i_appender);
}


/// <summary>
/// Remove an appender from the given Root-Logger
/// </summary>
/// <param name="i_loggerName">name of logger</param>
/// <param name="i_appenderName">name of Appender/param>
private void removeAppender(string i_loggerName, string i_appenderName)
{
       ILog log = LogManager.GetLogger(i_loggerName);
       Logger l = (Logger)log.Logger;
       l.RemoveAppender(i_appenderName);
}

Schlagwörter: log4net, Appender

26.06.2009 - 10:44 Uhr

Also ich kann Dir bei Thema "Konfiguration aus Files Laden und Speichern" nur
XML Serialisierung empfehlen. Besser geht es einfach nicht.

Hier hast Du ein Projekt von mir mit einem Beispiel:
FormMover

22.06.2009 - 08:07 Uhr

PS: Hab im BlogBook nichts gefunden dass es nicht weiterverbreitet werden darf. Somit dürfte ich gegen keine Rechte verstoßen haben.

1.5.Rechtlicher Hinweis (Seite 12)
Sämtliche Inhalte des .NET BlogBooks entstammen den Federn von Kai Gloth und Norbert Eder. Dementsprechend dürfen die Inhalte nicht ohne Zustimmung kopiert, vervielfältigt oder anderweitig verwendet werden. Eine Nichteinhaltung zieht rechtliche Konsequenzen nach sich.

Aber trotzdem Danke!

11.06.2009 - 10:41 Uhr

Hallo,

ich hab da ein Problem mit DLLs generell.
Bisher ist mir das nie aufgefallen, weil ich selten meine verwendeten DLLs
geupdatet habe oder nur meine eigenen verwendet habe.

Mein Problem ist, ich verwende DLL XY Version 1.0.0.1 in meiner Anwendung,
wenn es jetzt eine neue Version davon gibt, zb. 1.0.0.2, so kann ich die Alte nicht einfach überschreiben sondern ich muss das Projekt neu kompilieren.

Würde ich das nicht machen kommt so ein Fehler:

Die Datei oder Assembly "Npgsql, Version=2.0.4.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)

Also wenn man das weiss ist das ja kein Problem, aber irgendwie nervt das.

Mach ich das was falsch?

10.06.2009 - 13:08 Uhr

Bis auf "STRG - SHIFT - +" geht alles.
Wo stell ich das ein, ich finds einfach nicht?
Hab deutsches VS.

10.06.2009 - 11:23 Uhr

Funktionierts im Windows Hyper-Terminal?

10.06.2009 - 11:21 Uhr

Zu a.

Der Caller könnte seine eigene ID dem Programm in den Start-Argumenten mitgeben.
Du müsstest Dein Programm nur darauf anpassen.

10.06.2009 - 07:50 Uhr

@xxxprod

Bist Du Dir da sicher?
Ich hab das grad verwundert probiert, das funktioniert so nicht!

Als IDE verwende ich VS2008 Pro.

Grüße

09.06.2009 - 15:53 Uhr

Mit VS geht das nicht, Resharper dürfte das bestimmt können.

05.06.2009 - 18:02 Uhr

Hallo,

1.
Es ist normal, dass man nie weiss was, wann von der Schnittstelle kommt.

2.
Du wirst sehen, dass wenn Du den Sleep-Wert erhöhst auch gute Ergebnisse
erzeilen wirst. Das ist aber sehr unsauber, da nicht logisch gelöst.
Es ist besser auf eine Abbruchbedingung zu prüfen, wie das geht kannst du Dir z.B.
hier angucken:

Template SerialPort

04.06.2009 - 15:19 Uhr

Aber es gibt auch andere Meinungen, ich benutze grundsätzlich die "else If - Variante".

29.05.2009 - 11:55 Uhr

Die Console kannst Du verbergen indem Du die Anwendung als Applikation compilierst.

28.05.2009 - 09:16 Uhr

Also wir machen bei uns alles mit C# über Sockets. Die Anwendungen laufen rund um die Uhr und Probleme gibts nicht.

27.05.2009 - 12:59 Uhr

So ohne weiteres wird das nicht funktionieren.

Du könntest vielleicht nacheinander alle verfügbaren Ports öffnen und etwas hin senden, und dann die Antwort auswerten, ist die Antwort so wie Du Sie erwartest dann war es wohl Dein Gerät.