przechwytuj surowe dane w porcie COM

11

Mam urządzenie transmisyjne Bluetooth i mój komputer (Windows 7) jest do niego podłączony i skonfigurowany tak, jakby był podłączony przez port szeregowy RS232 (COM4). Jak mogę przechwycić nieprzetworzone dane przesyłane przez urządzenie Bluetooth lub, odpowiednio, nieprzetworzone dane odebrane w COM4?

użytkownik11395
źródło
O ile wiem, nie jest to pytanie dotyczące elektroniki.
Brian Carlton,
5
Właściwie myślę, że jest to temat. Istnieje kilka programów, które mogą przechwytywać dane szeregowe z portu COM (niektóre z nich, nawet gdy inna aplikacja korzysta z portu), a oprogramowanie jest na tyle wyspecjalizowane, że większość ludzi nie wie, że istnieje. Minusem jest to, że po spędzeniu czasu na poszukiwaniu takiego oprogramowania nie mogłem znaleźć żadnego, który działałby dobrze na komputerach post XP.
AndrejaKo,
szukasz takiego narzędzia? com0com.cvs.sourceforge.net/viewvc/com0com/hub4com/…
kenny

Odpowiedzi:

9

Możesz użyć standardowego programu terminalowego do przechwytywania danych w różnych formatach. Sugeruję korzystanie z Bray's Terminal , jest to naprawdę łatwe i ma wiele opcji!

A może chcesz przechwycić i zinterpretować dane w jakiejś własnej aplikacji?

Wynicować
źródło
Dziękuję Ci! Nie szukam interpretacji danych. Chcę tylko otrzymywać surowe dane i móc je zapisać w pliku. Próbuję dowiedzieć się, co faktycznie transmituje moje urządzenie Bluetooth. Czy terminal Braya zrobiłby to dla mnie?
user11395,
@ user11395 - tak, zrobi to każde przyzwoite oprogramowanie terminala, ja też używam Bray's Terminal - Putty jest kolejnym dobrym ... Wskazówka - jeśli masz problemy z łączeniem się w Bray's Terminal, przejdź do właściwości urządzenia modułu BT w Windows (Control Panel -> Urządzenia Bluetooth, kliknij prawym przyciskiem myszy i wybierz „właściwości”), a następnie usuń zaznaczenie i ponownie zaznacz usługę SPP.
Oli Glaser,
dzięki Oli. Prowadzę Terminal Bray'a, ale coś wydaje się nie tak. „Ponownie skanuję” porty, znajduję port COM4, ​​łączę się z COM4, ​​a następnie widzę przechwytywanie danych. Jednak nie sądzę, aby były poprawne. Nie jestem pewien co do wartości szybkości transmisji / bitów danych / bitów zatrzymania parzystości / uzgadniania, które powinienem wybrać. Jakieś sugestie?
user11395,
Zasadniczo moduły są ustawione na 9600,1, N (1 bit stopu, bez parzystości), ale 115200 jest również powszechny (może to wskazywać, jakie są wartości domyślne, gdziekolwiek go kupiłeś) Ustaw także na brak uzgadniania. Możesz ustawić prędkość transmisji za pomocą polecenia AT (nie poprzez łącze bezprzewodowe, musisz podłączyć się bezpośrednio do pinów modułu Rx / Tx). Przed wypróbowaniem tego, wysyłaj wielokrotnie znaną postać i po prostu zacznij od najwolniejszej prędkości transmisji i przejdź do góry - jeden z nich powinien wygenerować poprawne dane.
Oli Glaser,
Udało mi się przechwycić dane za pomocą terminala Braya. Bez względu na to, czy wybiorę szybkość transmisji 9600 lub 115200 na terminalu Bray, otrzymam te same dane (które wydają się poprawne). Dlaczego obie opcje dają taki sam wynik? Odkryłem również, że moje urządzenie ma szybkość transmisji 115200, ale o ile widzę w menedżerze urządzeń, ten port COM jest ustawiony na prędkość transmisji 9600 (domyślnie. Czy powinienem to zmienić?
user11395,
2

Najlepszym rozwiązaniem, jakie znalazłem, choć nieco prymitywnym, jest Tera Term http://ttssh2.sourceforge.jp/index.html.en .

Bray's nie gra dobrze z Windows 8. Chociaż nie można powiedzieć, co dokładnie robi bez źródła, wydaje się, że przyjmuje pewne założenia dotyczące lokalizacji ustawienia rejestru.

portmon również nie działał dla mnie w systemie Windows 8.

jkschneider
źródło
Używam Braya w najnowszej wersji Win 10, więc nadal działa, przynajmniej w niektórych przypadkach. Mój komputer ma zainstalowany tylko COM3.
Chris Dragon,
2

Moim osobistym ulubionym emulatorem terminali do debugowania jest RealTerm, który ma niezłą gamę opcji wyświetlania dla systemów wbudowanych. Zarówno RS-232, jak i TCP / IP działają dobrze pod Windows 7 x64 i niższymi (nie próbowałem pod Win 8, ale nie mam powodu, aby sądzić, że to nie zadziała). Kilka funkcji, które uważam za szczególnie przydatne, to:

  • Widok danych ASCII / HEX
  • Pliki przechwytywania mogą zawierać znaczniki czasu
  • Istnieje łatwy sposób wysyłania sekwencji danych binarnych
  • Sprzętowe styki kontroli przepływu można łatwo monitorować / zmieniać

Istnieje również kilka innych opcji dla I2C, SPI, Dallas 1-wire i GPIB. Nie korzystałem osobiście z tych funkcji, ale jest dobre podsumowanie na stronie SourceForge powyżej. Oto zrzut ekranu widoku głównej karty wyświetlania:

wprowadź opis zdjęcia tutaj

PeterJ
źródło
1

Polecam także bray, jeśli nie jesteś pewien szybkości transmisji otwórz menedżera sprzętu, przejdź do portów COM i wybierz właściwości, jest tam wymieniony, choć nie zawsze dokładny.

s3c
źródło
Udało mi się przechwycić dane za pomocą terminala Braya. Bez względu na to, czy wybiorę szybkość transmisji 9600 lub 115200 na terminalu Bray, otrzymam te same dane (które wydają się poprawne). Dlaczego obie opcje dają taki sam wynik? Odkryłem również, że moje urządzenie ma szybkość transmisji 115200, ale o ile widzę w menedżerze urządzeń, ten port COM jest ustawiony na prędkość transmisji 9600 (domyślnie. Czy powinienem to zmienić?
user11395,
1

Istnieje portmon : narzędzie sysinternals, które działa jako zakres danych dla portów COM.

Axeman
źródło
1
Z mojego doświadczenia nie działa w systemach Windows x64.
JonCage
1

W zależności od dokładnych wymagań pomocne może być użycie mikrokontrolera, który może przechwytywać i oznaczać datą dane, a następnie przesyłać je do komputera. UART-y znalezione w przeszłości na typowych komputerach PC były w stanie rejestrować dokładne informacje o taktowaniu lub przechwytywać dane 9-bitowe, umożliwiając procesorowi przechwytywanie każdego bajtu po jego dostarczeniu, bez buforowania; później systemy operacyjne i sterowniki na ogół nie są do tego przystosowane, a układy UART-USB są pod tym względem beznadziejne. Jeśli twój komputer może odbierać dane z dwukrotnie większą prędkością, możesz mieć mikrokontroler odbierający bajty danych i za każdy bajt wysyłający dwa bajty. Pierwszy bajt miałby ustawiony MSB, raportował MSB (lub dwa MSB, jeśli 9-bitowe) przychodzących danych w kolejnych bitach, i użyj dolnych 5 (lub 4) bitów, aby zgłosić ilość czasu (0-30 lub 0-14) od środka bitu stopu poprzedniego bajtu (mierzonego w jednostkach np. jednego bitu czasu). Drugi bajt wyczyściłby MSB i zawierałby pozostałe 7 bitów danych. Gdy żadne dane nie są przesyłane, znaki stymulacji FF będą wysyłane co 30 (lub 14) bitów. Oprogramowanie odbierające te raporty byłoby zatem w stanie bardzo precyzyjnie (w ciągu jednego bitu) odtworzyć dokładny czas przychodzących danych. Jeśli szybkość przesyłania danych do komputera była czterokrotnie większa niż monitorowana szybkość danych, można by użyć tego ogólnego schematu do multipleksowania dwóch kanałów odbiorczych w jednym porcie PC (użyj kawałka bajtu nagłówka, aby określić, czy zawiera dane dla pierwszego czy drugiego Port). Chociaż mierzenie czasu z dokładnością do jednego bitu może wydawać się nadmierne, są chwile, które mogą być przydatne,

supercat
źródło