Vlákna vo WinApi – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vlákna vo WinApi – C / C++ – Fórum – Programujte.comVlákna vo WinApi – C / C++ – Fórum – Programujte.com

 

iridium0
Newbie
7. 6. 2015   #1
-
0
-

Prosím o radu, kam mám vo WinApi umiestniť reagovanie na udalosť vzniknutú príjmom bajtov na sériovej linke RS232 pri asynchrónnom prenose. Do handleru WM_TIMER ? Ale to by bolo veľmi pomalé. Minimálny čas jedného cyklu je tuším 10 ms.

Po otvorení portu CreateFile a nastavení DCB som najprv nastavil masku

SetCommMask ( ComHandle, EV_RXCHAR | EV_RXFLAG | EV_TXEMPTY );

...vytvoril udalosť

overlapped.hEvent = CreateEvent ( NULL, TRUE, FALSE, NULL );

....a do cyklu while dal čakanie na udalosť portu:

while(1)
{
    WaitCommEvent ( ComHandle, &dwCommEvent, &overlapped);
    dwEvent = WaitForSingleObject ( overlapped.hEvent, 200 );

    if ( dwEvent == WAIT_OBJECT_0 )
    { 
          if ( dwCommEvent == EV_RXCHAR )
          {
                 // obsluha citania pomocou ReadFile()
          }
    }

    if ( dwEvent == WAIT_TIMEOUT )
         break;
}

CloseHandle ( overlapped.hEvent );

Skúšal som to dať do WM_TIMER, ale nefunguje to moc dobre. Ako sa to má správne používať? Kam to umiestniť?

Nahlásit jako SPAM
IP: 62.197.243.–
liborb
~ Redaktor
+18
Guru
1. 7. 2015   #2
-
0
-

Samozřejmě musíš všechno kolem sériové linky řešit ve vlákně (CreateThread). Doporučuji v tomto vlákně i otevírat sériový port.

Nahlásit jako SPAM
IP: 188.75.135.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Vlakna — založil insider

Vlákna — založil Tayson

Vlakna — založil Homer

Vlákna — založil delphak

Vlákna — založil blackman.ce

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý