Witam!
Ponieważ po raz pierwszy nie udało mi się znaleźć odpowiedzi na forum, nadszedł czas na pierwsze pytanie.
Układ z którym mam problem, jest częścią większego projektu. W uproszczeniu sprawa wygląda tak: At8 podłączona do konwertera USB na bazie FT232 RL (linie Rx, Tx i GND). At8 zasilana z zasilacza. Konwerter zasilany przez USB (zworki pozwalają na taką konfigurację. Na lapku mam program napisany w C++ Builder 6.
Do AT8 podpięty jest czujnik - impulsator. uC zlicza impulsy z czujnika i po otrzymaniu zapytania z lapka odsyła aktualny wynik. Transmisja szeregowa, w lapku konwerter USB występuje jako wirtualny COM.
Program na PC ma odpytuje np co 1sek uC, odbiera odpowiedź przelicza jednostki i zapisuje wynik do pliku. Czas odmierzany jest w oddzielnym wątku przez Sleep lub za pomocą komponentu Timer. Procedura odpytywania i zapisywania wyników jest w drugim wątku.
Niby proste i działa, ale do czasu... Sęk w tym, że program ma chodzić bez przerwy przez 2-3 tygodnie. Tymczasem niby dobrze działający program zawiesza się po 1-5 dniach. Nie widzę żadnej regularności. Wygląda to tak jakby w pewnym momencie program tracił adres do portu COM i nie mógł nic wysyłać.
Co ciekawe przy zamknięciu programu w którym transmisja się zawiesiła, port COM pozostaje nadal otwarty - zamyka się dopiero po odłączeniu kabla USB. Jeżeli natomiast przerwę "aktywny" pomiar i zakończę program to port zamyka się bez problemu.
Czy ktoś miał już podobny problem z utrzymaniem połączenia przez USB? Może jest jakaś metoda żeby zmusić komputer do priorytetowego traktowania tego portu?
Proszę o pomoc.
Ponieważ po raz pierwszy nie udało mi się znaleźć odpowiedzi na forum, nadszedł czas na pierwsze pytanie.
Układ z którym mam problem, jest częścią większego projektu. W uproszczeniu sprawa wygląda tak: At8 podłączona do konwertera USB na bazie FT232 RL (linie Rx, Tx i GND). At8 zasilana z zasilacza. Konwerter zasilany przez USB (zworki pozwalają na taką konfigurację. Na lapku mam program napisany w C++ Builder 6.
Do AT8 podpięty jest czujnik - impulsator. uC zlicza impulsy z czujnika i po otrzymaniu zapytania z lapka odsyła aktualny wynik. Transmisja szeregowa, w lapku konwerter USB występuje jako wirtualny COM.
Program na PC ma odpytuje np co 1sek uC, odbiera odpowiedź przelicza jednostki i zapisuje wynik do pliku. Czas odmierzany jest w oddzielnym wątku przez Sleep lub za pomocą komponentu Timer. Procedura odpytywania i zapisywania wyników jest w drugim wątku.
Niby proste i działa, ale do czasu... Sęk w tym, że program ma chodzić bez przerwy przez 2-3 tygodnie. Tymczasem niby dobrze działający program zawiesza się po 1-5 dniach. Nie widzę żadnej regularności. Wygląda to tak jakby w pewnym momencie program tracił adres do portu COM i nie mógł nic wysyłać.
Co ciekawe przy zamknięciu programu w którym transmisja się zawiesiła, port COM pozostaje nadal otwarty - zamyka się dopiero po odłączeniu kabla USB. Jeżeli natomiast przerwę "aktywny" pomiar i zakończę program to port zamyka się bez problemu.
Czy ktoś miał już podobny problem z utrzymaniem połączenia przez USB? Może jest jakaś metoda żeby zmusić komputer do priorytetowego traktowania tego portu?
Proszę o pomoc.
![[At8][C++][FT232RL] połączenie USB z komputerem się zawiesza [At8][C++][FT232RL] połączenie USB z komputerem się zawiesza](https://obrazki.elektroda.pl/6352364800_1331115571.jpg)