Forum: PC-Programmierung Bitstreams über serielle Schnittstelle am PC einlesen


von Sebastian B. (sebi)


Lesenswert?

Guten Abend/Morgen oder wie auch immer!
Ich hab hier ein kleines Transceiver-Modul, dessen Evolution-Board mir
größere Bit-Happen (~20Bit) auf einmal auf die RS232-Leitung richtung
Computer losjagt mit ungefähr 115kHz.
Gibt es irgendeine Möglichkeit diese Bitstreams zu erfassen? Ich denke
da an ein Programmchen in Visual C++. Hab hierzu gegoogelt, allerdings
nur ReadFile/WriteFile() gefunden, die mir auch nicht wirklich weiter
helfen, da sie ja RS232-mäßig arbeiten...
Oder soll ich doch noch einen Microcontroller und MAX232 mit dieser
Aufgabe betrauen?

Grüße, Sebi

von mr.chip (Gast)


Lesenswert?

Die Daten kommen also nicht kompatibel zur 'normalen' seriellen
Schnittstelle/RS232 an?

von MasterFX (Gast)


Lesenswert?

Der MAX232 macht nicht anderes als die Pegel anzupassen. Um zu sehen was
da kommt musst du schon an nen uC oder eben an nen Rechner mit mit
Terminal.
Da du geschrieben hast:
>>auf einmal auf die RS232-Leitung richtung
Computer losjagt mit ungefähr 115kHz.
Gehe ich mal davon aus, dass die Pegel schon nicht mehr TTL sind. Und
die 115kHz kommen von den 115200kbit/s (ist eben RS232). Also an den
Rechner klemmen und Terminal-Programm starten, dann siehst du auch die
Daten.

von Sebastian B. (sebi)


Lesenswert?

Morgen!
Sorry, hab mich etwas lax ausgedrückt:
Die Daten kommen als RS232-Pegel auf die Leitung (kann ich mitm Oszi
nachmessen). An die 115200bit/s bzw. baud dachte ich auch schon, nur
kann ich im Terminalprogramm am Computer nur wilde Zahlen erkennen. Das
liegt vlt. daran, dass keine Start/Stop-Bits gesendet werden, und die
Daten daher falsch interpretiert werden. Werds jetzt aber nochmal
probieren...
Wen's interessiert: Hab rausgefunden das man mit DeviceIOControl()
(statt C-Fkt. ioctl()) RTS/CTS usw. setzen und lesen kann, sieht aber
kompliziert aus, das dann in Bits umzuwandeln (ständiges Pollen, clk
rekonstruieren...)
Kennt jemand vlt. ein Terminal, das das schon kann??

Schönen Tag noch Sebi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist mit der UART-Hardware nicht möglich.
Der Ansatz, eine Art Software-UART zu veranstalten ist unter einem
Betriebssystem mit der geforderten Bitrate erst recht gar nicht
möglich, da mit einem Usermode-Programm allenfalls im Millisekundentakt
irgendwelche Peripheriezugriffe durchgeführt werden können.

Du wirst hierfür einen anderen Ansatz verwenden müssen und nicht ohne
zusätzliche Hardware auskommen.

Gibt es denn nur das Daten-, oder auch ein Taktsignal? In letzterem
Falle solltest Du Dir mal die programmierbare serielle Engine im
FT2232C näher ansehen, mit der lassen sich Schnittstellen wie I²C und
SPI betreiben.

von Sebastian B. (sebi)


Lesenswert?

Hei,
hier bin ich nochmal. Ihr hattet Recht, mit einem Terminal-Programm
gehts (hatte Probleme mit ein paar Freeware-Terminals, aber mit
realterm gehts).
Wen's interessiert: Es ging um das Auslesen eines nRF2401
Evolution/Configuration-Boards von Nordic Semiconductors. Die Daten
werden in folgendem Format gesendet:
0xd1 0x08 [package_size in bytes] [Data 0] [Data 1] .. [Data
package_size]
gesendet wird mit 115200 bps, 8 Bits Daten, keine Parity, kein
Handshake, 1 Stop-Bit... (naja was sonst :-) )

Viele Gruesse und Danke fuer eure Hilfe,
 Sebi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dann ist es ja doch kein Bitstrom, sondern 'ne normale asynchrone
serielle Übertragung.

Ich gratuliere zur Problemlösung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.