-
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.
Następne wpisy z tego wątku
- 26.01.12 18:45 Robert Zemła
- 26.01.12 19:27 Sebastian Biały
- 26.01.12 20:29 Grzegorz Niemirowski
- 26.01.12 20:42 Marek Borowski
- 26.01.12 20:52 v...@i...pl
- 26.01.12 20:54 Grzegorz Niemirowski
- 26.01.12 21:10 Sebastian Biały
- 26.01.12 21:34 Marek Borowski
- 26.01.12 21:44 Sebastian Biały
- 26.01.12 22:16 Marek Borowski
- 26.01.12 22:56 Robert Zemła
- 27.01.12 16:27 Sebastian Biały
- 27.01.12 18:09 Robert Zemła
- 27.01.12 19:35 Sebastian Biały
- 28.01.12 18:46 Robert Zemła
Najnowsze wątki z tej grupy
- Apollo Comm
- PICkit3 mnie pokonał
- LEDy na choinkę zdechły
- Wtopa LED
- Miało być zniesienie abonamentu RTV, a jest podwyżka!!!
- Microsoft, C/C++ na Rust - news
- Pierwsza mapa kosmosu w 102 długościach fal podczerwieni! To początek nowej ery w astronomii
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- zasilacz
- Zegary DCF
- pompa CO
- 2,5 x więcej niż Li-Ion
- Tfu! Przeklety prostokąt (czyli UPS i "sinus modyfikowany")
- Dalekopis T100 - problem z powrotem karetki
- Diody LED - oświetlenie na choinkę
Najnowsze wątki
- 2026-01-06 Metoda na fotoradar
- 2026-01-05 I jeszcze jeden
- 2026-01-05 Jaworek;)
- 2026-01-05 Warszawa => Project Manager (AI and innovation) <=
- 2026-01-05 Gdańsk => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2026-01-05 Jeśli nie było "aktu wojny" to była "zorganizowana grupa przestępcza" (terroryści) dokonująca zabójstw?
- 2026-01-05 Walka Lewicy o B2B na etat
- 2026-01-05 zamiana B2B na etat
- 2026-01-05 Wykonanie w USA zagranicznych nakazów aresztowań bez udziału USA na (byłych) prezydentów też będzie legalne?
- 2026-01-04 Apollo Comm
- 2026-01-04 Kupować SREBRO?
- 2026-01-04 PICkit3 mnie pokonał
- 2026-01-03 LEDy na choinkę zdechły
- 2026-01-03 Wenezuela
- 2026-01-03 Wtopa LED




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]