Popularny post GAndaLF Napisano Wrzesień 6, 2011 Popularny post Udostępnij Napisano Wrzesień 6, 2011 W ostatnim czasie zauważyłem, że problem komunikacji z komputerem za pomocą portu szeregowego jest dość często poruszany na naszym forum. Tak się składa, że napisałem już kilka programów komunikacyjnych, więc postanowiłem stworzyć mały tutorial. W niniejszym artykule opiszę pokrótce interfejs USART, w który wyposażona jest większość popularnych mikrokontrolerów. Jednak głównym tematem będzie stworzenie aplikacji na komputer PC mogącej za pomocą portu szeregowego komunikować się z mikrokontrolerem wykorzystującym właśnie USART. Takie rozwiązanie umożliwia nie tylko przesyłanie danych za pomocą RS232 ale również przez USB i konwerter FT232, bluetooth, IrDA i inne interfejsy używające wirtualnego portu COM. UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.Przeczytaj całość »Poniżej znajdują się komentarze powiązane z tym wpisem. TutorialCOM.rar 3 Cytuj Link do komentarza Share on other sites More sharing options...
niciki Wrzesień 6, 2011 Udostępnij Wrzesień 6, 2011 Przeczytałem cały Twój artykuł i muszę powiedzieć, że tytuł: [Programowanie] Port szeregowy i interfejs USART czyli komunikacja mikrokontrolera z komputerem. nie odzwierciedla głównego tematu tego artykułu, którym jest: Jednak głównym tematem będzie stworzenie aplikacji na komputer PC mogącej za pomocą portu szeregowego komunikować się z mikrokontrolerem wykorzystującym właśnie USART Dopisek [Programowanie] też tutaj niczego nie zmienia, a tylko wprowadza zamieszanie 😉 Dodatkowo, jeżeli chodzi już o samo Visual Studio, to warto zwrócić uwagę na to, że programy w nim napisane nie są w pełni przenoszalne na inne komputery, które nie mają wgranego środowiska Visual Studio, ani frameworków. Nawet, gdy dołączysz potrzebne biblioteki dynamiczne .dll do Twojego programu. Z drugiej jednak strony artykuł ten może spowodować, że więcej osób będzie mogła zacząć przygodę z C++ na PC 🙂 Dzięki! Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Wrzesień 6, 2011 Autor tematu Udostępnij Wrzesień 6, 2011 Początkowo myślałem, żeby artykuł obejmował więcej zagadnień. Ale w trakcie pisania zdałem sobie sprawę, że lepiej będzie go podzielić. W aktualnej wersji rzeczywiście jest to głównie artykuł o Visual Studio i przykładowym programie wykorzystującym Serial Port. A to dlatego, że jednak dużo osób może nie znać tego środowiska. Wyjaśnienia, które starałem się skracać jak tylko mogłem, i tak rozrosły się do sporych rozmiarów. Ale to chyba dobrze, bo jak ktoś umie programować to mu ten artykuł tak naprawdę nie potrzebny. Może jak dojdzie druga część to tytuł nie będzie Cię tak kuł w oczy. Cytuj Link do komentarza Share on other sites More sharing options...
BlackJack Wrzesień 6, 2011 Udostępnij Wrzesień 6, 2011 Tzn. ja właśnie wróciłem z pracy i mogę być trochę teges.. niedysponowany, ale mnie szczerze zdezorientował już sam wstęp ? Jednak głównym tematem będzie stworzenie aplikacji na komputer PC mogącej za pomocą portu szeregowego komunikować się z mikrokontrolerem wykorzystującym właśnie USART. Takie rozwiązanie umożliwia nie tylko przesyłanie danych za pomocą RS232 ale również przez USB i konwerter FT232, bluetooth, IrDA i inne interfejsy używające wirtualnego portu COM. Tzn. przykład jest na klasycznym Hardwer RS232, czy na przelotce USB<>RS232 ? Dla czego pytam ? Otóż akurat dzisiaj dotarła wreszcie do mnie płytka PICDuino, czy ARDUINO na procesorze PIC18F2550, który to właśnie ma w/na sobie 2 możliwości komunikacji: A. klasyczne rozwiązanie z ARDUINO, czyli konwerter USB<>RS232 na FT232. B. Sprzętowy port USB1.1/2.0 wbudowany w procesor PIC18F2550. Na początek fajnie jak bym umiał sobie napisać aplikację na konwerterek USB<>RS232, ale tak naprawdę to problem w moim przypadku jest taki że brak artykułów, łopatologicznie tłumaczących jak obsłużyć sobie czyste USB niż RS232. Cóż RS232 to raczej gatunek, który Darwinowsko mówiąc uchował się jeszcze jako tako tylko w stacjonarnych PC-teach, w laptopach już go nie ma, a jak jest to w postaci kart PCMICA, które po rozgryzieniu Chipu który w nich siedzi i tak okazują się konwerterami USB<>RS232. Ale art. fajny. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
GAndaLF Wrzesień 6, 2011 Autor tematu Udostępnij Wrzesień 6, 2011 Testowałem ten program na FT232RL ale na kablu USB<>RS spokojnie też powinien działać. Program obsługuje to co system operacyjny widzi jako COM. Czyli wszystkie wirtualne porty obsługuje się dokładnie tak samo jak RSa. Natomiast jeśli chodzi o obsługę czystego interfejsu USB z tego co wiem, nie ma na platformie .NET dedykowanych bibliotek microsoftu. Trzeba używać Win32 API do którego nie ma łopatologicznych tutoriali ponieważ jego obsługa sama w sobie jest trudna i trzeba spędzić dość dużo czasu żeby to zrozumieć. Mi na przykład jeszcze to się nie udało. Alternatywą są open sourcowe projekty biblioteki do obsługi USB jak naprzykład sharpusblib (http://www.icsharpcode.net/opensource/sharpusblib/) Niestety w tym wypadku też nie jestem w stanie pomóc bo nie mam doświadczenia. Z tego co się orientuje w innych popularnych środowiskach np w Javie problem braku odpowiednich bibliotek do obsługi USB też występuje. Cytuj Link do komentarza Share on other sites More sharing options...
dzarek Wrzesień 7, 2011 Udostępnij Wrzesień 7, 2011 przeczytałem temat postu i stwierdziłem, że to kolejny (czytaj bezsensowny) artykuł, a tu takie zaskoczenie 🙂 gratuluje pomysłu i wykonania. Jak dla mnie bomba Cytuj Link do komentarza Share on other sites More sharing options...
marciu11 Wrzesień 7, 2011 Udostępnij Wrzesień 7, 2011 BlackJakc! Napisanie własnego stosu obsługi USB (nawet jak masz sprzętowe wejście w procku) to wyższa szkoła jazdy. Nawet zajęcie się tym tematem od strony komputera i aplikacji na nim nie jest rzeczą najłatwiejszą. a na pewno wykracza poza ramy "podstaw programowania". Może sam RS232 w komputerach odszedł już do lamusa. Ale w dziedzinie mikroprocesorów dzięki Uartowi i łatwości jego oprogramowania i sposobu podłączenia żył będzie jeszcze długo i dobrze 🙂 A do komunikacji z komputerem na szczęście wymyślili takie przejściówki jak FT232 i podobne - niech bogi sprzyjają twórcom ich dzieciom i wnukom 🙂 A krowy ich opływają w mleko... 😋 Odnośnie samego tutka i wybranego języka programowego. No cóż. Zacznę od tego. GAndaLF za rozwinięcie tematu w części drugiej. Tyczącego się już samej komunikacji i sposobów jej budowania (ramki danych komunikacja od strony procesora - odbiór interpretacja i wysłanie danych). Wydrukuję Twoje zdjęcie A3 oprawię w ramki oświetlę w koło migającymi diodkami i co dzień rano zapalając kadzidełko będę się modlił do niego 😉 Wybór środowiska no cóż do najtrafniejszych nie należy. Jak już wspomniał "przedmówca" nie jest to najbardziej przenośnie środowisko z możliwych. Już lepiej było by opierać przykłady o leciwe Delphi... Mimo iż większość na słowo Delphi część fanów C i pochodnych robi łeee. To atutem tego środowiska jest łatwość w nim pisania dla początkujących. Komponenty do obsługi seriala są wręcz banalne i łatwe do zrozumienia. Oczywiście nie upieram się przy Delphi. Ale argumentem może być fakt iż mimo że to język już leciwy to mimo to powstaje w nim do dziś sporo fajnych aplikacji. Oczywiście jak nie Delphi to pomyśl nad jakimś bardziej standardowym "C". Nie mniej wielkie dzięki za zajęcie się tym tematem. Z niecierpliwością będę czekał na ciąg dalszy i rezerwuję już arkusz papieru na wydruk zdjęcia 😉 Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Wrzesień 7, 2011 Autor tematu Udostępnij Wrzesień 7, 2011 Moim zdaniem wasza awersja do Visual Studio jest trochę przesadzona. Owszem nie jest w pełni przenaszalne (?) pomiędzy komputerami. Instalacja .NET Framework jednak w dużej mierze rozwiązuje ten problem. Wybrałem to środowisko głównie ze względu na łatwość pisania programu i doskonały dostęp do dokumentacji i tutoriali. Ten język jest w internecie opisany po prostu doskonale i to na każdym poziomie zaawansowania. Dlatego właśnie jest moim zdaniem dobry dla początkujących. Poza tym programiści .NET są poszukiwani przez wiele firm co jest kolejnym powodem dla którego dobrze się nim zainteresować. W moich oczach jedyną sensowną alternatywą mogła by być Java, która również posiada całkiem sporo pomocy w internecie, jest popularna wśród profesjonalnych programistów a do tego odpada problem przenośności kodu. Cytuj Link do komentarza Share on other sites More sharing options...
BlackJack Wrzesień 7, 2011 Udostępnij Wrzesień 7, 2011 BlackJakc! Napisanie własnego stosu obsługi USB (nawet jak masz sprzętowe wejście w procku) to wyższa szkoła jazdy. Nawet zajęcie się tym tematem od strony komputera i aplikacji na nim nie jest rzeczą najłatwiejszą. a na pewno wykracza poza ramy "podstaw programowania". Tzn. ja w temat nie zdążyłem się jeszcze wdrążyć ten PIC18Fxx to właściwie mój pierwszy uC z USB, jaki wylądował mi na stole, ale jestem średnim optymistom i mam nadzieje że Microchip na swojej stronie ma jakiś sensowny PDF. czy nawet bibliotekę do tego. A ja mam taką naturę wyssaną w dzieciństwie z BASICA na C64, że jak jakiś sprzet w procku mam, to jednak chciałbym go wykorzystać. Co prawda dzisiaj wielu sie śmieje że tam metody programowania z czasów ATRAI, C64 itd. to dziś przeżytek jak dopłacając 2 zł można mieć proca z 72 MIPSami, ale już widziałem jak jednemu opadała szczena jak zobaczył działający w real time silnik Dooo-podobny na C64. Oczywiście to kosztuje duzo pracy, ale jeden to zrobi, udostępni, to drugi spróbuje na tym też podziałać, jemu się uda znajdzie się dwóch następnych i tak z czasem, powstają coraz lepsze narzędzia i biblioteki. EDIT. Chyba nie jest tak źle, już znalazłem notę jak zrobić aby mój PIC18 był widziany jako FT232, czyli wirtualny COM na USB. http://ww1.microchip.com/downloads/en/AppNotes/00956b.pdf lub fremework http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en537044 Więc jest nadzieja że nawet ten tutorial pozwoli to ruszyć ? Cytuj Link do komentarza Share on other sites More sharing options...
ciulany Wrzesień 10, 2011 Udostępnij Wrzesień 10, 2011 Czy schemat podłączenia max232 jest prawidłowy? Piny v+ i v- powinny być połączone z VCC i GND przez kondensatory a nie ze soba...? Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Wrzesień 10, 2011 Autor tematu Udostępnij Wrzesień 10, 2011 Masz rację, już zedytowałem. Na szybko kopiowałem schemat z wydawałoby się pewnej strony ale rzeczywiście takie podłączenie jest bez sensu. Poprawiłem obrazek na schemat z datasheeta. Generalnie jest dużo układów do konwersji napięć na RS232 i różne wersje mają inne schematy połączeń więc nie wiem czy obecność tego schematu jest na pewno potrzebna bo zawsze i tak lepiej sprawdzić w datasheecie posiadanego scalaka. Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Wrzesień 10, 2011 Udostępnij Wrzesień 10, 2011 Kiedyś próbowałem się skomunikować i natrafiłem na coś takiego: http://www.winapi.org/index.php?option=com_content&task=view&id=49&Itemid=30 oraz poszukałem na MSDN i np.: http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx W każdym razie: jest to dość paskudne, ale jak już będziecie mieć działajacy kod, to nie będzie problemu. WinAPI działa w każdym środowisku pod Windowsem, ja pisałem w Borland CBuilder. Inna sprawa, że taka aplikacja potrafi zarżnąć komputer - Core2Duo pozwala na odbieranie góra kilku kB/s i to z bólami. Java będzie pewnie jeszcze wolniejsza. Pewnie pisząc w czymś lepiej optymalizujacym (np. VS) program będzie działać szybciej, ale dużej różnicy nie przewiduję, bo problemem jest pośrednictwo systemu. Cytuj Link do komentarza Share on other sites More sharing options...
marciu11 Wrzesień 10, 2011 Udostępnij Wrzesień 10, 2011 A po co drapać si po głowie, rozgryzać WinApi (mowa tu o początkach programującego), co może skutecznie zniechęcić. Jak można zastosować dedykowane wtyczki, które odwalają cała robotę za programistę. A aby je oprogramować wystarczy dosłownie kilka linijek kodu. Takie wtyczki są chyba na większość języków programowania. Jak dla mnie zbędne komplikowanie sobie życia. Lepiej skupić się na samej organizacji transmisji, niż marnować cały zapał na rozgrzanie samej sztuce obsługi portu. Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Wrzesień 11, 2011 Udostępnij Wrzesień 11, 2011 Dedykowane wtyczki mają to do siebie, że czasami nie działają (np. te do Borlanda to jakaś kpina). Z innych rzeczy: warto czasami w systemie w ustawieniach portu pogrzebać i m.in. zmienić rozmiar bufora na większy jeśli wysyłamy duże pakiety danych (nawet rzadko). Cytuj Link do komentarza Share on other sites More sharing options...
BlackJack Wrzesień 11, 2011 Udostępnij Wrzesień 11, 2011 Inna sprawa, że taka aplikacja potrafi zarżnąć komputer - Core2Duo pozwala na odbieranie góra kilku kB/s i to z bólami. Tak się przeważnie dzieje, jak aplikacja nie korzysta z dobrodziejstw IRQ, poświęcając 60% i więcej swojego czasu na sprawdzanie programowe znaczników. Dla tego tak lubiłem DOSa i Turbo Pascala, pisało sie w tym topornie, ale miało się pełną władzę nad tym co robi program i jak. choć z tego co wiem to w językach obiektowych, znaczy się Visual, też można tam jakoś się odwoływać bezpośrednio do portów I/O. Wiem więcej roboty, ale USART w PC, akurat jest na tyle prosty, że jak komuś zależy i ma jeszcze w kompie starego poczciwego RSa, to gra może być warta świeczki. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!