SIOC-ohjelmointia (IOCards)
vipu:
Var 0202, Link IOCARD_DISPLAY, Digit 4, Numbers 3 // altitude display
Var 0054, Link FSUIPC_IN, Offset $0ec6, Length 2 // current QNH * 16
Var 0055, Link FSUIPC_IN, Offset $6020, Length 8 // GPS altitude in metres
{
L0 = V0054 / 16 // Get current QNH setting
L0 = L0 - 1013 // difference to standard pressure
L0 = L0 * 27 // 1 millibar = 27 feet
L1 = V0055 * 3.2808399 // meters to feet
L1 = L1 - L0 // correct altitude for QNH1013
L1 = L1 / 100 (display in flight levels. 2500FT = FL025)
V0202 = TRUNC L1
}
Var 300 Link IOCARD_SW, Input 1 // test switch
{
IF V0300=1
{
V0202=? (mitä tuohon tuodaan?)
{
ELSE
v202=-999999
näinkö?
Eli jos kytkin on asennossa "1" haetaan tieto, mutta mikä?
ja jos kytkin on "0" syötetään näytöille arvo -999999 (pois päältä)
tigert:
Var 300 Link IOCARD_SW, Input 1 // test switch
Var 0202, Link IOCARD_DISPLAY, Digit 4, Numbers 3 // altitude display
Var 0054, Link FSUIPC_IN, Offset $0ec6, Length 2 // current QNH * 16
Var 0055, Link FSUIPC_IN, Offset $6020, Length 8 // GPS altitude in metres
{
L0 = V0054 / 16 // Get current QNH setting
L0 = L0 - 1013 // difference to standard pressure
L0 = L0 * 27 // 1 millibar = 27 feet
L1 = V0055 * 3.2808399 // meters to feet
L1 = L1 - L0 // correct altitude for QNH1013
L1 = L1 / 100 (display in flight levels. 2500FT = FL025)
IF V0300=1
{
V0202 = TRUNC L1
}
ELSE
{
V202=-999999
}
}
Oliskohan jotenkin noin, syntaksista en ole ihan varma että meneekö toi if-else just noin, mut siocin helpistä selvinnee.
Mut periaate siis että just siinä kun oot tunkemassa sitä näyttöön sitä arvoa, tsekkaat josko kytkin on missä asennossa.
Tietty tossa sit vois miettiä jotain subrutine:a millä tekis tommosia juttuja keskitetysti (AVIONICS-väylän virta -tsekkaus tms jne..) mut sitä en sit itekään tiedä miten se tehdään kun en subrutineja oikein sioc:issa tajua.
- T
tigert:
Jaahas, pitkästä aikaa taas jatkoa ketjuun
Huomasinpa taas että koneen päivitettyäni (XP Pro) sioc ei kääntänyt koodia ollenkaan, herjasi vaan käsittämättömiä virheilmoituksia eikä mikään toiminut... Aikani taas kerran pähkittyäni hokasin vanhan windows-kikan freewaresoftien suhteen: pistetään windowsin regional -asetuksista numero- ja päivämääräasetukset espanjan malliin (Spanish/Spain) ja taasen alkaa pelittää..
Miten toi on aina noin vaikeaa tuo koodaus niin että tuo toimisi..?
Mutta hyvä muistaa tuokin kikka..
- T
JylhaMi:
Omaa spagettia lautaselle...
Tässä omasta koodista pätkäisty osa... NAV1 taajuudet näytölle jos sekä master että avionics kytkin ON
Muuten radio on sammutettuna.
// *****************************************************************************
// * Config_SIOC ver 3.4 - By Mika Jylhä - www.opencockpits.com
// *****************************************************************************
// * FileName : Baron.txt
// * Date : 17.11.2008
Var 0000, Value 0
{
&FS_batt = 0
&FS_avionics = 0
&Avionics = 0
&Desimal = 0
&Nav1_sby_mhz = 14 // Megahertz without leading 1
&Nav1_sby_khz = 20 // Kilohertz without leading 1
&Nav1_use_mhz = 9 // Megahertz without leading 1
&Nav1_use_khz = 10 // Kilohertz without leading 1
}
Var 0001, name FS_batt, Link FSUIPC_OUT, Offset $281C, Length 4 // Bat master
Var 0002, name FS_avionics, Link FSUIPC_OUT, Offset $2E80, Length 4 // Avionics master
var 0048, name FS_NAV1_SBY, Link FSUIPC_OUT, Offset $311E, Length 2 // Nav1 standby frequency
var 0049, name FS_NAV1_USE, Link FSUIPC_OUT, Offset $0350, Length 2 // Nav1 use frequency
Var 0050, name Nav1_sby_mhz
{
CALL &Nav1_sby
}
Var 0051, name Nav1_sby_khz
{
CALL &Nav1_sby
}
Var 0052, name Nav1_use_mhz
{
CALL &Nav1_use
}
Var 0053, name Nav1_use_khz
{
CALL &Nav1_use
}
Var 5001, name Avionics
Var 0401, name Master_SW, Link IOCARD_SW, Input 1 // Master_sw
{
&FS_batt = &Master_SW
CALL &Avionics_state
}
Var 0402, name Avionics_SW, Link IOCARD_SW, Input 2 // Avionics_sw
{
&FS_avionics = &Avionics_SW
CALL &Avionics_state
}
Var 0403, name Nav1_toggle_sw, Link IOCARD_SW, Input 4 // Nav1 Toggle switch
{
IF &Nav1_toggle_sw = 1
{
L0 = &Nav1_sby_khz
L1 = &Nav1_use_khz
&Nav1_sby_khz = L1
&Nav1_use_khz = L0
L0 = &Nav1_sby_mhz
L1 = &Nav1_use_mhz
&Nav1_sby_mhz = L1
&Nav1_use_mhz = L0
}
CALL &Nav1_sby
CALL &Nav1_use
}
Var 0700, name Desimal, Link IOCARD_OUT, Output 12 // 1 ja desimaalipilkku
Var 0310, name Nav1_sby_out, Link IOCARD_DISPLAY, Digit 0, Numbers 5
Var 0311, name Nav1_use_out, Link IOCARD_DISPLAY, Digit 5, Numbers 5
Var 0300, name Nav1_sby, Link SUBRUTINE // Nav 1 sby calculation
{
IF &Avionics = 1 // If master SW and avionics switches are on
{
L0 = &Nav1_sby_mhz * 100 // Put the frequency on display
L0 = L0 + &Nav1_sby_khz
&Nav1_sby_out = L0
&Desimal = 1
&FS_NAV1_SBY = TOBCD &Nav1_sby_out
}
ELSE
{
&Nav1_sby_out = -999999 // Otherwise shut off display
&Desimal = 0 // and the leading 1 (hardwired)
}
}
Var 0301, name Nav1_use, Link SUBRUTINE // Nav 1 use calculation
{
IF &Avionics = 1
{
L0 = &Nav1_use_mhz * 100
L0 = L0 + &Nav1_use_khz
&Nav1_use_out = L0
&Desimal = 1
&FS_NAV1_USE = TOBCD &Nav1_use_out
}
ELSE
{
&Nav1_use_out = -999999
&Desimal = 0
}
}
Var 0302, name Nav1_mhz, Link IOCARD_ENCODER, Input 10, Aceleration 2, Type 2
{
L0 = &Nav1_mhz
&Nav1_sby_mhz = ROTATE 8, 17, L0
}
Var 0303, name Nav1_khz, Link IOCARD_ENCODER, Input 12, Aceleration 2, Type 2
{
L0 = &Nav1_khz * 5
&Nav1_sby_khz = ROTATE 0, 99, L0
}
Var 3000, name Avionics_state, Link SUBRUTINE
{
L0 = &Master_SW + &Avionics_SW
IF L0 = 2
{
&Avionics = 1
}
ELSE
{
&Avionics = 0
}
CALL &Nav1_sby
}
Navigation