Serielle Schnittstelle mit Visual Studio

Gast #717974
Lesenswert?

Guten Tag,
für ein Projekt benötige ich eine serielle Schnittstelle, die im 
Millisekundenbereich arbeitet. Ich habe ein Empfangsraster von 10ms in 
dem meine Daten ausgewertet werden müssen. Mit dem NET. Framework habe 
ich bereits eine serielle Schnittstelle in Betrieb gehabt, allerdings 
habe ich zeitliche Schwankungen indem mein System maximal in 200ms die 
Daten auswertet. Viel zu langsam...für meine Anwendung !!

Ohne das Framework bin ich vermutlich wesentlich schneller.

Dafür benötige ich aber eine Initialisierungs Datei für die serielle 
Schnittstelle. " C# "

Wo kann ich so etwas herbekommen bzw. runterladen ?

Wer kann mir helfen ?
Persönliche Seite #718034
Lesenswert?

Wenn Du C# verwendest, kommst Du um das .Net-Framework nicht herum. Du 
müsstest schon eine "echte" Programmiersprache wie C oder C++ (und 
nicht 'managed C++') verwenden.

Allerdings nehme ich eher an, daß es ein Design- bzw. Verständnisproblem 
bei Dir geben dürfte. Zunächst einmal beträgt die Granularität des 
Windows-Schedulers üblicherweise 10 msec, man kann sie bestenfalls auf 1 
msec verfeinern.
Daher ist auf einem normal laufenden Windowssystem eine Reaktionszeit 
oder auch wiederkehrende Abhandlung im 10 msec-Raster nicht zu 
realisieren.
Du wirst ein ganzzahliges Vielfaches dieses 10 msec-Rasters zu Gesicht 
bekommen. Desweiteren solltest Du Dir Dein serielles Protokoll sehr 
genau ansehen - liest Du einzelne Bytes oder gibst Du der Schnittstelle 
und dem Treiber die Chance, mehrere Bytes "auf einmal" zu empfangen, so 
daß diese vom Treiber am Stück an Deine Anwendung übergeben werden?

Mit welcher Baudrate und welcher Art von Protokoll arbeitest Du derzeit?
Gast #718068
Lesenswert?

Hallo Rufus!

ich arbeite mit 9600 Baud. Mein Received Byte Threshold steht auf 1, 
quasi sobald ein Byte kommt, wird der Read Event ausgelöst.


Ach und Du hattest natürlich recht, außerhalb vom Framework werde ich 
mit C programmieren.

Kann man nicht irgendwelche System Prioritäten verändern ? ? Ich muss 
innerhalb von 50ms eine Antwort senden!

Als CPU verwende ich einen Intel XScale PXA270 (312MHz) !

Gruss
Gast #718075
Lesenswert?

Bei 9600 Bit/s braucht ein Zeichen ca. 1ms, in 10ms kann da also nicht 
viel übertragen werden. Steht denn der Empfangsfifo von der 
Schnittstelle auch auf 1 Zeichen? Sonst sammelt die Hardware eventuell 
noch bevor ein Interrupt ausgelöst wird.
#718454
Lesenswert?

Ich arbeite mit VC++ und MFC auf virtuellem COM-Port über FT232 mit 
921600 Baud problemlos. Hardware-Handshake und ab geht die Post. 
Allerdings darf man bei Windows halt nicht erwarten, eine garantierte 
Antwortzeit zu erreichen.

Windows ist nun mal nicht echtzeitfähig, selbst wenn man eine Antwort 
erst in 2 Stunden bekommen muss, kann es sein, dass sich ein Dienst 
o.ä. auf Kernel-Ebene das System krallt und erst in 2 Stunden 15 Minuten 
wieder dem User zur Verfügung stellt. Pech gehabt.
Gast #718669
Lesenswert?

Hallo !

Danke für Eure Antworten. Es muss doch möglich sein das man auch unter 
WinCE
eine serielle Schnittstelle in einem Raster von 10ms auswerten kann?
Was ist denn wenn ich eine ebene Tiefe irgendwelche Systemparameter die 
mit der seriellen Schnittstelle zu tun haben einstelle oder die direkt 
ohne das Framework programmiere, um das zeitliche Management zu 
verbessern? ?

Gibt es denn keine Lösung ?
#718712
Lesenswert?

Achso, Windows CE. naja, das erfüllt zumindest schon mal die 
grundlegenden Anforderungen an ein Echtzeit-OS. Allerdings ist da meines 
Wissens viel Handarbeit nötig, um einen Echtzeit-Prozess zu bauen.

Lässt du deine Com-Port-Abfrage in einem Thread laufen? Wenn ja, welche 
Priorität hat der? Man kann bei CE.NET 256 Prioritätsstufen vergeben, 0 
bis 8 sind wohl irgendwie Echtzeitfähig. Eventuell gehts darüber.
Hier findest du Tipps: 
http://www.ceesar.ch/cms/upload/pdf/infotronic/05_Taskmanagement_Printed.pdf
Da steht z.B. auch, dass der Scheduler 100ms round-robin zeit im 
Normalfall hat.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren