eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDo tych co tu piszą w C++ Re: Do tych co tu piszą w C++
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Robert Zemła <m...@g...com>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Do tych co tu piszą w C++
    Date: Thu, 26 Jan 2012 19:25:55 +0100
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 67
    Message-ID: <jfs5ta$rnc$1@inews.gazeta.pl>
    References: <4f200076$0$26710$65785112@news.neostrada.pl>
    NNTP-Posting-Host: ip-157-25-50-39.multimo.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1327602410 28396 157.25.50.39 (26 Jan 2012 18:26:50 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 26 Jan 2012 18:26:50 +0000 (UTC)
    X-User: mojejapko
    In-Reply-To: <4f200076$0$26710$65785112@news.neostrada.pl>
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20111222
    Thunderbird/9.0.1
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:624435
    [ ukryj nagłówki ]

    W dniu 25-01-2012 14:15, 4CX250 pisze:
    > W C++ piszę taki mały programik do odczytywania pomiarów z miernika RLC.
    >
    > Wszystko w WinApi.
    >
    > Najpierw muszę to urządzenie zainicjować i robię to tak:
    >
    > strcpy ( Buffer_write, "//\x1B""2\x0A" ); // polecenie ESC2 - przejście
    > urządzenia w tryb REMOTE
    > WriteFile( hPort, Buffer_write, strlen ( Buffer_write ), &ile, 0 );
    >
    > strcpy ( Buffer_write, "*CLS;ese 255\x0A" ); // Wyzerowanie urządzenia
    > WriteFile ( hPort, Buffer_write, strlen ( Buffer_write ), &ile, 0 );
    >
    > Następnie chcę sprawdzić czy komunikacja z urządzeniem jest prawidłowa.
    > Robię to pytaniem o identyfikator urządzenia.
    >
    > strcpy ( Buffer_write, "*idn?\x0A" ); // Niech się urządzenie teraz
    > przedstawi
    > WriteFile ( hPort, Buffer_write, strlen ( Buffer_write ), &ile, 0 );
    >
    >
    > W następnej części programu mam problem. Nie bardzo wiem, co zrobić aby
    > program odczekał skutecznie tylko tyle czasu ile jest niezbędne, aż w
    > buforze odbiorczym COM pojawią się wszystkie dane wysłane przez urządzenie.
    >
    > Narazie robię to w bardzo nieelegancki sposób za pomocą opóźnienia
    >
    > Sleep (1000);
    >
    > Jest coś skuteczniejszego?
    >
    > Dalej w programie jest tak.
    > Po odczekaniu 1000ms program przystępuje do odczytania bufora.
    > Najpierw sprawdzam ile jest znaków w buforze COM do odczytania
    >
    > Result = ClearCommError( hPort, &Errors, &ComStatus );
    > Buffer_lenght = ComStatus.cbInQue; // Sprawdzenie ile bajtów oczekuje w
    > buforze wejściowym COM
    >
    > Następnie czyszczę bufor odbiorczy ale nie wiem czy to jest właściwy
    > sposób.
    > Gdy tego nie robiłem to były w nuforze śmieci z poprzednich odczytów
    >
    > strcpy(Buffer_read, " "); // Wyzerowanie bufora odbiorczego
    >
    > Ostatecznie odczutuję zawartośc bufora
    >
    > Result = ReadFile( hPort, Buffer_read, Buffer_lenght, &ile, NULL );
    >
    > Wynik trafia do okienka na ekranie
    >
    > SetWindowText( g_hText1, Buffer_read );
    >
    > Pominąłem polecenia if oraz while które pilnują aby nie próbować czekać
    > w nieskończoność aż coś się pojawi w buforze.
    > W analogiczny sposób odpytuję urządzenie o wyniki konkretnych pomiarów
    > wartości RLC i tam też mam taki sam problem.
    >
    >
    > Marek

    Żeby było elegancko powinieneś powołać osobny wątek do samej komunikacji
    z COM'em a do synchronizacji z GUI powinieneś użyć zdarzeń. Co do samej
    obsługi COM'a, powinieneś ustawić jeszcze time'outy. Przy okazji
    poczytaj o trybie overlapped i sam zdecyduj co ma największy sens w
    Twojej aplikacji.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: