dantebbs hierarchical_state_machine: Dette Python-biblioteket gir en enkel å lære og enkel å bruke API for bruk av Hierarchical State Machines i prosjektet ditt. Tilstandsmaskinen er definert ved hjelp av en enkel JSON-streng, og inkluderer bekvemmelighetstimer.

De viktigste designmålene for QM er enkelhet og å minimere behovet for å “kjefte på verktøyet”. avia masters app download I hvordan-til-seksjonen avia masters game review presenteres et eksempel på dette mønsteret med FreeRTOS. Eksemplene nedenfor viser kode for RTEMS og embOS. Vi bruker StateSmith i en god del produksjonsprosjekter på jobben min. Det har vært svært nyttig. Andre selskaper bruker også StateSmith i produksjon (forbrukerelektronikk, autonome kjøretøy, …). Repoet med StateSmith-eksempler har en økende liste med eksempler som viser ulike bruksområder.

Legge til en OFF-hendelse?

Dette gjør at barn- og foreldrestater kan utføre noe arbeid helt opp i kjeden. Når en hendelse sendes til en tilstandsmaskin, får den aktive tilstanden først muligheten til å håndtere den. Hvis den ikke håndterer hendelsen, får dens forelder sjansen… Dette eksemplet kan føles litt kunstig, men denne evnen for barnestater til å konsumere en hendelse er avgjørende for mange applikasjoner som brukergrensesnitt.

avia masters slot

Hierarchical State Machines (HSMs)

Hver oppgave kjører en tilstandsmaskin (ofte kalt aktiv objekt) i en uendelig while-løkke. Oppgavene venter på nye hendelser som skal behandles fra tilstandsmaskinen. Hvis ingen hendelse er til stede, settes oppgaven i idle-modus fra RTOS. Hvis én eller flere nye hendelser er tilgjengelige, vekker RTOS oppgaven. Mekanismen RTOS bruker for hendelsesignalering kan variere. Hendelser kan lagres i hendelses-køen fra ulike kilder. For eksempel fra en annen oppgave eller fra en avbruddsrutine.

Bruke tilstandsmaskiner med et sanntidsoperativsystem

Vi leser hver eneste tilbakemelding, og tar dine innspill veldig seriøst. San Miguel de Allende, en kolonial perle i hjertet av Mexico. Dens brosteinsgater, dypt forankret i historie og kultur, samt arkitekturen, tar deg tilbake i tid. San Miguel er kjent for sin kunst, kultur, mat og romantikk. En child state kan konsumere en hendelse (nekte ancestor state). Tilstandsmaskiner kan reagere på hvilken som helst tidskilde du velger. Utgangsaksjoner er flotte for å sikre sikkerhet og ryddekode. Denne enkle tilstandsmaskinen styrer fargen på lyspæren nedenfor.

Det finnes bedre måter å modellere tilstandsmaskiner på enn å bruke regneark!

Fordelene med dette designet er ingen behov for en runtime-rammeverk og bare små RAM-krav. Unngå feil som kan kaste bort utallige timer med utvikler- og sluttbrukertid før de oppdages. Utviklere bruker mye av sin tid på å kode tilstandsmaskiner for hånd. Sinelabore unngår den feilutsatte og kjedelige håndkodingen ved å generere høykvalitets kildekode direkte fra tilstandsmaskinens design-dokument. Mye tanke gikk inn i å tegne hierarkiske tilstandsdiagrammer i QM.

Eksempel på nedtelling

Hvis du er ny innen tilstandsmaskiner, bør du forberede deg på å oppgradere verktøykassen din! De er utrolig nyttige for visse applikasjoner. De nedenfor brukte tutorialene benytter nye StateSmith-funksjoner som er mer brukervennlige. De bruker ulike diagramverktøy, men speiler hverandre ganske tett ellers. Bortsett fra å velge superclass (base class) i Class Property Sheet, må konstruktøren til applikasjonsnivåets tilstandsmaskin kalle den passende base class-konstruktøren. For eksempel må en tilstandsmaskinklasse som er avledet fra QHsm kalle QHsm-konstruktøren, og en klasse avledet fra QMActive må kalle QMActive-konstruktøren. Men hvis en overgang skjer, vil ingen andre oppføringer bli sjekket for noen tilstand.

DO Events er spesielle

  • Utrolig nyttig for team og kommunikasjon med klienter.
  • Do event er spesiell ved at tilstandsoppføringer vanligvis ikke konsumerer den.
  • Sinelabore Code Generator brukes over hele verden av selskaper i alle størrelser, fra velkjente multinasjonale organisasjoner til mindre uavhengige selskaper og konsulenter.
  • Denne enkle tilstandsmaskinen styrer fargen på lyspæren nedenfor.
  • Eksempelprosjekter som viser hvordan man genererer kode fra tilstandsmaskiner ved bruk av Sinelabore-kodegeneratoren.

Vi gjør ganske enkelt ON_HOT til å konsumere OFF og DIM-hendelsene slik at dens parent ON_GROUP ikke får sjansen til å se hendelsene. Dets balanserte algoritme støtter effektivt både små og store design. Store, dypt nestede design fungerer godt og er enkle å feilsøke. Dette Python-biblioteket gir en enkel å lære og enkel å bruke API for bruk av Hierarchical State Machines i prosjektet ditt. Tilstandsmaskinen er definert ved hjelp av en enkel JSON-streng, og inkluderer bekvemmelighetstimer. Noen ganger er avbruddsbehandling av tilstand avhengig av tilstanden nødvendig. Da er det nyttig å integrere tilstandsmaskinen direkte i avbruddsrutinen for å spare hver mikrosekund. Typisk bruk kan være forhåndsbehandling av tegn mottatt via serielt grensesnitt.

Tilgang til hendelsesparametere

De samme diagrammene kan generere kode for alle støttede språk. Det er gratis å laste ned og bruke for alle formål, inkludert kommersielle prosjekter, men er ikke åpen kildekode. Følgende temperaturtransmitter med en MSP430F1232-headerboard med bare 256 bytes RAM og 8K programminne er basert på dette designprinsippet. For mer informasjon om hvordan du bruker tilstands-maskiner i lavstrøm embedded-systemer, se her og her.

Kjører Code Generator på min OS?

Som vist i figuren ovenfor kan også andre tilstandsmaskiner eller avbruddsrutiner skyve hendelser til køen til en tilstandsmaskin. Det finnes ulike måter å integrere tilstandsmaskiner i et spesifikt systemdesign. Noen designprinsipper er mer anvendelige for utviklere av dypt innebygde systemer. Andre er mer relevante for utviklere uten så strenge ressursbegrensninger. Konfigurasjonen lagres i en ren tekstfil som tillater tilpasning av generert kode til dine behov. Sinelabore-kodegeneratoren kjører på alle OS som støtter en moderne Java-versjon, for eksempel. Det finnes eksempler for ulike UML-modelleringsverktøy og målspråk for å komme raskt i gang.

error: Sorry! Right click is disabled !!