SIOC-ohjelmointia (IOCards)

<< < (13/13)

vipu:
Moi!

Nyt olisi tarvetta ohjata avioniikkakytkimellä (tai sen tilalla) radion taustavaloja ja lcd-paneeleiden taustavaloja.

Meillä on avioniikkakytkin liitettynä Simkitsin CCU2-lautaan. Mutta ilmeisesti se käyttää samoja Offsetteja kuin SIOC.

Eli ideana on lukea simusta tuon avioniikkakytkimen tila, jolloin sen muutoksella ohjataan noita  kolmea outputtia.


Tälläistä koodia koetin:

Var 0001, name avio_on_off, Link FSUIPC_INOUT, Offset $3103, Length 1     // Avionics on/off

Var 0002, name avio_light, Link USB_RELAYS, Output 1     // Avionics backlight on/off

Var 0003, name lcd_back1, Link USB_RELAYS, Output 2     // Lcd backlight1

Var 0004, name lcd_back2, Link USB_RELAYS, Output 3     // Lcd_backlight2
{
  IF &avio_on_off = 1
  {
    &avio_light = 1   
    &lcd_back1 = 1   
    &lcd_back2 = 1   
  }
  ELSE
  {
    &avio_light = 0   
    &lcd_back1 = 0   
    &lcd_back2 = 0   
  }
}

Tämä koodi toimii siten, että kun simusta kääntää hiirellä avioniikkakytkintä niin IOCP:n kautta katsottuna sen tila vaihtelee 0 ja 1 välillä. Mutta outputtien tila ei muutu? 

Missä vika? Ei ymmärrä?

tigert:
Veikkaan että se yleisin aivopieru: koodi sinne missä bitti vilkkuu, eli fsuipc-offsettiin mitä tutkitaan.

Tuollainen koodi kirjoittuu muuten yksinkertaisimmin muotoon:

muuttuja määrittelyt..;
(
foo = muuttuja;
bar = muuttuja;
zoo = muuttuja;
)

ilman noita if...else juttuja.
 

vipu:
Quote

Veikkaan että se yleisin aivopieru: koodi sinne missä bitti vilkkuu, eli fsuipc-offsettiin mitä tutkitaan.

Tuollainen koodi kirjoittuu muuten yksinkertaisimmin muotoon:

muuttuja määrittelyt..;
(
 foo = muuttuja;
bar = muuttuja;
zoo = muuttuja;
)

ilman noita if...else juttuja.
 


Eli käytännössä näinkö?


Var 0001, name avio_on_off, Link FSUIPC_INOUT, Offset $3103, Length 1     // Avionics on/off
{
avio_light = avio_on_off
lcd_back1 = avio_on_off   
lcd_back2 = avio_on_off
}

Var 0002, name avio_light, Link USB_RELAYS, Output 1     // Avionics backlight on/off

Var 0003, name lcd_back1, Link USB_RELAYS, Output 2     // Lcd backlight1

Var 0004, name lcd_back2, Link USB_RELAYS, Output 3     // Lcd_backlight2

tigert:
Joo jotain tuollaista sen pitäisi olla. Toimiko?

Mutta nimenomaan noin, että se koodi pitää olla siellä muuttujassa missä se muutos tapahtuu mitä seurataan.

//Tuomas

vipu:
Koetan aamulla....toimii Ok. Oli taas koodauksessa "aivopieru"

Navigation

Up one level

Previous page