/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Håber på et par retnignslinier til hvordan~
Fra : Ingelsen


Dato : 27-12-05 11:22

Jeg har bygget et program der kan optage en "opgave" Programmet kører en
løkke der på skriver i en database hvornår knap 1 - 5 blev trykket ned...

Eksempel:

Tid ->
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 181 19 20 ..........
Knap Nr ned på tidspunktet ->
......2........1...............5..............4.............1...........2...........

Dette skal bruges til at optage hvad en step motor skal gentage.. Og alt det
virker fint...

Nu er problemet jeg skal kode gentagelsen.

Den har 5 positioner den skal køre imellem..
Jeg har kodet hvordan den starter med at køre til den ene ende og derefter
kører frem til første position
(så man ved hvor den er)

Jeg kender også antallet af step mellem de forskellige positionér. Vi kan
bare sige der er 5 step imellem hver.
Derfra variablerne :
Pos1 = 0
Pos2 = 5
Pos3 = 10
Pos4 = 15
Pos5 = 20

Det jeg nu efter den lange sikkert uforståelige forklaring håbede på at få
hjælp til er:
Når jeg afspiller "optagelsen" løber tiden og på de givende tidspunkter for
den afvide hvor den skal køre hen
Men hvordan koder jeg det nemmest??

Altså når en timer kører og en variabel =2 derefter = 3 derefter = 1 osv.
for jeg den til at køre fra 2 til 3 til 1 osv...

Forstår i hvad jeg mener??

Her vil jeg lige beskrive hvad er skal til for at flytte motoren et step.

Et Step fra 1 mod 5: (Retningen)
timer1.enabled
interval= 50 (hastigheden)

writeStepDigital 3
writeStepDigital 1
writeStepDigital 3
writeStepDigital 1
'Hver gang timeren har løbet det igennem har motoren kørt et step.
--------------------------------------------------

Et step fra 5 mod 1 (Retningen)
timer2.enabled
interval= 50 (hastigheden)

writeStepDigital 2
writeStepDigital 0
writeStepDigital 2
writeStepDigital 0
'Hver gang timeren har løbet det igennem har motoren kørt et step.



 
 
Steven Nybo Andersen (30-12-2005)
Kommentar
Fra : Steven Nybo Andersen


Dato : 30-12-05 08:39

ti 27 dec 2005 11:21:46a satte Ingelsen sig på en taburet og skrev
følgende på et stykke vådt franskbrød:


> Forstår i hvad jeg mener??

Hmm har lige et par spørgsmål til det...

1) Er det formatet af databasen du vil have hjælp med?
det så ju ud til at du udmærket vidste hvad der skal sendes til
controlleren

2) hvilken database bruger du

Steven


Ingelsen (30-12-2005)
Kommentar
Fra : Ingelsen


Dato : 30-12-05 10:10


"Steven Nybo Andersen" <ingen@mail.tak> skrev i en meddelelse
news:43b4e415$0$47085$edfadb0f@dread15.news.tele.dk...
> ti 27 dec 2005 11:21:46a satte Ingelsen sig på en taburet og skrev
> følgende på et stykke vådt franskbrød:
>
>
>> Forstår i hvad jeg mener??
>
> Hmm har lige et par spørgsmål til det...
>
> 1) Er det formatet af databasen du vil have hjælp med?
> det så ju ud til at du udmærket vidste hvad der skal sendes til
> controlleren
Jeg ved godt hvad der kal sendes til controlleren, men det er mere hvordan
jeg koder det nemt uden 12000 linier..
Med det mener jeg, mellen hver stop er der vel ca. 1500 Step
(1500x writeStepDigital 3, writeStepDigital 1, writeStepDigital 3,
writeStepDigital 1)
Jeg havde tænkt mig på en eller anden måde at kode det ing i 4 subs, så man
har følgende 4 valgmuligheder:

xx = antal step

De 4 sub navne:

StepLeftSlow
StepLeftFast
StepRightSlow
StepRightFast

Hvor man så bare skulle kunne kalde dem med eksempel: StepLeftFast xx (Kører
xx Steps hurtigt mod Venstre)
Hastigheden er bestemp af intervalet i timeren
og et step kodes ved:
writeStepDigital 3
writeStepDigital 1
writeStepDigital 3
writeStepDigital 1

>
> 2) hvilken database bruger du
Jeg bruger Access 7.0

Hilsen Jan



Steven Nybo Andersen (31-12-2005)
Kommentar
Fra : Steven Nybo Andersen


Dato : 31-12-05 02:58

fr 30 dec 2005 10:10:17a satte Ingelsen sig på en taburet og skrev
følgende på et stykke vådt franskbrød:


> Jeg havde tænkt mig på en eller anden måde at kode det ing i 4 subs,
> så man har følgende 4 valgmuligheder:
>
> xx = antal step
>
> De 4 sub navne:
>
> StepLeftSlow
> StepLeftFast
> StepRightSlow
> StepRightFast

Hvis du mener at de ikke skal kunne returnere evt. fejlkoder fra
controlleren lyder sub som en fin idé. Læg alle 4 subs i et kodemodul og
gør dem public så kan du bruge dem i hele koden uanset hvor du er.

Hvis derimod at programmet skal kunne modtage data tibage fra
controlleren (hvilket nok ville være smartest hvis controlleren
understøtter det) skal du bruge functions. Du gør det samme med functions
for at have dem tilgængelig i hele programmet.

Så kan du nøjes med at have et mainloop eller et timerloop der så hele
tiden chekker databasen. I forbindelse med databasen kan du jo vælge at
lave det sådan at der er et felt der fortæller hvornår den næste hændelse
skal ske istedet for at fylde ddatabasen op med tomme felter altså

TIME    EVENT       ARGS
===========================================
0        Forwardstep        10
50    FullStop        0    
100    FOrwardstep        60

og så have en pointer der tæller opad indtil den når en værdi i det
timefeld den står ved ligfe nu i databasen. Herefter sker følgende.

1) Programmet udfører EVENT med argumnterne der står i ARGS
2) når enden er nået på instruktionen bliver databasen sat et step videre
hvorefter at programmet fortsætter.

Det vil holde databasen i en fornuftig størrelse. Hvis du har behov for
flere instruktioner samtidig kan du evt istedet bruge en SQL-sætning der
filtrerer på TIME-feltet. Så kan du have flere events som du så kan
udføre på een gang uden at fylde databasen unødigt.

Det er mine forslag til hvordan du rent praktisk kan gøre det.

Godt nytår

Steven



Søg
Reklame
Statistik
Spørgsmål : 177438
Tips : 31962
Nyheder : 719565
Indlæg : 6408047
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste