RE: C++ a COM porty 2.

Va Sm SpiritusII@seznam.cz
Úterý Červenec 29 11:23:24 CEST 2008


Dekuji, spachal jsem program podle Vaseho doporuceni a zda se, ze i fugnuje.
Je potreba osetrit ukonceni vlakna po zavreni aplikace nebo je toto ruseno po zavreni okna?

> ------------ Původní zpráva ------------
> Od: Dusan Dolezal <duffa@inmail.cz>
> Předmět: RE: C++ a COM porty 2.
> Datum: 29.7.2008 07:58:40
> ----------------------------------------
> Vice threadu se opravdu nebojte, ono to mozna zni jako neco co je strasne
> slozite ale ve skutecnosti je samotne vytvoreni threadu primo primitivni.
> Samozrejme jina kapitola je synchronizace threadu ale to v nejake jednoduche
> aplikaci neni tak kriticke a asi nebudete muset thready synchronizovat
> vubec.
> 
> Takze si vytvorite funkci kde se vlakno vude vykonavat:
> 
> DWORD WINAPI FunkceVlakna(LPVOID lpvThreadParam)
> {
>    //...
>    //tady se neco bude delat
>    //...
> 
>    return 0;
> } 
> 
> a pak se vlakno vytvori zavolanim
> 
> CreateThread(NULL,0,FunkceVlakna,(LPVOID)NULL,0,NULL);
> 
> Ten kod co je ve funkci 'FunkceVlakna' se vykona a vlakno se pak ukonci. Ve
> vasem pripade se vlakno hned nebude ukoncovat ale pobezi tam nejaka smycka,
> ktera bude cist z portu. Tim ze je to v samostatnem vlakne tak ciste
> teoreticky ani nepotrebujete otevirat ten port jako overlapped, ono za
> normalnich okolnosti pokud neni v bufferu znak tak program ceka na jeho
> prijem a tim vlastne zamrzne, u samostatneho vlakna to vlastne nevadi
> protoze program normalne reaguje, ceka jen to vlakno. Samozrejme ten
> overlapped mod ma spoustu vyhod a bude vhodnejsi, ale je taky o neco
> slozitejsi tak to pro zacatek muzete zkusit bez nej.
> 
> Jinak tohle je opravdu jenom uplne to nejosekanejsi co se da udelat, ve
> skutecnosti je tema threadu a procesu na celou tlustou knizku (a taky o tom
> tluste knizky vychazeji) ale pro zacatek by vam tohle mohlo stacit na
> rozkoukani a postupne do toho proniknete. Na webu je plno prikladu (napr.
> vynikajici web je codeproject.com, tady je zrovna sample na seriovou
> komunikaci: http://www.codeproject.com/KB/system/chaiyasit_t.aspx), pripadne
> vysla i knizka v cestine primo se venujici programovani seriove komunikace
> pod Win, viz
> http://hw.cz/Teorie-a-praxe/Knihovnicka/ART854-Seriova-komunikace-ve-Win32.h
> tml
> 
> Dusan Dolezal
> 
> > -----Original Message-----
> > From: hw-list-bounces@list.hw.cz 
> > [mailto:hw-list-bounces@list.hw.cz] On Behalf Of Va_Sm
> > Sent: Monday, July 28, 2008 10:28 PM
> > To: HW-news
> > Subject: Re: C++ a COM porty 2.
> > 
> > A nebyl by nekde k dispozici kompletnejsi kod? nevim presne jak 
> > naprogramovat zalozeni noveho vlakna.....
> > Jaroslav Buchta napsal(a):
> > > Ano, pouziti extra vlakna na obsluhu COM portu sedi jak 
> > pr... Na nocniku
> > > ;-) 
> > > Dulezite je otevreni portu s priznakem 
> > FILE_FLAG_OVERLAPPED, aby se dalo
> > > cekat na prijem funkci WaitComSingleObject
> > >
> > > 	CString csName;
> > > 	csName.Format ("\\\\.\\%s", m_csPortName);
> > >
> > > 	m_ComHandle = CreateFile(csName,GENERIC_READ | GENERIC_WRITE,
> > > 							0,
> > > 							NULL,
> > > 							OPEN_EXISTING,
> > > 	
> > > FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, // overlapped I/O
> > > 							NULL);
> > > 	if (m_ComHandle == INVALID_HANDLE_VALUE) ERRSETSTATUS_RF
> > > (EC_OPNERR, m_csPortName);
> > >
> > >
> > > -----Original Message-----
> > > From: hw-list-bounces@list.hw.cz 
> > [mailto:hw-list-bounces@list.hw.cz] On
> > > Behalf Of Va Sm
> > > Sent: Monday, July 28, 2008 2:38 PM
> > > To: hw-list@list.hw.cz
> > > Subject: C++ a COM porty 2.
> > >
> > >
> > > Dobry den,
> > > mohl by mi nekdo poskytnout funkcni kousek kodu v C++ 
> > vyuzivajici win
> > > api k pristupu na seriovy port? Nedavno jsem se ptal, zda existuje
> > > komponenta, ktera by tohle resila - jako Vacomm v Delphi - 
> > podminkou je
> > > vyvovali udalsoti na prichozi znak. Bylo mi receno, ze je 
> > to jednoduche
> > > prave pres win api. Skutecne to nevypada az tak slozite, 
> > ale trapim se
> > > prave s prijmem znaku. Nedari se mi prave to vyvolani udalsoti s
> > > prichozim znakem. Je nutne takovou jednoduchou ulohu resit pouzitim
> > > vlaken?
> > >
> > > dekuji
> > > V. Smidl
> > > _______________________________________________
> > > HW-list mailing list  -  sponsored by www.HW.cz Hw-list@list.hw.cz
> > > http://list.hw.cz/mailman/listinfo/hw-list
> > >
> > > _______________________________________________
> > > HW-list mailing list  -  sponsored by www.HW.cz
> > > Hw-list@list.hw.cz
> > > http://list.hw.cz/mailman/listinfo/hw-list
> > >
> > > __________ Informace od NOD32 3301 (20080727) __________
> > >
> > > Tato zprava byla proverena antivirovym systemem NOD32.
> > > http://www.nod32.cz
> > >
> > >
> > >
> > >   
> > 
> > _______________________________________________
> > HW-list mailing list  -  sponsored by www.HW.cz
> > Hw-list@list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> > 
> > __________ Informace od NOD32 3303 (20080728) __________
> > 
> > Tato zprava byla proverena antivirovym systemem NOD32.
> > http://www.nod32.cz
> > 
> > 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 
> 
> 



Další informace o konferenci Hw-list