logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Bascom] odbieranie danych rs232 i odczyt PCF8583 jednocześnie

fliper_katrill 24 Lip 2011 13:47 3249 9
REKLAMA
  • #1 9752717
    fliper_katrill
    Poziom 20  
    Witam serdecznie!
    Mam nie lada problem, chciałbym odbierać dane w czasie rzeczywistym z zegara czasu rzeczywistego PCF8583 i "oczekiwać" na dane z RS232. Większość z Was napisze, że to nie problem Ischarwaiting() i poszło. Teoretycznie tak, ale.....
    Zastosowanie Ischarwaiting() powoduje, że dane wysyłane z programu z PC muszę wysłać 2 razy klikając buton 2 razy a to bez sensu. Mogę nie stosować Config Serialin=Buffered Size=X, ale dane mi się wysypują bez tej konfiguracji. Same Input XXXXX (gdzie XXXXX to String *5) działa znakomicie, za jednym kliknięciem butona włączam diody LED, program odczytu godziny również śmiga. Pytanie jak to połączyć razem?
    Z góry dziękuję za odpowiedź.
  • REKLAMA
  • #2 9752749
    mirekk36
    Poziom 42  
    fliper_katrill napisał:
    Teoretycznie tak, ale.....
    Zastosowanie Ischarwaiting() powoduje, że dane wysyłane z programu z PC muszę wysłać 2 razy klikając buton 2 razy a to bez sensu..


    Nic nie musisz a szczególnie nie musisz 2 razy klikać na button na PC - bo oczywiście to jest bez sensu.

    Spójrz na sprawę inaczej. Po prostu całkowicie źle napisałeś albo inaczej oprogramowałeś to i to z obydwu stron - zarówno na PC jak i na uC. I tylko i wyłącznie to jest winą takiego zachowania.

    A tak poza tym to zachodzę w głowę jak można cośkolwiek podpowiedzieć na tak zadane pytanie ??? Ani fragmentu kodu, ani dokładniejszego opisu - no to by była już za duża zgaduj zgadula żeby coś próbować nawet wymyślić tutaj :(
  • #3 9754873
    fliper_katrill
    Poziom 20  
    Już śpieszę z informacjami, cieszę się że ktoś odpowiedział :)
    Na początek wygląd z PC jest taki:
    [Bascom] odbieranie danych rs232 i odczyt PCF8583 jednocześnie

    Kod z Visual Basica 2008:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    A to program w Bascomie:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kilka funkcji jest w komentarzu, próbowałem różnych opcji. Z VB2008 wysyłam zawsze 4 znaki+ znak entera (bez tego program w Bascomie nie czyta). Kod z VB2008 nie jest mój i pochodzi z książki p. Rafała Chromika.
    Z góry dziękuję za pomoc :)
  • REKLAMA
  • #4 9757420
    fliper_katrill
    Poziom 20  
    Mam nadzieję, że się odezwiesz mirekk36 :) Wiem, że znasz się na temacie jak mało kto.
  • REKLAMA
  • #5 9758163
    mirekk36
    Poziom 42  
    Eeeeeh - Bascoma to ja już prawie zapominam. Ale nie pisz że bez znaku entera program w bascomie ci czegoś nie czyta - poczytaj w helpie na temat config input i możliwości deklarowania znaków końca linii.

    Poza tym wyłączyłeś buforowanie sprzętowe dla UART'a więc nie dziw się, że to hmmm "tak sobie działa" - przy tak napisanej obsłudze komunikacji - zawsze będą problemy niestety.

    Chciałbym pomóc - no ale to nie temat na opis w 2-3 zdaniach :( - więc tak tu się nie da.
  • REKLAMA
  • #6 9758279
    gaskoin
    Poziom 38  
    Pomijając tragiczny kod zastanawiam się po co wysyłasz milion znaków, przecież w jednej ramce rs możesz wsadzić 255 różnych znaków, na tak prostą rzecz nie potrzebujesz takich ramek.
  • #7 9758696
    fliper_katrill
    Poziom 20  
    gaskoin, a co mi to pomoże w rozwiązaniu problemu, że powycinam dane z jednej ramki? :) to nie jest istotne teraz, to był test....

    mirekk36, mądrego dobrze posłuchać, widzę config input w nowej wersji Bascoma (2.0.5), nie miałem o tym pojęcia, mam starą wersję programu. W VB dodaję na końcu znak entera i nie musiałem tego stosować. Piszesz, że dużo trzeba by tłumaczyć, więc ja podzielę się tym na co wpadłem...może użyć timera i działać z zegarem w tle? próbowałem, ale takie działanie wysypuje poprawne czytanie INPUTa, może dzieje się to za szybko....
  • #8 9758707
    mirekk36
    Poziom 42  
    Ale ja ci pisałem o tym żebyś poprawił program w procku - bo masz rację, że bez buforowania sprzętowego, które wyłączyłeś to dzieje się za szybko i tracisz prawdopodobnie po drodze jakieś znaki albo coś ..... (bo co ty miałeś na myśli pisząc o tym timerze i działaniem w tle ??? chyba chodziło ci o program na PC jeśli się nie mylę)

    w program w VB na PC to nawet nie dam rady zajrzeć bo VB to dla mnie czarna magia ;)
  • #9 9758771
    fliper_katrill
    Poziom 20  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Przepraszam za ewentualne literówki, bo szybko piszę :)
  • #10 9762704
    fliper_katrill
    Poziom 20  
    po ciężkiej batalii już wiem jak rozwiązać problem...
    Podziękowania dla mirka36, który naprowadził mnie na config input :). Po ustawieniu config input=lfcr, echo=lfcr wsio pięknie działa, nie muszę 2 razy klikać butona, mogłem wprowadzić ischarwaiting() i zegar działa w głównym oknie programu. Dziękuję za pomoc, pozdrawiam.
REKLAMA