Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 12 kwi 2025, o 11:12


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 2 sty 2019, o 19:08 
    Offline
    Użytkownik

    Dołączył(a): 08 lut 2014
    Posty: 25
    Pomógł: 0

    Witam serdecznie.

    Napisałem w C na Atmega32 program który wysyła dane po RS232 do PC gdy tylko dostanie znak 'a', i tu wszystko działa;
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Oglądnąłem parę odcinków programowania w C++ Builder6 i postanowiłem przetwarzać dane na PC i oczywiście je wyświetlać.
    Po długiej walce w końcu UC zaczął gadać z PC po RS232 i to bardzo dobrze, oto kod C++
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    No i wszystko działa dobrze gdy COM ustawiony w programie PC jest zgodny z moją przejściówką , ale używam przejściówki FT232RL i przy zmianie komputera zmienia się COM(więc nie mogę na stałe ustawić nr.COM-a) więc chcę testować porty COM aby nie trza było go wybierać. Niestety jeśli już uda mi się otworzyć port COM(oczywiście jakiś inny niż ten od AVR) to już próba odczytu funkcją "ReadFile" ( aby np sprawdzić czy dane mam od AVR) kończy się brakiem odpowiedzi programu,
    Bufor read pusty i program stoi.Dodam że pokazany listing C++ jest testowy i tak się bawię, zmienię np nr COM i sprawdzam co się dzieje, Jestem nowicjuszem w tej materii, więc proszę o pomoc, jak mogę sobie z tym problemem poradzić.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 sty 2019, o 20:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 mar 2014
    Posty: 1475
    Pomógł: 167

    steter napisał(a):
    No i wszystko działa dobrze gdy COM ustawiony w programie PC jest zgodny z moją przejściówką
    Port COM związany jest z hardwarem (dokładnie to sterownikami, które go obsługują). Więc nie możesz sobie otwierać innego portu niż ten przypisany do sprzętu. Jak nie masz dodatkowych fizycznych portów COM albo kolejnej przejściówki lub skonfigurowanego profilu SPP w bluetooth to nie otworzysz innego portu.

    --
    Pozdrawiam,
    Robert



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 sty 2019, o 22:01 
    Offline
    Użytkownik

    Dołączył(a): 08 lut 2014
    Posty: 25
    Pomógł: 0

    Zamysł miałem taki;
    Mam funkcję SetCommState(hNumPort,&dcd) która zwraca TRUE po prawidłowym podłączeniu się do portu COM lub FALSE gdy nie uda się podłaczyć,
    Myślę więc - w pętli While() po kolei spróbuję się podłączać do np;15-stu COM-ów, jeśli w końcu funkcja zwróci TRUE to zostanie mi wysłać znak 'a' do AVR aby za chwilę odebrać spodziewane się dane z AVR (bo tak mam napisane nadawanie w AVR) i w ten sposób odfiltruję pożądany COM. Problemem jest użycie funkcji ReadFile(hNumPort,IpBuffor_read,10,&RS_ile,0) ponieważ jeśli jej użyję(aby sprawdzić odebrane dane), a bufor odbiorczy nie jest zapełniony, to funkcja jak by czeka w nieskończoność na dane i blokuje program, nie wiem jak opuścić tą funkcję (np. po jakimś krytycznym czasie) aby kontynuować sprawdzanie portów.
    Jako ciekawostkę w menadżerze urządzeń widzę aktywny COM4 (to nie moja przejściówka) i mogę się do niej podłączyć i nawet wysłać dane, a już np. próba odczytu z COM4 ,zatrzymuje program. (przypuszczam że nic nie przylatuje do bufora odbiorczego) , robiąc testy na mojej przejściówce wystarczyło że w Atmedze za komentowałem nadawanie po RS232 i program w PC zachowywał się dokładnie tak samo przy próbie użyciu funkcji ReadFile(hNumPort,IpBuffor_read,10,&RS_ile,0).

    Jeszcze muszę dużo poczytać, a najlepiej namówić P.Mirka do napisania książki o C++ (ale tak łopatologicznie tłumacząc na przykładach jak AVR-y) aby można było zrozumieć :idea:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 sty 2019, o 22:19 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Popatrz na komponenty Mirka do Delphi/C++ buildera. Nakręcił do nich różne filmiki. Np. MkUsbDetector



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 sty 2019, o 08:31 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    Możesz spróbować odczytać z rejestru windowsa dane każdego urządzenia widzianego jako port COM. Możesz sprawdzać numery VID i PID dla każdego portu.
    Prawdopodobnie dla FT232RL wartość VID to 0403 a PID to 6001. Ale to musiałbyś sobie sprawdzić.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 sty 2019, o 19:22 
    Offline
    Użytkownik

    Dołączył(a): 08 lut 2014
    Posty: 25
    Pomógł: 0

    Szanowni koledzy, dziś w poszukiwaniu rozwiązania mojego problemu, znalazłem podobny temat i przeczytałem "Tutaj masz kody źródłowe (C#,C++,Delphi) , jak korzystać z chip-ów FTDI : http://www.ftdichip.com/Projects/CodeExamples.htm" pobrałem więc program testowy do C++ Builder wprost ze strony producenta układu z którego korzystam (że też wcześniej na to nie wpadłem), skompilowałem go i uruchomiłem, po uruchomieniu zobaczyłem przyjazny program do testowania przejściówek i to w dodatku do edycji, jest tak mały że może uda mi się go zrozumieć.:)

    Tak więc dziękuję za pomoc i zainteresowaniem tematem,
    Serdecznie pozdrawiam ludzi którym się chce pomagać. ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO