Skocz do zawartości

Tutorial obsługi portu COM - języki programowania - szukam


marciu11

Pomocna odpowiedź

Witam.

Poszukuję jakiegoś prostego tutoriala obrazującego wykorzystanie któregoś z języków programowania (Delphi, C++, Java itd) do napisania aplikacji umożliwiającej komunikację poprzez port RS (przejściówkę usb, blutacza) z mikroprocesorem, robotem.

Wiem iż są odpowiednie wtyczki do wykorzystania w Delphi czy C++ do komunikacji przez ComPort. Ale przydał by się napisany jakimś prostym językiem tutorial, jak to wykorzystać w praktyce. Jak zbudować ramkę danych, jak ją odpowiednio wysłać, odbierać i przetwarzać.

Na pewno nie jednej osobie marzył się taki kanał zwrotny, bądź dosterowanie swojej platformy mobilnej, choć by na miejsce docelowe.

Dość fajne lekcje znalazłem do Lego Mindstorm: http://mindstorms.pl/nqc

A przydało by się coś podobnego odnośnie PC-uP.

Link do komentarza
Share on other sites

ComPort do Delphi ma specjalny komponent, który zajmuję się obsługą ramek (przy odbieraniu), podajemy znaki końca i początku oraz inne parametry i odbiór jest dzięki temu sporo łatwiejszy, ponieważ otrzymujemy tylko poprawnie odebrane ramki.

Wysyłanie ramek z robota można zrealizować bardzo prosto, ja u siebie wysyłałem normalnie przez rs-232 odpowiednio formatowany tekst i to były moje ramki, nie tworzyłem sum kontrolnych etc. - do prostych zastosowań wystarczało. Przy bluetoothie nie robiło to żadnej różnicy, bo przecież na przykład przez BTM-222 można blue używać jak zwykły rs-232.

Link do komentarza
Share on other sites

A.Daniluk.-.RS232C.-.praktyczne programowanie

Książka bardzo dobrze wyczerpująca temat. Mam gdzieś napisaną obsługę portu Com w c badz C++ jak będziesz chętny, mogę się podzielić. Dawno jej używałem, ale powinna działać😉

Link do komentarza
Share on other sites

Dzięki za odpowiedz.

Właśnie BTM222 Chcę wykorzystać do komunikacji. Mam już nawet wykonane płytki (płyta główna i płytka z BTMem) Za trochę opiszę ją tutaj na forum. Co zrobiłem i co bym zrobił inaczej.

Ale wracając do tematu. Faktyczne wtyczka ComPort ułatwia sprawę. Wygrzebałem z zakurzonej szafy kumpla książkę do Delphi 4 i przypominam sobie ten język.

Mam pewien problem ze zrobieniem panelu ustawień do połączenia. Być może ktoś będzie umiał mi wyjaśnić co knocę.

Wartości ustawione na sztywno działają i program łączy się z portem COM. Ale nie umiem pobrać z listy prędkości co skonfigurowania połączenia.

Na formularzu mam dwa ComComboBox. ComComboBox1 i ComComboBox2.

W ComComboBox1 mam listę Com'ów (ustawione ComProperity na cpPort).

W ComComboBox2 mam listę BaudRate (ustawione ComProperity na cpBaudRate).

Następnie na ich podstawie chcę zestawić połączenie, po kliknięciu w przycisk:

ComPort.Port := ComComboBox1.Text; - pobiera mi COM'a - pobiera dobrze.

Ale gdy z drugiego Combo chcę pobrać BaudRate to wywala błąd:

ComPort.BaudRate:= ComComboBox2.Text; błąd ma postać:

[Error] sterowanie.pas(57): Incompatible types: 'TBaudRate' and 'String'

Niekompatybilność danych, Ok rozumiem. Ale jak to przekształcić?

Gdy na sztywno ustawię BaudRate połączenie się zestawia prawidłowo:

ComPort.BaudRate:= br1200; - oczywiście mogę wybrać inną prędkość

Ale chciał bym mieć możliwość konfiguracji tego parametru żeby nie wpisywać go na "sztywno" w programie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Wrzuć sobie na forme przycisk i w onClick wstaw sobie:
ComPort1.ShowSetupDialog;

Chyba o to Ci chodziło, prawda?

Nie do końca...

Gdybym nie rozwiązał sprawy, miałem to rozwiązanie zastosować, ale wolałem mieć "otwarcie" dwa pola listy i tam wybierać COM i prędkość.

Znalazłem iż jest coś takiego, jak BaudRateToStr i odwrotnie.

Jakoś nie mogłem tego w helpie znaleźć, trafiłem dopiero na jakimś przykładzie obsługi komponentu w necie.

wygląda to tak:

   ComPort.Port := ComComboBox1.Text;
   ComPort.BaudRate:= StrToBaudRate(ComComboBox2.Text);

i w drugą stronę:

   Edit2.Text := ComPort.Port;
   Edit3.Text := BaudRateToStr(ComPort.BaudRate);

O tyle śmieszne że nazwa COMa pobierana jest jako string a prędkość musi być dopiero poddana transformacji.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...