C# Serielle Daten von Empfänger digitalisieren

df8oe

Cadet 2nd Year
Registriert
Dez. 2013
Beiträge
22
Hallo an alle,

Folgende Problemstellung habe ich:

Ich muss die Daten einer drahtlosen digitalen Übertragung mit dem PC "empfangen" und auswerten.

Das Datenformat ist bekannt: es wird in "normalem seriellem Format 4800b/s 8N1 per FSK übertragen. Der Empfänger besitzt aber keine serielle Schnittstelle oder vergleichbares - es ist ein SDR-Empfänger (auf Basis DVBT-Stick) der mit dem Programm SDR# (ist auch in C# geschrieben...) einen Audiostream erzeugt, den ich auf die Soundkarte leiten kann (oder eine "virtuelle Soundkarte" wie Virtual Cable). Um die Daten jedoch weiterzuverarbeiten muss dieser "Audiostream" irgendwie so wie eine serielle Schnittstelle ansprechbar sein. Das Ganze möchte ich rein auf Softwarebasis lösen und da der Rest des Programmes schon in C# fertig ist, möchte ich auch die "Datenacquise" gerne in C# durchführen. Kann mir jemand einen Einstieg geben, wo ich beginnen kann zu schauen?

Gruß
df8oe
 
Da suchst Du am besten eine SDK# Spezialisten. Letztendlich brauchst Du ein PlugIg für eine FSK Demodulation.

Dazu benötigst du eine FFT z.B. mit dem Goertzel Algorithmus.
 
Zuletzt bearbeitet:
Ich denke, das geht deutlich einfacher.

Die Demodulation wird schon vom Empfänger vorgenommen.

Ich kann die Aufgabenstellung auch wie folgt umschreiben:

Die TX-Datenleitung einer RS-232-Schnittstelle wird an den Mic-Eingang einer Soundkarte angeschlossen und ich möchte auf die Daten zugreifen. Die Daten sind mit 4800Baud 8N1 codiert. Also sozusagen "die Rechtecke" auf den Ausioeingang und wie komme ich dann an die Daten.

Da das Ganze in der Endlösung drahtlos erfolgt und der Empfänger eben nur einen Audio-Ausgang hat, kann ich nicht einfach die RS232-Schnittstelle direkt nutzen.

Gruß
df8oe
 
Das sieht für den ersten Schritt schon mal sehr gut aus! Ich denke, damit kann ich das Eingangssignal in ein Bit-Array verwandeln. Im zweiten Schritt müsste ich das Bit-Array parsen und gemäss des UART-Protokolls in Bytes verwandeln. Da ich nicht glaube, dass diese Aufgabe so unüblich ist, dachte ich, es gäbe auch dafür eine Bibliothek. Eine Funktion so mit auto-Baud-Erkennung usw :) die mir aus dem Bit-Array eben die empfangenen Bytes bastelt. Aber leider habe ich auch hier keinen Erfolg beim googlen gehabt :(
Wenn ich beim Empfang die Samplearate mindestens auf das zweifache der höchsten zu übertragenen Frequenz einstelle, bekomme ich diese und alle niedrigieren ja im Bit-Array. Obwohl es ab diesem Stand ja nicht mehr zeitkritisch ist, muss die Decoder-Routine ja trotzdem ermitteln, welche Baudrate vorliegt...

Gruß
df8oe
 
Zurück
Oben