Imeachtaí#
Réamhrá#
Ligeann imeachtaí duit feidhm a thosú go neamhshioncrónach. Nuair a chraoltar imeacht, cuirtear tús le feidhm athghlaoite an imeachta ina thasc (snáithe) féin, ionas gur féidir le do phríomhchód leanúint ar aghaidh ag rith ag an am céanna.
Tábhachtach: Stórálann réad event glao siar amháin. Má chláraíonn tú feidhm eile leis an réad imeachta céanna, cuireann sé ionad an ghlao siar roimhe sin.
Más mian leat go dtarlódh roinnt rudaí ó spreagadh amháin, déan ceann amháin díobh seo:
Glaoigh ar ilfheidhmeanna cúnta ó ghlao ar ais amháin, nó
Bain úsáid as ilréada imeachta agus craol gach ceann acu.
Bain úsáid as snáitheanna ar leithligh chun tascanna a rith go neamhspleách.
Chun Imeacht a chruthú agus a úsáid ansin, lean na céimeanna seo san ord ceart:
Cruthaigh an t-imeacht le
event.Socraigh glao ar ais an imeachta ag baint úsáide as ainm an imeachta (m.sh.:
myEvent(myCallback);).Broadcast an
event:broadcast— Spreagann sé seo gach feidhm chláraithe i réad imeachta chun rith go comhthreomhar.broadcastAndWait— Cuireann sé seo gach feidhm chláraithe i réad imeachta i ngníomh agus fanann sé go mbeidh siad críochnaithe sula leanann sé ar aghaidh.
Tógálaithe Ranga#
1 — Cruthaíonn sé réad
eventgan feidhm athghlaoite.event();
2 — Cruthaíonn sé réad
eventle feidhm ghlao ar ais.event( void (* callback)(void) );
3 — Cruthaíonn sé réad
eventó imeacht eile le feidhm ghlao ar ais.event( event v, void (* callback)(void) );
4 — Cruthaíonn sé réad
eventle feidhm ghlao ar ais a ghlacann le hargóint.event( void (* callback)(void *), void *arg );
5 — Cruthaíonn sé réad
eventó imeacht eile le feidhm ghlaoigh ar ais a ghlacann le hargóint.event( event v, void (* callback)(void *), void *arg );
Scriostóir Ranga#
Scriosann sé an réad event agus scaoileann sé acmhainní gaolmhara.
~event();
Paraiméadair#
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
Feidhm atá sainmhínithe roimh ré le forghníomhú nuair a chraoltar an ócáid. |
|
|
Réad imeachta atá ann cheana le cóipeáil uaidh. |
|
|
Feidhm a ghlacann le hargóint pointeora folamh agus a fhorghníomhaítear nuair a chraoltar an imeacht. |
|
|
Pointeoir chuig sonraí a chuirfear chuig an fheidhm athghlaoite. |
Nótaí#
Stórálann réad
eventglao siar amháin. Má chláraíonn tú feidhm eile leis an réad imeachta céanna, cuireann sé ionad an ghlao siar roimhe sin.Más mian leat go dtarlódh roinnt rudaí ó spreagadh amháin, déan ceann amháin díobh seo:
Glaoigh ar ilfheidhmeanna cúnta ó ghlao ar ais amháin, nó
Bain úsáid as ilréada imeachta agus craol gach ceann acu.
Bain úsáid as snáitheanna ar leithligh chun tascanna a rith go neamhspleách.
Sampla#
Sainmhínigh an fheidhm athghlaoite (lasmuigh de
int main())// Create a callback function void onMyEvent() { Brain.Screen.print("Callback function executed!"); }Cláraigh an glao ar ais taobh istigh de
int main()int main() { /* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ vexcodeInit(); // Create an event called myEvent // Set onMyEvent as the callback function event myEvent(onMyEvent); }
Feidhmeanna na mBall#
Áirítear leis an rang event na feidhmeanna ball seo a leanas:
operator— Socraíonn sé feidhm athghlaoite don imeacht.broadcast— Spreagann sé feidhm athghlaoite an imeachta chun rith go comhthreomhar.broadcastAndWait— Cuireann sé feidhm athghlaoite an imeachta i ngníomh agus fanann sé go mbeidh sé críochnaithe.
Sula nglaotar ar aon fheidhmeanna event ball, ní mór sampla event a chruthú, mar a thaispeántar thíos:
/* This constructor is required when using VS Code.
Event configuration can be created with or without
a callback function as shown in the examples above. */
// Create an event without a callback
event myEvent;
// Or create an event with a callback
event myEvent(onMyEvent);
operator#
Socraíonn sé feidhm athghlaoite don imeacht ag baint úsáide as an oibreoir glao feidhme.
Available Functionsvoid operator()( void (* callback)() );
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
Feidhm athghlaoite atá sainithe roimhe seo a ghlaoitear go huathoibríoch nuair a chraoltar an ócáid. Ní mór don fheidhm a bheith ag teacht leis an síniú athghlaoite riachtanach. Féach Feidhmeanna Athghlaoite le haghaidh tuilleadh eolais. |
Ní thugann an fheidhm seo luach ar ais.
NotesCuireann athghlao athuair ionad an ghlao athuair roimhe seo.
Ní mór gan aon pharaiméadair a bheith ag an fheidhm athghlaoite agus folamh a thabhairt ar ais.
Sainmhínigh na feidhmeanna athghlaoite (lasmuigh de
int main())// Create a callback function void drawSquare() { Brain.Screen.clearScreen(); Brain.Screen.drawRectangle(40, 40, 120, 120); }void drawCircle() { Brain.Screen.clearScreen(); Brain.Screen.drawCircle(100, 100, 60); }Cláraigh an glao ar ais taobh istigh de
int main()int main() { /* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ vexcodeInit(); // Create the event drawEvent event drawEvent; Brain.Screen.print("Drawing a square..."); // Set the event to drawSquare drawEvent(drawSquare); wait(1, seconds); // Trigger the event drawEvent.broadcast(); wait(1, seconds); Brain.Screen.clearScreen(); Brain.Screen.setCursor(1, 1); Brain.Screen.print("Drawing a circle..."); // Replace drawSquare with drawCircle drawEvent(drawCircle); wait(1, seconds); // Trigger the event a second time drawEvent.broadcast(); }
broadcast#
broadcast tosaíonn glao ar ais an imeachta agus leanann sé ar aghaidh láithreach.
void broadcast();
Ní ghlacann an fheidhm seo aon pharaiméadair.
Return ValuesNí thugann an fheidhm seo luach ar ais.
ExamplesSainmhínigh an fheidhm athghlaoite (lasmuigh de
int main())// Create a callback function void onMyEvent() { Brain.Screen.clearScreen(); Brain.Screen.setCursor(1, 1); Brain.Screen.print("Event fired!"); }Cláraigh an glao ar ais taobh istigh de
int main()int main() { /* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ vexcodeInit(); Brain.Screen.print("Broadcasting in 2 seconds..."); // Create an event called myEvent // Set onMyEvent as the callback function event myEvent(onMyEvent); wait(2, seconds); // Trigger the event myEvent.broadcast(); }
broadcastAndWait#
Tosaíonn sé an glao ar ais agus fanann sé go dtí go mbeidh sé críochnaithe (nó go n-imíonn an t-am amach).
Available Functionsvoid broadcastAndWait( int32_t timeout = 60000 );
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
An méid milleasoicind le fanacht sula dtosaíonn an cód ag feidhmiú arís (réamhshocraithe go 60000). |
Ní thugann an fheidhm seo luach ar ais.
NotesNá húsáid é seo ach le glaonna siar a chríochnaíonn (gan lúba gan teorainn).
Is feidhm feithimh í seo a chuireann bac ar fhorghníomhú go dtí go gcríochnófar an glao ar ais nó go dtéann an t-am thart.
Sainmhínigh an fheidhm athghlaoite (lasmuigh de
int main())// Create a callback function void startDriving() { Drivetrain.drive(forward); wait(2, seconds); }Cláraigh an glao ar ais taobh istigh de
int main()int main() { /* vexcodeInit() is only required when using VEXcode. Remove vexcodeInit() if compiling in VS Code. */ vexcodeInit(); Brain.Screen.print("Starting drive..."); event driveEvent(startDriving); // Give the event time to be set wait(0.25, seconds); // Run the event and wait until it finishes driveEvent.broadcastAndWait(); // Stop driving after 2 seconds Drivetrain.stop(); Brain.Screen.clearScreen(); Brain.Screen.print("Drive complete!"); }