PortDLLDemo

Download: PortDLLDemo_V1.0.zip

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