Strona 1 z 1

szybkość działania programu i biblioteka inpout32.dll

: 22 lis 2007, 14:10
autor: cempulik
Wykorzystuje bibliotekę inpout32.dll jednak mam z nią problemy. Nie da się ustawić "dobrej" szybkości silników. Pomiędzy krokami muszę dawać uśpienie głównego wątku programu na 1ms. Bardzo zmniejsza to szybkość pracy.

Fragment mojego programu wygląda następująco:


timeDelay=1;
mikroStep=30;
public void Xgo()

{

for (int j = 0; j < mikroStep; j++)

{

suma = 0;

suma += (int)Math.Pow(2, 3);

PortAccess.Output(adress, suma);

Thread.Sleep(timeDelay);

Reset();

}

}

public void Reset()

{

PortAccess.Output(adress, 0);

Thread.Sleep(timeDelay);

}

Jeśli nie dam "Thread.Sleep(timeDelay);" to silnik właściwie się nie obraca.
Jak można temu zaradzić?

: 22 lis 2007, 14:16
autor: jarekk
Nie da się - taka dyskusja już była.
Bibilioteka ma pod sobą duży kod drivera Windowsowego, jej wywołania (w pętli, bez opóżnienia) będą dawały dość przypadkowy rezultat

A samo ...Sleep(1ms) jest tylko poboznym życzeniem - można się spodziewać 10-20ms

Tylko bardzo specjalistyczne drivery ( Mach, który używa wpina się w zasadzie pod Windowsy) lub DOS da radę ( DOS nawet lepiej).

Może zatem dual(quad) core oraz pętla w programie ( bez funkcji systemowych ) ?

szybkość

: 22 lis 2007, 14:51
autor: cempulik
niestety taki sam efekt jest po użyciu jakiegoś Timera i zdarzeń "tick" przy wartościach mniejszych niż 1 ms

: 22 lis 2007, 15:03
autor: jarekk
Jakich zdarzeń "tick" ?

Nie tędy droga - kolega nie ma szans na zbudowanie czegoś dobrze działającego używając inpout32.dll ( lub podobnych) - prościej podłączyć coś pod USB/port szeregowy ( mikroprocesor) i tam sterować silnikami.

: 22 lis 2007, 16:49
autor: triera
nie stosując specjalistycznych (drogich) bibliotek -> DOS.
Można zacząć się bawić stosując choćby kompilator FirstBASIC (shareware, 25$)
http://www.powerbasic.com/files/pub/pbdos/
i można bezpośrednio obsługiwać LPT.

: 22 lis 2007, 20:03
autor: markcomp77
jeśli już zmieniamy system operacyjny (Win32 -> DOS)...
to może lepiej rozważyć programowanie w linuksie z jądrem czasu rzeczywistego?

: 22 lis 2007, 20:25
autor: triera
Instalujemy FreeDos-a + jakąś nakładkę a-la NortonCommander,
następnie jakiś kompiler (może być QuickBASIC (free), Pascal, C... jak ktoś woli,)
i w ciągu pół godziny możemy zacząć się bawić w sterowanie silnikami.
Komputer może być z odzysku - przy Pentium 200MMX silniki kręcą jak rakieta.
Jak się znudzi naciskamy wyłączamy klawiszem POWER.