|
Ansteuerung der PortDLL aus C#/dotNET
Das Programm ist ein Beispiel dafür, wie man mittels der PortDLL die Leitungen DTR,RTS und TXD schalten, DSR, CTS, DSD und RI auslesen, sowie einen einfachen Signalgenerator implementieren kann.
Es ist sicher nicht als Beispiel für zeitgemäße oder effiziente Programmierung der Seriellen Schnittstelle bzw. von zeitkritischen Applikationen unter C#/dotNET zu verstehen. Aber vielleicht hilft es dem einen oder anderen dabei weitere Programme für die PortDLL nach C# zu portieren, die tollen Sachen auf Burkhard Kainkas Seite auszuprobieren oder einfach nur den ein oder anderen Teil des Codes für eigene Programme zu verwenden.
Der Signalgenerator ist "experimentell". Er schafft auf meinem Rechner bis zu 25KHz. Aufgrund der Einschränkungen (Overhead / absichtlich nicht abgeschaltetes Multitasking) kann man keine ganz genaue Frequenzvorgabe machen, deshalb wird nicht die Vorgabe, sondern die mittels PerformanceCounter gemessene tatsächliche Frequenz angezeigt.
Wer will kann ja mal einen Lautsprecher z.B. an TXD anschließen und den Signalgenerator auf ca. 20KHz fahren so dass man nur noch die Störungen durch Taskwechsel hört. Mit einiger Übung kann man ganz gut einschätzen was gerade auf dem Rechner los ist (-;
Die von mir implementierte Methode "microsleep()" verursacht eine hohe CPU-Last. Das war aber auf die Schnelle das Beste was ich machen konnte. Hier wäre es schön eine Methode zu haben, die auch Wartezeit im Microsekunden-Bereich an den Scheduler respektive andere Tasks disponiert. Irgendwo in Kernel32.dll gibt es sowas wohl... Ach ja, Thread.sleep() gibt zwar die CPU frei, aber ist nur bis ca. 30 Hz zu gebrauchen. Die Funktionen PortDLL.DELAYUS() und PortDLL.TIMEREADUS() funktionieren auf meinem Rechner bzw. mit meiner port.dll leider nicht.
Das Ganze sollte sich mit Visual C# 2005 Express Edition oder Visual Studio 2005 übersetzen lassen. Die "port.dll" muss sich entweder im Windows Verzeichnis befinden oder da wo die ausführbare Datei dieses Programmes liegt. Sourcen und Programm sind von mir für die freie private Verwendung freigegeben und unterliegen keinen Lizenzbedingungen, außer dass weder eine Haftung dafür übernehme noch irgendeine Funktionalität garantiere. Die Benutzung erfolgt also auf eigene Gefahr!
Wer findet, dass dieses Programm oder der Source in irgend einer Form nützlich ist, der kann mir ja eine Mail oder eine Postkarte schreiben.
Also dann, viel Spaß damit! Sascha
|