[delphi] Paar vragen

Pagina: 1
Acties:

  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Ik heb een paar vragen over Delphi:

- Is er ook een functie waarbij je pc een te geven nanosecondes wacht (dus 1/1000 ms). Ik heb dit nodig bij het aansturen van een servo.

- Hoe maak je een systray-programma?

- Hoe maak je een schermafdruk (en hoe sla je dit als jpeg op)

(zoeken werkt op het moment niet, maar die eerste vraag kon ik eerder al niet vinden).

Verwijderd

wwww.torry.com
tips

  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Op vrijdag 05 oktober 2001 21:03 schreef Stoel het volgende:
wwww.torry.com
tips
:(
The requested URL could not be retrieved

While trying to retrieve the URL: http://www.torry.com/

The following error was encountered:
Unable to determine IP address from host name for www.torry.com

The dnsserver returned:
Server Failure: The name server was unable to process this query.
Maar staat die eerste daar dan ook op? Die functie moet ik nl. echt even hebben...

[update] Ook op torry.net kan ik niets vinden over een nanoseconde functie. [/update]

  • JapJap
  • Registratie: Maart 2001
  • Laatst online: 07-01 11:02
:z sleep(3456345614547764567263456) :z

Voor de rest: www.torry.net :)

  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Op vrijdag 05 oktober 2001 21:18 schreef JapJap het volgende:
:z sleep(3456345614547764567263456) :z

Voor de rest: www.torry.net :)
Sleep wacht een aantal milliseconden, en ik wil dus nog 1/1000 tijd minder lang wachten...

De rest zie ik idd daar wel staan, bedankt.

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Op vrijdag 05 oktober 2001 20:39 schreef banaan-X het volgende:
...
Is er ook een functie waarbij je pc een te geven nanosecondes wacht (dus 1/1000 ms). Ik heb dit nodig bij het aansturen van een servo.
...
volgens mij kan dat niet, omdat je er met een multitasking systeem (tenminste niet in desktop omgevingen) nooit vanuit kunt gaan dat een nanoseconde (of een veelvoud daarvan) iets gedaan kan worden (bijvoorbeeld wachten). Dat hangt samen met de multitasking-methode van het systeem (zoiezo bij alle Windows versies). Dat systeem werkt nl. ook in milliseconds (of een veelvoud daarvan, weet ik niet zeker).

Btw: ik vraag me zelfs af of een desktop PC wel uitgerust is met de hardware om een nanoseconde te meten, volgens mij heb je voor zulke tijdkritische zaken andere systemen (non-PC zullen we maar zeggen) nodig...

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Op vrijdag 05 oktober 2001 21:24 schreef limoentje het volgende:

[..]

volgens mij kan dat niet, omdat je er met een multitasking systeem (tenminste niet in desktop omgevingen) nooit vanuit kunt gaan dat een nanoseconde (of een veelvoud daarvan) iets gedaan kan worden (bijvoorbeeld wachten). Dat hangt samen met de multitasking-methode van het systeem (zoiezo bij alle Windows versies). Dat systeem werkt nl. ook in milliseconds (of een veelvoud daarvan, weet ik niet zeker).
Btw: ik vraag me zelfs af of een desktop PC wel uitgerust is met de hardware om een nanoseconde te meten!
Wat dacht je van een for next lusje? Als je dan 100000 keer dat doet, ben je ongeveer 0.25ms verder... Het hoeft ook niet heel precies hoor, er mag best een afwijking van zo'n 10-20% inzitten. Maar ik moet wel tussen de .5 en 2 ms met tiendes kunnen wachten. Is de enige mogelijkheid dan een zeer processorbelastende for-next lus?

Verwijderd

kijk eens in de winapi help bij QueryPerformanceCounter of QueryPerformanceFrequency, misschien heb je daar wat aan

Verwijderd

Waarom zou je tot op de nanoseconde nauwkeurig willen werken, dat verschil merk je toch niet.

For-loops verschillen volgens mij per cpu, dat moet je dus eerst proberen

Verwijderd

Moet je ff wat over asm zoeken. Daarbij kan je de processor de kleinste taak laten doen die er is, bijv
code:
1
mov ax, bx

. Je kan vast ook wel ergens vinden hoe lang dit duurt, dus dit moet je in een for-loopje zetten(wat je natuurlijk ook weer moet meerekenen) en dan vervolgens uitvoeren (in delphi). Je kan namelijk assembly gebruiken in object pascal. Nou veel suc6 ermee.
Grtz,
Chris

Verwijderd

Op vrijdag 05 oktober 2001 21:51 schreef Hdez het volgende:
Waarom zou je tot op de nanoseconde nauwkeurig willen werken, dat verschil merk je toch niet.
Dat heeft 'ie toch nodig voor het aansturen van een servo :?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op vrijdag 05 oktober 2001 21:27 schreef banaan-X het volgende:
Wat dacht je van een for next lusje? Als je dan 100000 keer dat doet, ben je ongeveer 0.25ms verder... Het hoeft ook niet heel precies hoor, er mag best een afwijking van zo'n 10-20% inzitten.
Uhm als gebruiker A een 100Mhz Pentium heeft en gebruiker B een 2Ghz P4 heb je een factor 2000% of zo verschil, is dat ook acceptabel?

En dan heb ik het nog niet over de onzinnigheid van de suggestie nadat iemand je net heeft uitgelegd dat deze hele constructie binnen een multitasking OS onmogelijk is.
Maar ik moet wel tussen de .5 en 2 ms met tiendes kunnen wachten. Is de enige mogelijkheid dan een zeer processorbelastende for-next lus?
QueryPerformanceCount en QueryPerformanceFrequency. Simpelweg je doelwaarde berekenen en integercompares doen, en tussen de compares even een Sleep(0) zodat je multitasking blijft werken.

SysTray programma's moet je even de search voor gebruiken op Shell_NotifyIcon.

Schermafdruk met Delphi... kijk eens of TScreen geen canvas properties of relevante methods heeft (heb hier geen VCL help geinstalleerd staan atm).

Professionele website nodig?


  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Op vrijdag 05 oktober 2001 22:45 schreef curry684 het volgende:

[..]

Uhm als gebruiker A een 100Mhz Pentium heeft en gebruiker B een 2Ghz P4 heb je een factor 2000% of zo verschil, is dat ook acceptabel?

En dan heb ik het nog niet over de onzinnigheid van de suggestie nadat iemand je net heeft uitgelegd dat deze hele constructie binnen een multitasking OS onmogelijk is.
[..]
Ik reageerde hiermee op de vraag van hem of dit wel mogelijkwas, nou het is dus wel zeker mogelijk, alleen het probleem gaf je net zelf aan aan.
QueryPerformanceCount en QueryPerformanceFrequency. Simpelweg je doelwaarde berekenen en integercompares doen, en tussen de compares even een Sleep(0) zodat je multitasking blijft werken.

SysTray programma's moet je even de search voor gebruiken op Shell_NotifyIcon.

Schermafdruk met Delphi... kijk eens of TScreen geen canvas properties of relevante methods heeft (heb hier geen VCL help geinstalleerd staan atm).
Ik ga het uitzoeken! :)

  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 18-07 20:32

VisionMaster

Security!

Ik was van mening dat je niet lager kan programmeren van 1 milisec. :'(

In ASM kan je dit wel versnellen, maar is je snelheid en timing niet gegarandeerd. ASM is de enigste oplossing. Je zou op internet moeten zoeken naar productie processen en NASA shit. >:) Maar ik denk dat je dan van je Windows op iets anders moet gaan voor deze preccisie. :P

Mag ik vragen waar je de servo vraag voornodig heb? Misschien kan een van ons een andere oplossing bedenken :)

I've visited the Mothership @ Cupertino


  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Op zaterdag 06 oktober 2001 12:31 schreef VisionMaster het volgende:
Ik was van mening dat je niet lager kan programmeren van 1 milisec. :'(

In ASM kan je dit wel versnellen, maar is je snelheid en timing niet gegarandeerd. ASM is de enigste oplossing. Je zou op internet moeten zoeken naar productie processen en NASA shit. >:) Maar ik denk dat je dan van je Windows op iets anders moet gaan voor deze preccisie. :P

Mag ik vragen waar je de servo vraag voornodig heb? Misschien kan een van ons een andere oplossing bedenken :)
Heb me dus wel een voegvoegsel vergist, het moet in 10 microsecondes nauwkeurig.

Ik wil de servo gebruiken om de wielen van een robot te positioneren. Net zo als bij technisch lego, en dan zet ik aan die servo een tandradje, die de stuuras heen en weer doet bewegen.

"productie processen en NASA shit." :?

Verwijderd

Imo is het dan beter er een PICje tussen te zetten die de timing voor je doet. Aangezien die dingen op een vaste frequentie (bv. 20Mhz) werken kun je er heel naukeurig mee timen.

In feite is de RCX bij lego ook een pic, alleen dan met handige interface om 'm te programmeren.

geweldig spul trouwens, mindstorms :)

  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Op zaterdag 06 oktober 2001 17:57 schreef hezik het volgende:
Imo is het dan beter er een PICje tussen te zetten die de timing voor je doet. Aangezien die dingen op een vaste frequentie (bv. 20Mhz) werken kun je er heel naukeurig mee timen.

In feite is de RCX bij lego ook een pic, alleen dan met handige interface om 'm te programmeren.

geweldig spul trouwens, mindstorms :)
Was mijn natuurkundeleraar ook al erg enthousiast over, hij gaat het nu dan ook kopen.

Maar even terug: wat is een PIC? Zit zeker niet al in een PC? ...

  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 18-07 20:32

VisionMaster

Security!

Op zaterdag 06 oktober 2001 17:53 schreef banaan-X het volgende:

[..]

Heb me dus wel een voegvoegsel vergist, het moet in 10 microsecondes nauwkeurig.

Ik wil de servo gebruiken om de wielen van een robot te positioneren. Net zo als bij technisch lego, en dan zet ik aan die servo een tandradje, die de stuuras heen en weer doet bewegen.

"productie processen en NASA shit." :?
Bij productie processen en NASA shit werkt code nog wel eens que precissie onder de milliseconde grens. Voor een MS-Windows PC is dit niet mogelijk om te programmeren, maar welligt zijn er oplossingen om door de bariere heen te prikken.

Blijkbaar heb je dit dus niet nodig.

I've visited the Mothership @ Cupertino

Pagina: 1