~ubuntu-branches/ubuntu/oneiric/kde-l10n-da/oneiric-updates

« back to all changes in this revision

Viewing changes to docs/kdeedu/kstars/scriptbuilder.docbook

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2008-02-08 11:11:05 UTC
  • Revision ID: james.westby@ubuntu.com-20080208111105-2wx8pyf2fv5viryw
Tags: upstream-4.0.1
Import upstream version 4.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<sect1 id="tool-scriptbuilder">
 
2
<title
 
3
>Værktøjet Scriptopbygning</title>
 
4
<indexterm
 
5
><primary
 
6
>Værktøjer</primary>
 
7
<secondary
 
8
>Scriptopbygning</secondary>
 
9
</indexterm>
 
10
 
 
11
<para
 
12
>KDE-programmer kan styres fra andre programmer, fra kommandolinjen eller fra et skal-script vha. protokollen "Desktop COmmunication Protocol" (<abbrev
 
13
>DCOP</abbrev
 
14
>). KStars udnytter denne mulighed til at gøre det muligt at lave scripter der udfører meget komplekse operationer, så de kan udføres igen og igen. Dette kan f.eks. bruges i undervisningsverdenen, til at forberede en demonstration af astronomiske begreber og eksempler. </para>
 
15
<para
 
16
>Problemet med DCOP-scripter er at det minder meget om programmering når man skriver dem. Og derfor kan det virke uoverkommeligt at skulle lave dem i hånden hvis man ikke har erfaring med programmering. Værktøjet Scriptopbygning er en (<abbrev
 
17
>GUI</abbrev
 
18
>), en grafisk "peg og klik" brugerflade  til at konstruere DCOP-scripter. På den måde bliver det meget nemmere for f.eks. lærere at lave avancerede scripter. </para>
 
19
 
 
20
<sect2 id="sb-intro">
 
21
<title
 
22
>Introduktion til Scriptopbygning</title>
 
23
 
 
24
<para
 
25
>Før jeg forklarer hvordan Scriptopbyggeren bruges, vil jeg lave en kort introduktion af alle <abbrev
 
26
>GUI</abbrev
 
27
>-komponenterne. Brug funktionen "Hvad er dette?" for at få flere informationer. </para>
 
28
 
 
29
<screenshot>
 
30
<screeninfo
 
31
>Værktøjet Scriptopbygning </screeninfo>
 
32
<mediaobject>
 
33
  <imageobject>
 
34
    <imagedata fileref="scriptbuilder.png" format="PNG"/>
 
35
  </imageobject>
 
36
  <textobject>
 
37
    <phrase
 
38
>Værktøjet Scriptopbygning</phrase>
 
39
  </textobject>
 
40
</mediaobject>
 
41
</screenshot>
 
42
 
 
43
<para
 
44
>Værktøjet Scriptopbygning er vist på skærmbilledet herover. Feltet til venstre er feltet <firstterm
 
45
>Nuværende script</firstterm
 
46
>, den viser listen over de kommandoer scriptet foreløbigt består af. Feltet til højre er <firstterm
 
47
>Funktionsoversigten</firstterm
 
48
>, den viser listen over de funktioner der kan bruges i scriptet. Under funktionsoversigten er der et lille panel der kan vise kort information om den scriptfunktion der er markeret i funktionsoversigten. Under feltet nuværende script findes panelet <firstterm
 
49
>Funktionsargumenter</firstterm
 
50
>. Når en funktion markeres i feltet med det nuværende script bliver der i panelet Funktionsargumenter mulighed for at indsætte værdier for de forskellige indstillingsmuligheder funktionen har. </para
 
51
><para
 
52
>Langs toppen af vinduet er der en række knapper som indvirker på scriptet som helhed. Fra venstre mod højre er det:<guibutton
 
53
>Nyt script</guibutton
 
54
>, <guibutton
 
55
>Åbn script</guibutton
 
56
>, <guibutton
 
57
>Gem script</guibutton
 
58
>, <guibutton
 
59
>Gem scriptet som...</guibutton
 
60
> og <guibutton
 
61
>Test script</guibutton
 
62
>. Funktionen af disse knapper giver sig selv, undtagen måske den sidste knap. Når man trykker på <guibutton
 
63
>Test script</guibutton
 
64
> bliver det nuværende script udført i KStars hovedvindue. Det er smart at flytte vinduet med scriptopbyggeren før du trykker på denne knap, ellers kan du jo ikke se resultatet. </para
 
65
><para
 
66
>I midten af vinduet er der en lodret række knapper, som styrer individuelle scriptfunktioner. Nedefra og op er det:<guibutton
 
67
>Tilføj funktion</guibutton
 
68
>, <guibutton
 
69
>Fjern funktionen</guibutton
 
70
>, <guibutton
 
71
>Kopiér funktionen</guibutton
 
72
>, <guibutton
 
73
>Flyt op</guibutton
 
74
> og <guibutton
 
75
>Flyt ned</guibutton
 
76
>. <guibutton
 
77
>Tilføj funktion</guibutton
 
78
> tilføjer den funktion der i øjeblikket er markeret i funktionsoversigten til scriptet (du kan også tilføje en funktion ved at dobbeltklikke på den). Resten af knapperne virker på den funktion der er markeret i feltet Nuværende script, ved enten at sletter funktionen, kopiere den eller ændre dens placering i scriptet. </para>
 
79
</sect2>
 
80
 
 
81
<sect2 id="sb-using">
 
82
<title
 
83
>Brug af scriptopbyggeren</title>
 
84
<para
 
85
>For at illustrere hvordan scriptopbyggeren virker, vil vi gennemgå et lille eksempel, hvor vi laver et script der følger månen mens uret går meget hurtigt. </para
 
86
><para
 
87
>Hvis vi vil følge Månen er vi nødt til først at indstille stjernekortet så det peger på den. Funktionen <firstterm
 
88
>lookToward</firstterm
 
89
> bruges til at gøre dette. Markér denne funktion i funktionsoversigten, og se på dokumentationen der kommer frem under oversigten. Tryk på knappen <guibutton
 
90
>Tilføj funktion</guibutton
 
91
> for at tilføje denne funktion til scriptfeltet. Panelet funktionsargumenter vil nu indeholde et kombofelt <quote
 
92
>Ret:</quote
 
93
>, forkortelse for retning. Det er den retning stjernekortet skal ses i. Kombinationsfeltet indeholder fra starten hovedkompasretningerne ikke Månen eller andre objekter. Men du kan enten skrive <quote
 
94
>Moon</quote
 
95
> manuelt i feltet, eller trykke på knappen <guibutton
 
96
>Objekt</guibutton
 
97
> for at bruge vinduet <guilabel
 
98
>Find objekt</guilabel
 
99
> til at vælge Månen fra listen over kendte objekter. Læg mærke til at centrering på et objekt også slår følgning af objektet til, så der er ingen grund til at tilføje <firstterm
 
100
>setTracking</firstterm
 
101
>-funktionen efter lookToward. </para
 
102
><para
 
103
>Nu da vi har fået stillet ind på Månen, skal vi have tiden til at gå hurtigere. Brug funktionen <firstterm
 
104
>setClockScale</firstterm
 
105
> til dette. Tilføj den til scriptet ved at dobbeltklikke på den i funktionsoversigten. Funktionsargumentpanelet indeholder et rullefelt til at indstille tidsintervallerne for uret i simuleringen. Ret tidsintervallerne til 3 timer. </para
 
106
><para
 
107
>O.k. vi har stillet ind på Månen og speedet uret op. Nu skal vi så have scriptet til at vente nogle sekunder så stjernekortet har tid til at stille ind på månen. Tilføj funktionen <firstterm
 
108
>waitFor</firstterm
 
109
> til scriptet, og brug funktionsargumentpanelet til at angive at det skal vente i 20 sekunder før det går videre. </para
 
110
><para
 
111
>For at afslutte stiller vi tiden til at gå normalt igen. Indsæt en ny forekomst af setClockScale og sæt dens værdi til 1 sek. </para
 
112
><para
 
113
>Faktisk er vi ikke helt færdige endnu. Vi skal tvinge stjernekortet til at benytte koordinater fra ækvatorsystemet før scriptet låser sig fast på Månen og sætter farten på uret op. Hvis stjernekortet bruger koordinatsystemet horisontsystemet vil det rotere meget hurtigt over store vinkler mens Månen står op og går ned. Dette kan være meget forvirrende, og kan undgås ved at sætte indstillingen <firstterm
 
114
>UseAltAz</firstterm
 
115
> til <quote
 
116
>false</quote
 
117
>.' For at ændre indstillinger af stjernekortet bruges funktionen <firstterm
 
118
>changeViewOption</firstterm
 
119
>. Tilføj denne funktion til scriptet og se nærmere på funktionsargumentpanelet. Der er et kombinationsfelt med alle de indstillinger der kan ændres med changeViewOption. Da vi ved at vi vil ændre indstillingen UseAltAz kan vi bare markere dette i kombinationsfeltet. Men listen er ret lang, og der er ingen beskrivelse af hvad hver indstillingsmulighed er til. Så det er måske lettere at trykke på <guibutton
 
120
>Gennemse træstrukturen</guibutton
 
121
> som vil åbne et vindue der indeholder en trævisning af de tilgængelige muligheder organiseret efter emne. Tilmed har hver indstillingsmulighed tilknyttet en kort beskrivelse af hvad den gør, og en beskrivelse af datatypen af dens værdier. Vi finder UseAltAz under kategorien <guilabel
 
122
>Stjernekortsindstillinger</guilabel
 
123
>. Markér bare dette punkt og tryk på <guibutton
 
124
>O.k.</guibutton
 
125
>, og den vil blive valgt i kombinationsfeltet i funktionsargumentpanelet. Til sidst mangler vi så bare at sætte dens værdi til <quote
 
126
>false</quote
 
127
> eller <quote
 
128
>0</quote
 
129
>. </para
 
130
><para
 
131
>Et skridt mere: ændringen UseAltAz indsat sidst i scriptet gør ingen nytte. Vi har brug for at ændre det før noget andet sker. Så marker funktionen i feltet Nuværende script, og tryk på <guibutton
 
132
>Flyt op</guibutton
 
133
> indtil det er den første funktion. </para
 
134
><para
 
135
>Nu da vi er færdige med scriptet skal det gemmes på disken. Tryk på <guibutton
 
136
>Gem script</guibutton
 
137
>. Dette åbner en dialog hvor du først kan give scriptet et navn og skrive dit navn som forfatter. Skriv <quote
 
138
>På sporet af Månen</quote
 
139
> som scriptets navn og dit eget navn som forfatter, og tryk på <guibutton
 
140
>O.k</guibutton
 
141
>. Derefter vil du se  &kde;s standardgemmedialog. Skriv et filnavn og tryk på <guibutton
 
142
>O.k.</guibutton
 
143
> for at gemme scriptet. Vær opmærksom på at hvis filnavnet ikke ender på <quote
 
144
>.kstars</quote
 
145
>, vil denne filendelse automatisk blive tilføjet. Hvis du er nysgerrig kan du altid læse scriptfilen i enhver teksteditor. </para
 
146
><para
 
147
>Nu da vi er færdige med scriptet kan vi starte det på forskellige måder. Fra kommandolinjen kan du simpelthen køre scriptet, når bare du husker at åbne KStars først. Alternativt kan du starte scriptet inde fra KStars ved at bruge menupunktet <guimenuitem
 
148
>Kør script</guimenuitem
 
149
> i <guimenu
 
150
>Fil</guimenu
 
151
>-menuen. </para>
 
152
</sect2>
 
153
 
 
154
<sect2 id="sb-indi">
 
155
  <title
 
156
>Enhedsautomatisering med INDI</title>
 
157
  <para
 
158
>Enhedsskemalægning og automatisering understøttes for alle enheder som følger <link linkend="what-is-indi"
 
159
>INDI</link
 
160
>. Du kan koordinere så mange enheder som helst til at udføre komplekse handlinger med &kstars; <link linkend="sb-intro"
 
161
>scriptbygger</link
 
162
>. Dette kan opnås ved at bruge &kstars; INDI DCOP-grænseflade. INDI DCOP-funktionerne kan deles op i fem forskellige klasser. Det følgende er en gennemgang af funktionerne som understøttes i Kstars og deres argumenter. Det anbefales at du læser afsnittet <link linkend="indi-concepts"
 
163
>INDI-begreber</link
 
164
> eftersom vi udnytter nøglebegreber fra INDI i hele denne vejledning.</para>
 
165
  <orderedlist>
 
166
    <listitem
 
167
><para
 
168
>Generiske enhedsfunktioner: Funktioner til at oprette eller lukke af for enheder, osv.</para>
 
169
      <itemizedlist>
 
170
        <listitem
 
171
><para
 
172
><function
 
173
>startINDI (QString deviceName, bool useLocal)</function
 
174
>: Opret en INDI-enhed enten i lokaltilstand eller i servertilstand.</para
 
175
></listitem>
 
176
        <listitem
 
177
><para
 
178
><function
 
179
>shutdownINDI (QString deviceName)</function
 
180
>: Luk af for en INDI-enhed.</para
 
181
></listitem>
 
182
        <listitem
 
183
><para
 
184
><function
 
185
>switchINDI(QString deviceName, bool turnOn)</function
 
186
>: Forbind eller afbryd en INDI-enhed.</para
 
187
></listitem>
 
188
        <listitem
 
189
><para
 
190
><function
 
191
>setINDIPort(QString deviceName, QString port)</function
 
192
>: Indstil INDI-enhedens forbindelsesport.</para
 
193
></listitem>
 
194
        <listitem
 
195
><para
 
196
><function
 
197
>setINDIAction(QString deviceName, QString action)</function
 
198
>: Aktivér en INDI-handling. Handlingen kan være et hvilket som helst <emphasis
 
199
>element</emphasis
 
200
> i en <emphasis
 
201
>skifteegenskab</emphasis
 
202
>.</para
 
203
></listitem>
 
204
        <listitem
 
205
><para
 
206
><function
 
207
>waitForINDIAction(QString deviceName, QString action)</function
 
208
>: Hold pause i kørsel af scriptet til angiven <emphasis
 
209
>handlingsegenskab</emphasis
 
210
> returnerer med status O.k.</para
 
211
></listitem>
 
212
      </itemizedlist>
 
213
    </listitem>
 
214
    <listitem
 
215
><para
 
216
>Teleskopfunktioner: Funktioner til at styre teleskopbevægelser og status.</para>
 
217
      <itemizedlist>
 
218
        <listitem
 
219
><para
 
220
><function
 
221
>setINDIScopeAction(QString deviceName, QString action)</function
 
222
>: Indstil teleskopets tilstand eller handling. Tilgængelige tilvalg er SLEW, TRACK, SYNC, PARK og ABORT.</para
 
223
></listitem>
 
224
        <listitem
 
225
><para
 
226
><function
 
227
>setINDITargetCoord(QString deviceName, double RA, double DEC)</function
 
228
>: Indstil teleskopets JNow-målkoordinater til <emphasis
 
229
>RA</emphasis
 
230
> og <emphasis
 
231
>DEC</emphasis
 
232
>.</para
 
233
></listitem>
 
234
        <listitem
 
235
><para
 
236
><function
 
237
>setINDITargetName(QString deviceName, QString objectName)</function
 
238
>: Indstil teleskopets JNow-målkoordinater til koordinaterne for <emphasis
 
239
>objectName</emphasis
 
240
>. Kstars slår objektnavnet op i sin database og henter RA og DEC når de er fundet.</para
 
241
></listitem>
 
242
        <listitem
 
243
><para
 
244
><function
 
245
>setINDIGeoLocation(QString deviceName, double longitude, double latitude)</function
 
246
>: Sæt teleskopets geografiske sted til de længdegrader og breddegrader som angives. Længdegraden måles mod øst fra Greenwich, i Storbritannien. Selvom det er almindeligt at bruge negative længdegrader for den vestlige halvklode, kræver INDI imidlertid længdegrader mellem 0 og 360 grader. Hvis du har en negative længdegrad, så læg blot 360 grader til for at få værdien som INDI forventer sig. For eksempel har Calgary i Canada følgende koordinater i KStars: Længdegrad -114 04 58 og breddegrad 51 02 58. Altså ville INDI behøve længdegraden 360 - 114,069 = 245,917 grader.</para
 
247
></listitem>
 
248
        <listitem
 
249
><para
 
250
><function
 
251
>setINDIUTC(QString ddeviceName, QString UTCDateTime)</function
 
252
>: Indstil teleskopets UTC-tid i ISO 8601-format. Formatet er ÅÅÅÅ/MM/DDTTT:MM:SS.(f.eks. 2004-07-12T22:05:32).</para
 
253
></listitem>
 
254
      </itemizedlist>
 
255
    </listitem>
 
256
    <listitem
 
257
><para
 
258
>Kamera/CCD-funktioner: Funktioner til at styre kamera/CCD-egenskaber og status.</para>
 
259
      <itemizedlist>
 
260
        <listitem
 
261
><para
 
262
><function
 
263
>setINDICCDTemp(QString deviceName, int temp)</function
 
264
>: Indstil CCD-kredsens måltemperatur i grader Celsius.</para
 
265
></listitem>
 
266
        <listitem
 
267
><para
 
268
><function
 
269
>setINDIFrameType(QString deviceName, QString type)</function
 
270
>: Indstil CCD-rammetype. Tilgængelige tilvalg er FRAME_LIGHT, FRAME_BIAS, FRAME_DARK og FRAME_FLAT.</para
 
271
></listitem>
 
272
        <listitem
 
273
><para
 
274
><function
 
275
>startINDIExposure(QString deviceName, int timeout)</function
 
276
>: Start eksponering med CCD eller kamera med længden som angives af <emphasis
 
277
>timeout</emphasis
 
278
> i sekunder.</para
 
279
></listitem>
 
280
      </itemizedlist>
 
281
    </listitem
 
282
>    
 
283
   <listitem
 
284
><para
 
285
>Fokuseringsfunktioner: Funktioner til at styre fokuseringsenhedens bevægelse og status.</para>
 
286
      <itemizedlist>
 
287
      <listitem
 
288
><para
 
289
><function
 
290
>setINDIFocusSpeed(QString deviceName, QString action)</function
 
291
>: Angiv fokuseringsenhedens hastighed. Tilgængelige tilvalg er FOCUS_HALT, FOCUS_SLOW, FOCUS_MEDIUM og FOCUS_FAST.</para
 
292
></listitem>
 
293
      <listitem
 
294
><para
 
295
><function
 
296
>setINDIFocusTimeout(QString deviceName, int timeout)</function
 
297
>: Indstil tidsgrænsen i sekunder for alle følgende startINDIFocus-handlinger.</para
 
298
></listitem>
 
299
      <listitem
 
300
><para
 
301
><function
 
302
>startINDIFocus(QString deviceName, int focusDir)</function
 
303
>: Flyt enten fokuseringsenheden indad (focusDir = 0) eller udad (focusDir = 1). Handlingens hastighed og varighed angives af funktionerne <function
 
304
>setINDIFocusSpeed()</function
 
305
> og <function
 
306
>setINDIFocusTimeout()</function
 
307
>.</para
 
308
></listitem>
 
309
    </itemizedlist>
 
310
    </listitem>
 
311
   <listitem
 
312
><para
 
313
>Filterfunktioner: Funktioner til at kontrollere filterpositioner.</para>
 
314
      <itemizedlist>
 
315
      <listitem
 
316
><para
 
317
><function
 
318
>setINDIFilterNum(QString deviceName, int filter_num)</function
 
319
>: Ændr filterposition til <varname
 
320
>filter_num</varname
 
321
>. Brugeren kan tildele alias for filternummer i dialogen <guimenuitem
 
322
>Indstil INDI</guimenuitem
 
323
> under menuen <guimenu
 
324
>Enheder</guimenu
 
325
> (f.eks. Filter 1 = Rød, Filter 2 = Grøn, etc.).</para
 
326
></listitem>
 
327
    </itemizedlist>
 
328
    </listitem>
 
329
    
 
330
  </orderedlist>
 
331
  
 
332
<para
 
333
>Bemærk at enhedsnavnet er det første argument i alle INDI-funktioner. Det tillader at forskellige kommandoer som skal sendes til forskellige INDI-enheder blandes i det samme script. Værktøjet Scriptbygger sørger for to tilvalg for at gøre det nemmere at oprette og redigere INDI-scripter:</para>
 
334
<itemizedlist>
 
335
  <listitem
 
336
><para
 
337
><option
 
338
>Tilføj WaitForINDIAction efter alle INDI-handlinger</option
 
339
>: Hvis dette er markeret, tilføjer scriptbyggeren automatisk <function
 
340
>waitForINDIAction()</function
 
341
> efter hver handling som genkendes. Hvis du for eksempel tilføjer funktionen <function
 
342
>switchINDI()</function
 
343
> i scriptet og tilvalget er markeret, tilføjer scriptbyggeren "waitForINDIAction CONNECTION" i scriptfilen lige efter <function
 
344
>switchINDI()</function
 
345
>. Det gør at scriptet holder pause efter <function
 
346
>switchINDI()</function
 
347
> er udført indtil <function
 
348
>switchINDI()</function
 
349
> returnerer med o.k. status (dvs. forbindelse til enheden lykkedes). Det er yderst vigtigt at vide at scriptbyggeren ikke automatisk kan tilføje <function
 
350
>waitForINDIAction()</function
 
351
> for generelle handlinger som tilføjes med funktionen <function
 
352
>setINDIAction()</function
 
353
>. Dette skyldes at Kstars ikke kan afgøre overliggende egenskab for generiske handlinger. Derfor skal du tilføje <function
 
354
>waitForINDIAction()</function
 
355
> manuelt efter generiske handlinger når det ønskes.</para>
 
356
  </listitem>
 
357
  <listitem
 
358
><para
 
359
><option
 
360
>Genbrug INDI-enhedsnavn</option
 
361
>: Hvis dette er markeret udfyldes feltet enhedsnavn i alle efterfølgende funktioner automatisk med det seneste enhedsnavn. Det seneste enhedsnavn indstilles hver gang funktionen <function
 
362
>startINDI()</function
 
363
> tilføjes i det nuværende script. Ved arbejde med flere enheder anbefales at dette tilvalg deaktiveres.</para>
 
364
  </listitem>
 
365
</itemizedlist>
 
366
 
 
367
<para
 
368
>Nu er vi klar til at oprette et demonstrationsscript som styrer teleskopet LX200 GPS, udover Finger Lakes CCD-kamera. Vor opgave er enkel. Vi beder teleskopet om at panorere til og følge Mars, og derefter beder vi kameraet om at tage tre billeder 10 sekunder adskilt med 20 sekunder.</para>
 
369
<important
 
370
><para
 
371
>Eftersom der ikke er nogen direkte tilbagemelding fra INDI DCOP-grænsefladen om forløbet, værdier eller status for enhedshandlinger og parametre (bortset fra <function
 
372
>waitForINDIAction()</function
 
373
>), er enhedsautomatisering i Kstars ligesom et styresystem med åben kreds. I et sådant system er der oftest ingen direkte tilbagemelding for at måle systemets tilstand og korrigere fejl. Følgelig skal du konstruere dine scripter for enhedsautomatisering med stor eftertanke. Alle automatiseringsscripter skal udsættes for nøje afprøvning inden de bruges.</para
 
374
></important>
 
375
 
 
376
<screenshot>
 
377
  <screeninfo
 
378
>Værktøjet Scriptopbygning </screeninfo>
 
379
  <mediaobject>
 
380
    <imageobject>
 
381
      <imagedata fileref="indiscript.png" format="PNG"/>
 
382
    </imageobject>
 
383
    <textobject>
 
384
      <phrase
 
385
>Værktøjet Scriptopbygning</phrase>
 
386
    </textobject>
 
387
  </mediaobject>
 
388
</screenshot>
 
389
 
 
390
<para
 
391
>Demonstrationsscriptet vises på skærmaftrykket ovenfor. Bemærk at vi markerede <option
 
392
>"Tilføj WaitForINDIAction efter alle INDI-handlinger"</option
 
393
> og afmarkerede <option
 
394
>"Genbrug INDI-enhedsnavn"</option
 
395
>. Den første funktion at tilføje er <function
 
396
>startINDI()</function
 
397
> som vises ovenfor. Vi vil køre vore enheder lokalt, så vi ændrer ikke tjenestetilstand som varetages af funktionens argumentvindue. Vi skriver vort enhedsnavn, og begynder med teleskopet "LX200 GPS". Vi gentager samme handling  for "FLI CCD". Funktionen <function
 
398
>waitFor()</function
 
399
> angives derefter. Det anbefales i almindelighed at bruge funktionen <function
 
400
>waitFor()</function
 
401
> med det samme efter <function
 
402
>startINDI()</function
 
403
> for at holde pause i scriptet 1-5 sekunder. Dette sikrer at alle egenskaber er bygget og er klare til at tage mod kommandoer. Det er også nyttigt for at styre fjernenheder, eftersom det kan tage en vis tid at hente og bygge egenskaber. I næste funktion, <function
 
404
>switchINDI()</function
 
405
>, forbinder vi til alle enheder.</para>
 
406
 
 
407
<para
 
408
>Eftersom <option
 
409
>"Tilføj WaitForINDIAction efter alle INDI-handlinger"</option
 
410
> er markeret, behøver vi ikke at tilføje <function
 
411
>waitForINDIAction()</function
 
412
> efter <function
 
413
>switchINDI()</function
 
414
> for at sikre at vi kun fortsætter med at køre scriptet efter at det er lykkedes at blive forbundet. Dette skyldes at scriptbyggeren gør det automatisk for os når vi gemmer scriptet. Lad os nu indstille teleskopets tilstand til sporing. Klik på funktionen <function
 
415
>setINDIScopeAction()</function
 
416
> og vælg TRACK. Bemærk at vi skal indstille teleskopet til sporing <emphasis
 
417
>inden</emphasis
 
418
> koordinaterne som det skal følge angives. Funktionen <function
 
419
>setINDIScopeAction()</function
 
420
> er der af bekvemmelighedsgrunde, eftersom den kun udfører den generelle funktion <function
 
421
>setINDIAction()</function
 
422
> fulgt af nøgleordet TRACK i dette eksempel. Dog er fordelen ved at bruge <function
 
423
>setINDIScopeAction()</function
 
424
> at Kstars automatisk kan tilføje <function
 
425
>waitForINDIAction()</function
 
426
> bagefter når det kræves. Dette er ikke automatisk tilgængeligt for generiske handlinger, som vi tidligere har beskrevet.</para>
 
427
 
 
428
<para
 
429
>Derefter bruger vi funktionen <function
 
430
>setINDITargetName()</function
 
431
> og angiver Mars. Endelig omfatter de sidste få skridt at indfange et billede i 10 sekunder, hvilket kan gøres ved at bruge funktionen <function
 
432
>startINDIExposure()</function
 
433
> og vente 20 sekunder mellem kaldene, hvilket kan gøres ved at bruge funktionen <function
 
434
>waitFor()</function
 
435
> med værdien 20.</para>
 
436
 
 
437
<para
 
438
>Nu kan vi gemme scriptet og køre det når som helst. Det gemte script ligner det følgende:</para>
 
439
<blockquote
 
440
><programlisting
 
441
>#!/bin/bash
 
442
    #KStars DCOP-script: Demoscript
 
443
    #af Jasem Mutlaq
 
444
    #seneste ændring: Tor Jan 6 2005 09:58:26
 
445
    #
 
446
    KSTARS=`dcopfind -a 'kstars*'`
 
447
    MAIN=KStarsInterface
 
448
    CLOCK=clock#1
 
449
    dcop $KSTARS $MAIN  startINDI "LX200 GPS" true
 
450
    dcop $KSTARS $MAIN  startINDI "FLI CCD" true
 
451
    dcop $KSTARS $MAIN  waitFor 3
 
452
    dcop $KSTARS $MAIN  switchINDI "LX200 GPS" true
 
453
    dcop $KSTARS $MAIN  waitForINDIAction "LX200 GPS" CONNECTION
 
454
    dcop $KSTARS $MAIN  switchINDI "FLI CCD" true
 
455
    dcop $KSTARS $MAIN  waitForINDIAction "FLI CCD" CONNECTION
 
456
    dcop $KSTARS $MAIN  setINDIScopeAction "LX200 GPS" TRACK
 
457
    dcop $KSTARS $MAIN  waitForINDIAction "LX200 GPS" ON_COORD_SET
 
458
    dcop $KSTARS $MAIN  setINDITargetName "LX200 GPS" Mars
 
459
    dcop $KSTARS $MAIN  waitForINDIAction "LX200 GPS" EQUATORIAL_EOD_COORD
 
460
    dcop $KSTARS $MAIN  startINDIExposure "FLI CCD" 10
 
461
    dcop $KSTARS $MAIN  waitForINDIAction "FLI CCD" EXPOSE_DURATION
 
462
    dcop $KSTARS $MAIN  waitFor 20
 
463
    dcop $KSTARS $MAIN  startINDIExposure "FLI CCD" 10
 
464
    dcop $KSTARS $MAIN  waitForINDIAction "FLI CCD" EXPOSE_DURATION
 
465
    dcop $KSTARS $MAIN  waitFor 20
 
466
    dcop $KSTARS $MAIN  startINDIExposure "FLI CCD" 10
 
467
    dcop $KSTARS $MAIN  waitForINDIAction "FLI CCD" EXPOSE_DURATION
 
468
</programlisting>
 
469
</blockquote>
 
470
</sect2>
 
471
</sect1>
 
472