programmation SIOC

Bonjour à tous !
je mets à disposition ma programmation SIOC pour un baron 58, je l'ai pas encore fini mais l'essentiel y est déjà !
Bon travail !
Christophe
je mets à disposition ma programmation SIOC pour un baron 58, je l'ai pas encore fini mais l'essentiel y est déjà !
- Code: Tout sélectionner
// *****************************************************************************************
// * Config_SIOC ver 3.2 - By Salmon Christophe - chr69290@hotmail.com
// *****************************************************************************************
// * Date : 01/05/2010
// * Aircraft : Baron 58 modifié ( Flight Simulator 2004 - FS9 )
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : Swtich / Contact NAV / GPS *****
Var 2413, name fs_nav_gps, Link FSUIPC_INOUT, Offset $132C, Length 4 // NAV / GPS 1=NAV 0=GPS
{
&fs_nav_gps = &sw_nav_gps
}
Var 2412, name sw_nav_gps, Link IOCARD_SW, Input 06 // SW NAV / GPS
{
&fs_nav_gps = &sw_nav_gps
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : Swtich / Master Baterrie *****
Var 2400, name SW_batt, Link IOCARD_SW, Input 15 // Master Battery
{
&fs_batt = &SW_batt
}
Var 2410, name fs_batt, Link FSUIPC_INOUT, Offset $281C, Length 1 // Batterie 0=OFF 1=ON
{
&fs_batt = &SW_batt
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : Encoder CTS 288 / HDG Bug *****
Var 1310, Link IOCARD_SW, Input 54 // pusch Heading Bug
Var 1320, Link IOCARD_ENCODER, Input 61, Aceleration 1, Type 2
{
IF V1310 = 1
{
IF V1320 > 0 // turn right
{
V1350 = V1350 - 1820
IF V1350 > 65536
{
V1350 = V1350 - 65536
}
}
IF V1320 < 0 // turn left
{
V1350 = V1350 + 1820
IF V1350 < 1
{
V1350 = V1350 + 65536
}
}
}
ELSE
{
IF V1320 > 0 // turn right
{
V1350 = V1350 - 182
IF V1350 > 65536
{
V1350 = 1
}
}
IF V1320 < 0 // turn left
{
V1350 = V1350 + 182
IF V1350 < 1
{
V1350 = 65536
}
}
}
}
Var 1350, Link FSUIPC_OUT, Offset $07CC, Length 2 // Heading Bug
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : Switch / Parking Brake *****
Var 2510, name fs_brake, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // Brake 0=OFF 1=ON
{
&fs_brake = &sw_brake
}
Var 2500, name sw_brake, Link IOCARD_SW, Input 24 // parking brake
{
&fs_brake = &sw_brake
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : Switch / commande de train d'atterrissage et ses voyants 3verts + In trans *****
Var 3000 // initialisation du train
{
V3001 = 16383
}
Var 3001, Link FSUIPC_INOUT, Offset $0BE8, Length 4 // Control train d'atterrissage, 0-16383
Var 3002, Link IOCARD_OUT, Output 17 // LED rouge train en transit
Var 3004, Link IOCARD_OUT, Output 20 // train avant sorti
Var 3003, Link IOCARD_OUT, Output 19 // train droit sorti
Var 3005, Link IOCARD_OUT, Output 18 // train gauche sorti
Var 3006, Link IOCARD_SW, Input 35 // inter manette train
{
IF V3006 = 1
{
V3001 = 16383
}
ELSE
{
V3001 = 0
}
}
Var 3010, Link FSUIPC_IN, Offset $0BEC, Length 4 // train avant
{
IF V3010 = 16383
{
V3003 = 1
V3002 = 0
}
ELSE
{
IF V3010 >= 1
{
V3003 = 0
V3002 = 1
}
ELSE
{
IF V3010 = 0
{
V3003 = 0
V3002 = 0
}
}
}
}
Var 3020, Link FSUIPC_IN, Offset $0BF0, Length 4 // train droit
{
IF V3020 = 16383
{
V3004 = DELAY 1 ,50
V3002 = 0
}
ELSE
{
IF V3020 >= 1
{
V3004 = DELAY 0 ,30
V3002 = 1
}
ELSE
{
IF V3020 = 0
{
V3004 = DELAY 0 ,30
V3002 = 0
}
}
}
}
Var 3030, Link FSUIPC_IN, Offset $0BF4, Length 4 // train gauche
{
IF V3030 = 16383
{
V3005 = DELAY 1 ,50
V3002 = 0
}
ELSE
{
IF V3030 >= 1
{
V3005 = DELAY 0 ,30
V3002 = 1
}
ELSE
{
IF V3030 = 0
{
V3005 = DELAY 0 ,30
V3002 = 0
}
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ****** File : Switch / audio ( identification des moyens radio ) *****
Var 0535, Link IOCARD_OUT, Output 21 // NAV1 Audio
Var 0536, Link IOCARD_OUT, Output 20 // NAV2 Audio
Var 0537, Link IOCARD_OUT, Output 19 // MKR Audio
Var 0538, Link IOCARD_OUT, Output 18 // ADF Audio
Var 0579, Link FSUIPC_IN, Offset $3122, Length 1 // Radio Audio Bytes
{
V0535 = TESTBIT V0579 ,4 // NAV1
V0536 = TESTBIT V0579 ,3 // NAV2
V0537 = TESTBIT V0579 ,2 // MRKR
V0538 = TESTBIT V0579 ,0 // ADF
}
Var 0562, Link FSUIPC_OUT, Offset $3122, Length 1 // Radio Audio Bytes
Var 0565, Link IOCARD_SW, Input 19, // NAV1 Audio
{
V0562 = CHANGEBIT 4 ,V0565
}
Var 0063, Link IOCARD_SW, Input 20, // NAV2 Audio
{
V0562 = CHANGEBIT 3 ,V0063
}
Var 0564, Link IOCARD_SW, Input 26, // MKR Audio
{
V0562 = CHANGEBIT 2 ,V0564
}
Var 0065, Link IOCARD_SW, Input 22, // ADF Audio
{
V0562 = CHANGEBIT 0 ,V0065
}
// penser à coupler l'indent DME reste à faire
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ****** File : Encoder CTS 288 / Bug Alti ( réglage du QNH / 1013 sur le contact ) *****
//Var 1001, Link IOCARD_SW, Input 59 // pusch
// réglage du 1013 reste à faire
Var 1002, Link IOCARD_ENCODER, Input 55, Aceleration 1, Type 2 // ENCODER
{
IF V1002 > 0 // turn right
{
V1005 = V1005 + 6
}
IF V1002 < 0 // turn left
{
V1005 = V1005 - 6
}
}
Var 1005, Link FSUIPC_INOUT, Offset $0330, Length 2 // Pression atmosphèrique * 16
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ****** File:Switch / Panel, STBR, BCN, Nav, Taxi, Landing Light *****
Var 2200, Link IOCARD_SW, Input 09 // landing light
{
V2210 = CHANGEBIT 2, V2200
}
Var 2201, Link IOCARD_SW, Input 17 // nav light
{
V2210 = CHANGEBIT 0, V2201
}
Var 2202, Link IOCARD_SW, Input 16 // taxi light
{
V2210 = CHANGEBIT 3, V2202
}
Var 2203, Link IOCARD_SW, Input 12 // BCN
{
V2210 = CHANGEBIT 1, V2203
}
Var 2204, Link IOCARD_SW, Input 13 // STBR
{
V2210 = CHANGEBIT 4, V2204
}
Var 2205, Link IOCARD_SW, Input 11 // panel
{
V2210 = CHANGEBIT 5, V2205
}
Var 2210, Link FSUIPC_INOUT, Offset $0D0C, Length 2 // Control des Lights
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : Encoder CTS 288 / OBS NAV 2 *****
Var 5201, Link IOCARD_SW, Input 49 // pusch
Var 5202, Link IOCARD_ENCODER, Input 46, Aceleration 1, Type 2
{
IF V5201 = 1
{
IF V5202 > 0 // turn right
{
V5205 = V5205 + 10
IF V5205 > 360
{
V5205 = 1
}
}
IF V5202 < 0 // turn left
{
V5205 = V5205 - 10
IF V5205 < 1
{
V5205 = 360
}
}
}
ELSE
{
IF V5202 > 0 // turn right
{
V5205 = V5205 + 1
IF V5205 > 360
{
V5205 = 1
}
}
IF V5202 < 0 // turn left
{
V5205 = V5205 - 1
IF V5205 < 1
{
V5205 = 360
}
}
}
}
Var 5205, Link FSUIPC_INOUT, Offset $0C5E, Length 2 // OBS NAV2, GRADU 0-359
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : Encoder CTS 288 / CRS NAV 1 *****
Var 1301, Link IOCARD_SW, Input 60 // pusch
Var 1302, Link IOCARD_ENCODER, Input 57, Aceleration 1, Type 2
{
IF V1301 = 1
{
IF V1302 > 0 // turn right
{
V1300 = V1300 + 10
IF V1300 > 360
{
V1300 = 1
}
}
IF V1302 < 0 // turn left
{
V1300 = V1300 - 10
IF V1300 < 1
{
V1300 = 360
}
}
}
ELSE
{
IF V1302 > 0 // turn right
{
V1300 = V1300 + 1
IF V1300 > 360
{
V1300 = 1
}
}
IF V1302 < 0 // turn left
{
V1300 = V1300 - 1
IF V1300 < 1
{
V1300 = 360
}
}
}
}
Var 1300, Link FSUIPC_INOUT, Offset $0C4E, Length 2 // CRS NAV1, GRADU 0-359
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ****** File:Switch / icing pitot *****
Var 2311, name fs_pitot, Link FSUIPC_INOUT, Offset $029C, Length 1 // TUBO PITOT
{
&fs_pitot = &sw_pitot
}
Var 2301, name sw_pitot, Link IOCARD_SW, Input 04 // pitot heat
{
&fs_pitot = &sw_pitot
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : commande des Volets et ses voyants *****
Var 0400, name fs_flaps, Link FSUIPC_INOUT, Offset $0BDC, Length 4 // position des volets 0 - 16383
{
CALL &init_flaps
CALL &calc_led_flaps
}
Var 0401, name init_flaps, Link SUBRUTINE // init volets
{
IF &sw_flaps_up = 1
{
&fs_flaps = 0
}
ELSE
{
IF &sw_flaps_down = 1
{
&fs_flaps = 16383
}
ELSE
{
&fs_flaps = 8191
}
}
}
Var 0402, name led_trans_flap, Link IOCARD_OUT, Output 13 // Led rouge transit volets
Var 0403, name led_flaps_APH, Link IOCARD_OUT, Output 12 // Led voelts APP 10°
Var 0404, name led_flaps_down, Link IOCARD_OUT, Output 11 // Led volets Full 20°
Var 0406, name sw_flaps_up, Link IOCARD_SW, Input 28 // Inter volets UP
{
CALL &init_flaps
}
Var 0407, name sw_flaps_down, Link IOCARD_SW, Input 31 // Inter volets Bas
{
CALL &init_flaps
}
Var 0410, name fs_pos_flaps, Link FSUIPC_IN, Offset $0BE0, Length 4 // position volets 0 - 16383
{
CALL &calc_led_flaps
}
Var 0430, name calc_led_flaps, Link SUBRUTINE // gère les leds des volets
{
IF &fs_pos_flaps = 0 // position volet up
{
V0402 = 0 // led rouge
V0403 = 0 // led app
V0404 = 0 // led full
}
ELSE
{
IF &fs_pos_flaps = 16383 // position volet full
{
V0402 = 0 // led rouge
V0403 = 0 // led app
V0404 = 1 // led full
}
ELSE
{
IF &fs_pos_flaps = 8191 // position volet App
{
V0402 = 0 // led rouge
V0403 = 1 // led app
V0404 = 0 // led full
}
ELSE
{
V0402 = 1 // led rouge
V0403 = 0 // led app
V0404 = 0 // led full
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ***** File : voyant markers ******
Var 1400, Link FSUIPC_INOUT, Offset $0BB0, Length 2 // Commande Outer Marker
{
IF V1400 = 1
{
V1405 = 1 // OM
}
ELSE
{
V1405 = 0
}
}
Var 1405, Link IOCARD_OUT, Output 14 // LED Outer Marker
Var 1410, Link FSUIPC_IN, Offset $0BAE, Length 2 // Commande MIDDLE Marker
{
IF V1410 = 1
{
V1415 = 1 // MM
}
ELSE
{
V1415 = 0
}
}
Var 1415, Link IOCARD_OUT, Output 15 // LED Middle Marker
Var 1420, Link FSUIPC_IN, Offset $0BAC, Length 2 // Commande INNER Marker
{
IF V1420 = 1
{
V1425 = 1 // IN
}
ELSE
{
V1425 = 0
}
}
Var 1425, Link IOCARD_OUT, Output 16 // LED Inner Marker
Bon travail !
Christophe