-
Data: 2012-01-26 18:25:55
Temat: Re: Do tych co tu piszą w C++
Od: Robert Zemła <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- Raspberry Pi 3 Model B+
- Kuchenka elektryczna
- test
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
Najnowsze wątki
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+ experience) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-03-15 KOMU w RP3 pasuje "Rumuńska łatwość gmerania w wyborach" i dlaczego nie PO-Trzaskanym?
- 2025-03-15 China-Kraków => Key Account Manager IT <=
- 2025-03-14 Spalił się autobus :-)
- 2025-03-14 Policjanci z Piątku
- 2025-03-14 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-03-14 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2025-03-14 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-03-14 VAT-R Umowa najmu na adres zamieszkania
- 2025-03-14 Gliwice => IT Expert (Network Systems area) <=
- 2025-03-14 Warszawa => Junior Rekruter <=
- 2025-03-14 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-14 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-14 Żerniki => Dyspozytor Międzynarodowy <=