Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.10
Prihlásený: 27.08.10
Príspevky: 8
Témy: 1
Príspevok NapísalOffline : 27.08.2010 13:14

Potreboval by som poradit.
Kód:
...
Data = 0;
i = 0;
while( i < NumberOfGate ){

    Read();
    Data = CntData + Data;
    i++;
    if( Terminated ) break;
}
DataArray[z] = Data ;
...


Kód:
void GetCntThread::Read () {
   BYTE ResultReturned;
   if(FALSE == C8855ReadData(    hC8855,
                        &CntData,
                        &ResultReturned)){;
      Form1->Memo2->Lines->Add("Read data ERROR.");
      return;
   }
}


Moja funkcia C8855ReadData() nacitava udaje z externeho zariadenia. To da nastavy v inej casti kodu, aby vysielalo data kazdy presne stanoveny casovy interval. Avsak nedokonalostou sa stava , ze mi externe zariadenie neodosle informaciu. Vdedy program zamrzne, lebo stale caka na data , ktore ale nikdy nepridu.

Potreboval by som nejakym sposobom osetrit Read() . Viem ze extistuju timeouty , ktore by mohli pomoct ale neviem ich v C++ pouzit (teda nasiel som o tom vela ale v c++ skoro nic :P ) . Sami si ich neviem spravit , nie som taky guru programator :D

Dakujem uz teraz.


Offline

Skúsený užívateľ
Skúsený užívateľ
C++ Timeout

Registrovaný: 11.01.09
Prihlásený: 23.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 27.08.2010 13:48

Neviem, ako pracuje funkcia C8855ReadData, ale ak nebeží paralelne, tj. čaká sa na jej ukončenie, tak by som celú funkciu Read() spúšťal v novom vlákne. V prípade spomínanej nedokonalosti aplikácia nezatuhne, ale iba dané vlákno (a to by sa dalo v krajnom prípade násilne ukončiť).


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.10
Prihlásený: 27.08.10
Príspevky: 8
Témy: 1
Príspevok Napísal autor témyOffline : 27.08.2010 14:36

Paralerne nebezi, lebo s vlaknami robyt neviem. Funkcia v podstate len caka na data ktore pridu a potom pokracuje. Ta chyba sa netika softu ale samotneho hardweru a neda sa odstranit. Proste raz za cas tie data neposle.
Viem ze v .NET aplikaciach abo Jave existuju timeouty ktore pre funkciu vyhradia maximalny cas, ak sa do vtedy funkcia sama neukonci. V C++ by mao extistovat tiez nico podobne ale nieviem ako to spravit.


Offline

Skúsený užívateľ
Skúsený užívateľ
C++ Timeout

Registrovaný: 11.01.09
Prihlásený: 23.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 27.08.2010 15:51

Ak ti bránia použiť vlákna iba vedomosti, tak ti trocha pomôžem. Ak pracuješ vo Windowse, budeš potrebovať tieto WinAPI funkcie:

CreateThread
http://miniurl.com/51828

ResumeThread
http://miniurl.com/51829

TerminateThread
http://miniurl.com/51830

WaitForSingleObject
http://miniurl.com/51831

Samotný kód:
Kód:
//...
  Data = 0;
  i = 0;
  int interval_ms = 5000;   // cas, ktory potrebujes, v ms
  DWORD threadID;
  HANDLE hThread;

  while( i < NumberOfGate ) {

    hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE) &ThreadFunction, NULL, 0, &threadID );
    if ( WaitForSingleObject( hThread, interval_ms ) == WAIT_TIMEOUT )
        TerminateThread( hThread, 0 );      // nasilne ukoncenie v pripade, ako to funkcia nestihne vcas

    Data = CntData + Data;
    i++;
    if( Terminated )
      break;

  }

  DataArray[z] = Data ;
//...


Funkcia vlákna:
Kód:
DWORD WINAPI ThreadFunction( LPVOID ) {

  BYTE ResultReturned;
  if ( FALSE == C8855ReadData(    hC8855,
                        &CntData,
                        &ResultReturned)) {
      Form1->Memo2->Lines->Add("Read data ERROR.");
      return;
   }
}



Ak niečo nie je jasné, prípadne to nefunguje, ozvi sa.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.10
Prihlásený: 27.08.10
Príspevky: 8
Témy: 1
Príspevok Napísal autor témyOffline : 27.08.2010 16:43

Vyzera to pekne.
Vyhodilo mi jednu chybu:

[BCC32 Error] Unit2.cpp(70): E2451 Undefined symbol 'ThreadFunction'

pri:
Kód:
 hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE) [b]&ThreadFunction[/b], NULL, 0, &threadID );


Offline

Skúsený užívateľ
Skúsený užívateľ
C++ Timeout

Registrovaný: 11.01.09
Prihlásený: 23.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 27.08.2010 16:56

Zrejme si v hlavičkovom súbore zabudol pripísať jej prototyp:
Kód:
DWORD WINAPI ThreadFunction( LPVOID );


// môžeš to pridať aj v aktuálnom zdrojovom súbore medzi include-ami a začiatkom definície funkcií, ale je zvykom písať prototypy do hlavičkového súboru







_________________
Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.10
Prihlásený: 27.08.10
Príspevky: 8
Témy: 1
Príspevok Napísal autor témyOffline : 27.08.2010 17:05

praveze hlavicka je napisana dobre ...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.10
Prihlásený: 27.08.10
Príspevky: 8
Témy: 1
Príspevok Napísal autor témyOffline : 27.08.2010 17:10

kniznica je <windows.h> ?

Pripadne netreba nieco deklarovat aj v *.h subore ?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.10
Prihlásený: 27.08.10
Príspevky: 8
Témy: 1
Príspevok Napísal autor témyOffline : 27.08.2010 17:26

AA .. pardon

nasiel som chybu...

Zajtra to skusim otestovat .... dufam ze to uz pojde bez problemou.

Dam vediet ako to dopadlo. Velka vdaka ;)


Odpovedať na tému [ Príspevkov: 9 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Crontab a timeout

v Operačné systémy Unix a Linux

0

424

25.01.2010 20:30

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Window.open - timeout

v JavaScript, VBScript, Ajax

11

1306

18.11.2007 14:48

delo101 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. BSoD Clock watchdog timeout

v Ovládače

6

580

25.09.2017 17:58

2petter8 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Plash Player 12% Timeout

v Ostatné programy

4

465

02.12.2011 16:38

stevo512 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Session timeout alebo regenerate

v PHP, ASP

0

639

08.11.2011 16:19

quark Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. js funkcia timeout, zahlcovanie operacnej pamete

v JavaScript, VBScript, Ajax

2

483

25.04.2012 17:34

KViki Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. AMD drivers timeout (AMD Radeon 6750 XT 12GB)

v ATI/AMD grafické karty

2

110

10.01.2024 20:09

misterso Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

730

08.07.2014 20:40

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladam hracov na C&C Generals Zero Hour

v Počítačové hry

10

1250

07.03.2007 19:22

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rozdiel medzi Borland 3.1 C++ vs Net. C++

v Assembler, C, C++, Pascal, Java

4

575

20.07.2010 12:54

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hledá se programátor C/C++ pro vesmírné projekty (Praha)

v Ponuka práce

0

1123

10.05.2016 14:59

evolvsys Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Naučte se C++ za 21 dní + C++Builder 6

v Assembler, C, C++, Pascal, Java

18

2413

21.05.2010 21:08

Wpegb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. K: PC Literaturu- C++/C#/java/python/ruby/RoR

v Kúpim

0

410

13.05.2014 18:16

expresado Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. aky je rozdiel medzi C++ a Visual C++ ?

v Assembler, C, C++, Pascal, Java

8

1964

19.02.2011 22:46

vendo2 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Čo mi treba na programovanie v C/C++

v Assembler, C, C++, Pascal, Java

17

1146

25.09.2011 18:14

reDo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Darujem knihy o programovaní (HTML, Java, Visual C++, C++ Builder, Android)

v Vymením a darujem

0

430

01.04.2019 11:20

tomasteicher Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra