Funkce SetConsoleMode – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Funkce SetConsoleMode – C / C++ – Fórum – Programujte.comFunkce SetConsoleMode – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
16. 11. 2012   #1
-
0
-

Mám program, kterým čtu data z COM portu. Používám funkci ReadFile. Vstupní data jsou různě dlouhá a vždy ukončená 'CR' a 'LF'. V ReadFile se dá nastavit jen maximální možný počet znaků, takže když ho nepřekročím, stále to čeká na data až do vypršení nastaveného timeoutu na portu. Na: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686033%28v=vs.85%29.aspx jsem našel funkci SetConsoleMode, která by měla nastavit mód funkce ReadFile, že skončí, když načte 'CR', pokud to dobře chápu. Jenže to nefunguje. Program mám takto: 

SetConsoleMode(hCom, ENABLE_LINE_INPUT);
ReadFile(hCom, rdata, 32, &zapsano, 0);

Stále to čeká buď na maximální počet, nebo timeout. Už googluju druhej den a nic.

Byl bych rád, kdyby mi někdo poradil, kde dělám chybu.

Díky.

Nahlásit jako SPAM
IP: 62.245.120.–
Reklama
Reklama
KIIV+42
God of flame
16. 11. 2012   #2
-
0
-

A ses si na 100% jist ze posilas CR+LF? Tj. overene na nejakem hexdumpu? Pokud posilas "\n" tak to by mohlo poslat jen ciste LF a ReadFile by to pak proste nenaslo... co se stane, kdyby se posilalo "\r\n" ?

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
16. 11. 2012   #3
-
0
-

#2 KIIV
Posílám přímo hexahodnotu 'D' a 'A'. Navíc to mám ověřený v PuTTY. Skočí to na začátek novýho řádku.

Nahlásit jako SPAM
IP: 62.245.120.–
KIIV+42
God of flame
16. 11. 2012   #4
-
0
-

tak holt pojedes po znacich a logiku zpracovani si osetris sam

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
16. 11. 2012   #5
-
0
-

#4 KIIV
To není problém, navíc to zařízení na druhé straně si vyvíjím sám, takže si to klidně přizpůsobím. Jen v rámci učení se, jsem chtěl zjistit, jak to s tím SetConsoleMode je.

Nahlásit jako SPAM
IP: 62.245.120.–
liborb
~ Redaktor
+18
Guru
16. 11. 2012   #6
-
0
-

SetConsoleMode je na nastavení konzole a nikoliv na nastavení sériového portu.

Nahlásit jako SPAM
IP: 188.75.135.–
liborb
~ Redaktor
+18
Guru
16. 11. 2012   #7
-
0
-

A pokud chceš řešení na ten tvůj problém, tak čti znaky jednoduše po jednom, tj. když poslední 2 načtené jsou CR a LF, tak už dál nečteš. A jinak zde jsou API funkce pro práci se sériovým portem.

Nahlásit jako SPAM
IP: 188.75.135.–
16. 11. 2012   #8
-
0
-

#7 liborb
Já na tu funkci narazil u popisu ReadFile, tak jsem myslel, že jí nějak ovlivní jako takovou. Na ty funkce kouknu, díky.

Nahlásit jako SPAM
IP: 62.245.120.–
Radek Chalupa
~ Redaktor
0
Super člen
16. 11. 2012   #9
-
0
-

#1 forbidden
Zkus popř. funkci SetCommMask a pokud se nepodaří, tak jak zmínil už kolega, čtení znaků po jednom by to mělo jistit:-)

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
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, 62 hostů

Moderátoři diskuze

 

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