FSnordic.net
Home Help Rules Login Register
Welcome, Guest. Please login or register.
27.06.19, 12:24

Login with username, password and session length
+  FSnordic.net Forums
|-+  Finnish Discussion / Lentosimulaattorit
| |-+  Kotiohjaamot / Home Cockpits (Moderators: Jari Mikkilä, Joni Öfverström, Tuomas Kuosmanen)
| | |-+  SIOC-ohjelmointia (IOCards)
:  

« previous thread next thread »
Pages: [1] 2 3 4 Reply Print
Author Topic: SIOC-ohjelmointia (IOCards)  (Read 79414 times)
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
SIOC-ohjelmointia (IOCards)
« on: 17.08.05, 07:09 »

Teenpä tämmöisen threadin tähän, jos olette ko. koodia vääntäneet, näyttäkää spagettinne muillekin Smiley

Mä väänsin eilen tämän:



Suttuvideo: http://tigert.com/aviation/vatsim/cockpit-stuff/gearlever.3gp (realplayer tai quicktime player soittanee)

Ja se koodi Grin Yritin kommentoida sopivasti sekaan..

Quote

// Aileron axis

Var 0001, Link FSUIPC_OUT, Offset $0BB6, Length 2 // Aileron variable, -16383 to 16383

Var 0101, Link IOCARD_ANALOGIC, Input #1, PosL 88, PosC 128, PosR 168 // Aileron pot,  in input 1.

{

  L0 = V0101 - 128 // pot values  are 0 to 255, we need -128 to 128

  V0001 = L0 * 128 //  multiply to scale: 128*128 = 16383

}



// Elevator axis

Var 0002, Link FSUIPC_OUT, Offset $0BB2, Length 2 // Elevator variable, -16383 to 16383

Var 0102, Link IOCARD_ANALOGIC, Input #2, PosL 20, PosC 95, PosR 170 // Elevator pot

{

  L0 = V0102 - 128

  V0002 = L0 * 128

}



// Throttle 1

Var 0003, Link FSUIPC_OUT, Offset $088c, Length 2 // Eng1 throttle, -4096 to 16383 (rev?)

Var 0103, Link IOCARD_ANALOGIC, Input #3, PosL 0, PosC 55, PosR 145 // Eng1 Throttle pot

{

  V0003 = V0103 * 65 // no reversers, so 0->16383
is enough. 65 so that it makes sure to have full power (a bit "too much" with max pot value)
}



// Throttle 2

Var 0004, Link FSUIPC_OUT, Offset $0924, Length 2 // Eng2 throttle, -4096 to 16384 (rev?)

Var 0104, Link IOCARD_ANALOGIC, Input #4, PosL 0, PosC 56, PosR 148 // Eng2 Throttle pot

{

  V0004 = V0104 * 65

}


// Gear lever
Var 0005, Link FSUIPC_OUT, Offset $0BE8, Length 4 // Landing gear position, 0=up, 16383=dwn

Var 0105, Link IOCARD_SW, Input 1 // Landing gear switch (ON=1, OFF=0)
{
  V0005 = V0105 * 16383
}

// Gear leds
Var 0113, Link IOCARD_OUT, Output 11     // "Gear in transit" led, in pins 11 of master card's output connector. Remember 330kOhm resistor!
Var 0114, Link IOCARD_OUT, Output 12     // Nosegear green led
Var 0010, Link FSUIPC_IN, Offset $0BEC, Length 4 // Nose gear position, 0=up, 16383=dwn (indicator)
{
  IF V0010 < 16383 // gear is not down
  {
    V0113 = 1 // transit led on
  }
  IF V0010 = 16383 // gear is fully down & locked
  {
    V0113 = 0 // transit led off
  }
  IF V0010 = 0 // nose gear is up
  {
    V0113 = 0 // transit led off
  }
  IF V0010 = 16383 // down & locked
  {
    V0114 = 1 // nosegear green
  }
  IF V0010 < 16383
  {
    V0114 = 0 // no green
  }
}

Var 0115, Link IOCARD_OUT, Output 13     // Right gear green led
Var 0011, Link FSUIPC_IN, Offset $0BF0, Length 4 // Right main gear position, 0=up, 16383=dwn
{
  IF V0011 = 16383
  {
    V0115 = 1
  }
  IF V0011 < 16383
  {
    V0115 = 0
  }
}

Var 0116, Link IOCARD_OUT, Output 14     // Left gear green led
Var 0012, Link FSUIPC_IN, Offset $0BF4, Length 4 // Left main gear position, 0=up, 16383=dwn
{
  IF V0012 = 16383
  {
    V0116 = 1
  }
  IF V0012 < 16383
  {
    V0116 = 0
  }
}

Semmoista.. Tuossa hetken kestää että tuon kanssa pääsee sinuiksi, mutta nyt alkaa tuntua hyvältä. Tuo koodi on melkoisen "vahvaa" siinä mielessä että sillä voi tehdä paljon erilaista logiikkaa. Tietty sen kirjoittelun kanssa menee aikaa, mutta teen niin että kolvaan johdot, kytken ja kirjoitan koodin ja testaan kytkimen. Toimii suht ok näin. Toinen vaihtoehto tietty on käyttää sitä "config iocard" -softaa, mutta sillä logiikan teko ei onnistu, ja nää on "joko tai" eli SIOC:ia päätin alkaa käyttää niin teen sillä sitten kaiken. Molempia ei näet voi käyttää kerralla.

Koodia varmaan voisi kirjoittaa "paremminkin" (en harrasta tai tee ohjelmointia työkseni) mutta tuo pelaa hyvin. Aika kätevä systeemi tuo on.

Jos kysyttävää on, tai omaa koodinpätkää tai vinkkiä, kertokaa se tähän. Tehdään tästä vaikka "SIOC-threadi".

//Tuomas
« Last Edit: 17.08.05, 07:13 by Tuomas Kuosmanen »

Jaakko Airasmaa
Offline Offline

Posts: 2043
Date Registered: 30.07.04

Re: SIOC-ohjelmointia (IOCards)
« Reply #1 on: 19.08.05, 11:50 »

Tämä treadi tulikin sopivaan kohtaan. Smiley

Itte olen väsännyt ruman, mutta toimivan laitteen, mutta koodaus ei ole vahvimpia puoliani.. Roll Eyes(jos ei html koodia lasketa Grin)

Voisiko joku lähettää meiliini koodin, joka näyttää seuraavaa:
Numero ledit 0-4 Alt, eli 5 numero näyttöä altille
Numero ledit 5-7 Hdg, eli 3 numero näyttöä hdgille
Numero ledit 8-10 IAS, eli 3 numero näyttöä IASsille..

Kiitos jo etukäteen. Cool

EVGA 680i|Intel Core 2 Duo E6700@3.2Ghz|EVGA 8800GTS/640Mb|4096MB DDR2
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #2 on: 19.08.05, 18:00 »

Tämä treadi tulikin sopivaan kohtaan. Smiley

Itte olen väsännyt ruman, mutta toimivan laitteen, mutta koodaus ei ole vahvimpia puoliani.. Roll Eyes(jos ei html koodia lasketa Grin)

Voisiko joku lähettää meiliini koodin, joka näyttää seuraavaa:
Numero ledit 0-4 Alt, eli 5 numero näyttöä altille
Numero ledit 5-7 Hdg, eli 3 numero näyttöä hdgille
Numero ledit 8-10 IAS, eli 3 numero näyttöä IASsille..

Kiitos jo etukäteen. Cool

Mä en ole koodannut noita numeronäyttöjä vielä, mutta tuotas.. Katsotaas tätä koodia..

"FSUIPC for Programmers.doc" on se mistä näitä offsetteja katsotaan, sitä kauttahan toimii kaikki. Sieltä löytyy tämä:

OffsetLengthDescriptionFS2002FS2004
07D44Autopilot altitude value, as metres*65536OKOK

Eli, offsetti jonka osoite heksadesimaalina on 07d4 sisältää 4 yksikön mittaisen tiedon jossa on koodattuna koneen autopilottiin asetettu korkeus. Lukuarvo on metreinä ja kerrottuna 65536. Eli se pitää ensin jakaa 65536:lla ja muuntaa sitten jaloiksi. Eli kerrotaan vielä 0.3048:lla. Katsotaan sitten mitä siitä tulee. En ole ollenkaan varma toimiiko tämä, koska mulla ei vielä tosiaan ole numeronäyttöjä valmiina, mutta kokeile ja kerro.

Code:
Var 0002, Link IOCARD_DISPLAY, Digit 0, Numbers 5 // Tämä on meidän 5 7-segmenttiä alkaen nollasta..
Var 0001, Link FSUIPC_IN, Offset $07D4, Length 4 // AP:n korkeus, offsetti ja pituus, suoraan siitä dokkarista
{
// tämä on kommentti.
// Tässä hakasulkujen sisällä olevat jutut tehdään aina kun tuo ylläoleva, eli autopilotin korkeus,
// muuttuu. Eli teemme seuraavaa:
   L0 = V0001 / 65536 // jaetaan se sillä 65536:lla. Nyt L0 = ap:n korkeus metreinä.
   L0 = L0 * 0.3048 // metrit jaloiksi
   V0002 = L0 // Nyt sen pitäisi ilmestyä sinne numeroihin...?
}

Eli tallenna "testi.txt":ksi ja importoi tuo config_sioc:iin, tallenna jotta saat jotain.ssi:n. Sitten sioc.ini:iin sinne loppuun se jotain.ssi jotta se osaa ladata oikean filen. FS käyntiin ja sioc.exe päälle ja toivotaan parasta. Nyt voit kanssa käynnistää icopconsole.exe:n jolla voi kanssa katsoa mitä IOCardsin muuttujissa tapahtuu.

Kerro toimiiko tuo ollenkaan? Ja kerro tajuatko tuosta mitään? Tuo ei ole sillai vaikeaa ollenkaan, vaatii vaan miettimistä että logiikka menee oikein. Luultavasti tota joutuu viilaamaan jostain vähän mutta kerro tuleeko näyttöön yhtään mitään niin mietitään sitten lisää Smiley

//Tuomas
« Last Edit: 19.08.05, 18:04 by Tuomas Kuosmanen »

Jaakko Airasmaa
Offline Offline

Posts: 2043
Date Registered: 30.07.04

Re: SIOC-ohjelmointia (IOCards)
« Reply #3 on: 21.08.05, 06:18 »

Saan tuon toimivuuden testattua tänään (myöhään illalla) tai (todennäköisemmin) huomenna, olen juuri nyt mummolassa Tongue...

Kyllähän tuosta jotain saa selvää...Näyttääpi paikoin jopa helpommalta kuin HTML... Smiley
« Last Edit: 21.08.05, 06:21 by Jaakko Airasmaa »

EVGA 680i|Intel Core 2 Duo E6700@3.2Ghz|EVGA 8800GTS/640Mb|4096MB DDR2
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #4 on: 21.08.05, 07:24 »

Saan tuon toimivuuden testattua tänään (myöhään illalla) tai (todennäköisemmin) huomenna, olen juuri nyt mummolassa Tongue...

Kyllähän tuosta jotain saa selvää...Näyttääpi paikoin jopa helpommalta kuin HTML... Smiley

Jep, ei siinä ole mitään vaikeaa, ihan pelkkää logiikkaa ja perusjuttuja.

Ainoa ero normaaliin ohjelmointiin, esim PHP tai "oikeat" kielet, on se, ettei tuota systeemiä "ajeta" koskaan alusta loppuun, vaan koodi on "pätkissä" aina muuttujien yhteydessä. Eli näin:

V0001 ... määrittelyt, esim FSUIPC_IN tai iocardsin input tms..
{
   Tässä on koodin pätkä
}

Ja tuo koodin pätkä siis ajetaan silloin kun tuo muuttuja V0001 muuttaa arvoaan (eli jos se on FSUIPC:stä, simussa ko. parametri muuttuu, tai jos se on esim. iocardsin kytkin, kun se kytketään päälle tai pois..)

Koodissa voidaan sitten tutkia muiden muuttujien tilaa jne. Onneksi seuraavaan versioon SIOCista tulee mahdollisuus käyttää ihan järkeviä nimiä noille, eikä pelkästään numeroita.

Mutta tällä pystyy tekemään aikamoisia juttuja. Esim. niin että määrittelet vaikkapa varoitusvaloja eri asioille, low fuel, low voltage jne. Ja sitten yhden napin, joka on "light test" - ja joka varoitusvalon koodinpätkässä sitten katsotaan FSUIPC:stä onko esim. polttoainetta tietty määrä, jos on sen alle, sytytetään valo. Kaikki varoitusvalojen ledit voidaan sitten sytyttää myös "light test" kytkimen koodissa kun kytkintä painetaan.

//Tuomas

Jaakko Airasmaa
Offline Offline

Posts: 2043
Date Registered: 30.07.04

Re: SIOC-ohjelmointia (IOCards)
« Reply #5 on: 21.08.05, 17:53 »

TOIMII!!! laugh

Tosin, jalka kertoin on ilmeisesti väärä, mutta metrit oikein Smiley (kokeilin poistamalla jalka kertojan, ja se näytti oikeaa metrilukua - 30000ft, n.10000)
Löysin vian! Se jalka lasku olisi pitänyt tehdä jakona, ei kertona.

Saisko noi näyttämään lentokoneen realiaikaisia asioita, eikä apeen lukuja?
Eli siis näyttämään samaa korkeutta millä kone juuri sillä hetkellä lentää, siis ALT display.

Mistä löytää sen manuaalin jossa offsetit?
« Last Edit: 21.08.05, 18:21 by Jaakko Airasmaa »

EVGA 680i|Intel Core 2 Duo E6700@3.2Ghz|EVGA 8800GTS/640Mb|4096MB DDR2
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #6 on: 21.08.05, 22:00 »

TOIMII!!! laugh

Tosin, jalka kertoin on ilmeisesti väärä, mutta metrit oikein Smiley (kokeilin poistamalla jalka kertojan, ja se näytti oikeaa metrilukua - 30000ft, n.10000)
Löysin vian! Se jalka lasku olisi pitänyt tehdä jakona, ei kertona.

Saisko noi näyttämään lentokoneen realiaikaisia asioita, eikä apeen lukuja?
Eli siis näyttämään samaa korkeutta millä kone juuri sillä hetkellä lentää, siis ALT display.

Mistä löytää sen manuaalin jossa offsetit?


Hienoa! Joo toi oli ihan testaamaton koodinpätkä, joten bugeja takuulla on Smiley

Se dokkari löytyy täältä: www.schiratti.com/dowson.html (eli samasta paikkaa kun FSUIPC.dll itsekin. Siellä on se "FSUIPC SDK 25'th release" -paketti - ota se. Se file on nimeltään "FSUIPC for Programmers.doc" ja on siinä zipissä. Hommahan menee niin että etsit siitä offsetin, katsot sen pituuden myös (length) ja tutkit mimmoisia lukuja se on. Sitten luku ehkä pitää muuntaa sopivaan muotoon jakamalla tms ja sen voi tunkea näyttöön.

Perusideahan on hirveän yksinkertainen, sitten noista voi rakentaa melkein mitä vain. Periaatteessahan tällä voi rakentaa itse oman "lisäosakoneen" niin että esim. Default 737:aan rakentaisi oman overhead-paneelin ja koodaisi sen logiikan sioc:illa jne..

//Tuomas

Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #7 on: 27.08.05, 19:15 »

Kolvasinpa laippakytkimeen johdot. Kyseessä on kolmiasentoinen vipu. Ylös-asennossa tulee signaali pinnipariin A ja alas-asennossa pinnipariin B. Keskellä ei tule signaalia mihinkään. Eli ON-OFF-ON -kytkin.

Huomenna pähkin sen toimimaan kotiohjaamopäivillä, ja pistän koodin tänne. Tuossa on tavallaan kaksi kytkintä - "Laipat Sisällä" -kytkin ja "Laipat täysin ulkona" -kytkin. Väliasento on sitten silloin kun kumpikaan noista ei ole päällä. Tarvittaneen kaksi muuttujaa, joiden tilaa tutkitaan, eli jos molemmat "kytkimet" ovat 0, laippavipu on keskiasennossa.



//Tuomas
« Last Edit: 27.08.05, 19:25 by Tuomas Kuosmanen »

Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #8 on: 04.09.05, 07:30 »

Kohta tulee laippavivun ja vähän muunkin kytkentää siocilla.. Samoin voin suositella noita uusia iocardsin "input/output-connections" -kortteja. Helpottavat kytkentää kummasti. Toki toinen tapa on ottaa IDE-kaapeli, katkaista toinen pää ja tinata siitä kytkimet kiinni. Kunhan muistaa että joka kymmenes johdin on maa.

Mutta tää connections-kortti on ihan kätevä, pinnit on numerojärjestyksessä. Siinäkin sitten on sama juttu eli ilmeisesti (kohta nähdään, siis Smiley) yhdeksää inputtia/outputtia kohtaan on aina yksi maa.



Mulla tuossa värillisessä lattakaapelissa siis aina tuo musta johdin on maa. Muut sitten numerojärjestyksessä kytkimistä. Eli yhdeksän kytkintä voi aina kytkeä samaan "maahan" - ryhmien yli ei voi oikosulkea maata, vain ryhmän sisällä saa ja kannattaa yhdistää. Eli teen niin että paneelissa on 9 (tai tässä tapauksessa Cool kytkintä, vedän yhdellä johdolla kytkinten toiset liittimet yhteen, ja siitä johto tuohon maa-liittimeen. Ja kytkinten toiset pinnit sitten jokainen erikseen vierekkäisiin liittimiin.

//Tuomas

Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #9 on: 04.09.05, 16:36 »

Okei. Katsotaanpas sitten taas..

Quote


// *** FLAP SWITCH ***
Var 0006, Link FSUIPC_OUT, Offset $0BDC, Length 4 // flaps, 0=up, 16383=dwn
Var 0106, Link IOCARD_SW, Input 37 // flaps UP
{
  IF V0106 = 1 // flap switch up
  {
    V0006 = 0
  }
  ELSE
  {
    IF V0107 = 0
    {
      V0006 = 3000
    }
  }
}

Var 0107, Link IOCARD_SW, Input 36 // flaps down
{
  IF V0107 = 1 // flaps down
  {
    V0006 = 16383
  }
  ELSE
  {
    IF v0106 = 0
    {
      V0006 = 3000
    }
  }
}


Noita numeroita joutuu tietty omassa koodissa säätämään että ei ole päällekkäisiä. Tulisi vaan se seuraava version pian, niin voisi käyttää kunnollisia muuttujan nimiä.. Tongue

Tuo laippa-akseli on 0-16383 välillä ja "suunnilleen" oikea arvo asettaa laipat lähimpään pykälään. Logiikka on siten, että kytkin on kolmiasentoinen, "ylös", "keskellä" ja "alhaalla". Keskiasento ei anna mitään signaalia, ylös-asento on kytkin 37, alas-asento on 36. Ideana siis, että jos kytkin on ylhäällä, se ei voi olla alhaalla jne. Ja jos se ei ole ylhäällä, tarkistetaan onko se alhaalla vai välissä.

//Tuomas

« Last Edit: 04.09.05, 16:40 by Tuomas Kuosmanen »

Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #10 on: 04.09.05, 16:44 »

Ja valot.. Tässä on yksi offsetti kaikissa, koostuu biteistä jotka päälle ja pois kytkemällä saadaan tietyt valot päälle ja pois.

Quote

// *** LIGHTS ***

Var 0020, Link FSUIPC_OUT, Offset $0D0C, Length 1 // Valot bitteinä
Var 0120, Link IOCARD_SW, Input 67 // LIGHT Beacon
{
  IF V0120 = 1
  {
    V0020 = SETBIT 1
  }
  ELSE
  {
    V0020 = CLEARBIT 1
  }
}

Var 0121, Link IOCARD_SW, Input 66 // LIGHT Landing
{
  IF V0121 = 1
  {
    V0020 = SETBIT 2
  }
  ELSE
  {
    V0020 = CLEARBIT 2
  }
}

Var 0122, Link IOCARD_SW, Input 65 // LIGHT Taxi
{
  IF V0122 = 1
  {
    V0020 = SETBIT 3
  }
  ELSE
  {
    V0020 = CLEARBIT 3
  }
}

Var 0123, Link IOCARD_SW, Input 64 // LIGHT Navi
{
  IF V0123 = 1
  {
    V0020 = SETBIT 0
    V0020 = SETBIT 5
    // Navivalot ja paneelivalot samassa kytkimessä, eli mittarivalot kytkee  myös navivalot.
    // Esim. PA-28:ssa on kytketty näin, ja mulla ei ole erillistä kytkintä paneelivaloille.
  }
  ELSE
  {
    V0020 = CLEARBIT 0
    V0020 = CLEARBIT 5 // sama...
 }
}

Var 0124, Link IOCARD_SW, Input 63 // LIGHT Strobes
{
 IF V0124 = 1
  {
    V0020 = SETBIT 4
  }
  ELSE
  {
    V0020 = CLEARBIT 4
  }
}

« Last Edit: 04.09.05, 16:48 by Tuomas Kuosmanen »

Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #11 on: 15.09.05, 22:47 »

Quote
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
}

Tämä tekee transponderiin korkeuskoodaimen näytön, eli näyttää lentopintoina (siis standardipaineella) mitä transponderi periaatteessa lähettäisi lennonjohtajan tutkanäytölle.



En tosin ole testannut paljon, on jo myöhä jne. Mutta ainakin tuossa on vähän aivojumppaa. Kiva härveli tuo SIOC tolta kannalta kyllä.

//Tuomas

Jaakko Airasmaa
Offline Offline

Posts: 2043
Date Registered: 30.07.04

Re: SIOC-ohjelmointia (IOCards)
« Reply #12 on: 17.09.05, 04:34 »

Sinä sitten jaksat näpertää! Shocked... taidan tästä itsekkin ruveta taas säätää...

*Kolvia ottamassa esille*

EVGA 680i|Intel Core 2 Duo E6700@3.2Ghz|EVGA 8800GTS/640Mb|4096MB DDR2
Jaakko Airasmaa
Offline Offline

Posts: 2043
Date Registered: 30.07.04

Re: SIOC-ohjelmointia (IOCards)
« Reply #13 on: 17.09.05, 04:56 »

Minulla on tämmönen pyöritettävä mittari.. siis semmonen mitä käytetään autopiloteissa sun muissa..(otettu vanhasta joikkarista) Niin onko toi keltanen+ musta- punainen+?

[ attachment removed ]

EVGA 680i|Intel Core 2 Duo E6700@3.2Ghz|EVGA 8800GTS/640Mb|4096MB DDR2
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #14 on: 17.09.05, 22:51 »

Jaakko: tuo voi olla mikä hyvänsä, riippuu ihan komponentista.

Tässä taas vähän koodia, audiopaneeli toimii nyt..



Code:
// **** AUDIO PANEL ****

// ** LEDS **
Var 0301, Link IOCARD_OUT, Output 25 // COM1 Audio
Var 0302, Link IOCARD_OUT, Output 24 // COM2 Audio
Var 0303, Link IOCARD_OUT, Output 23 // BOTH Audio
Var 0304, Link IOCARD_OUT, Output 22 // AUX Audio
Var 0305, Link IOCARD_OUT, Output 21 // NAV1 Audio
Var 0306, Link IOCARD_OUT, Output 20 // NAV2 Audio
Var 0307, Link IOCARD_OUT, Output 19 // MKR Audio
Var 0308, Link IOCARD_OUT, Output 18 // ADF Audio

Var 0709, Link FSUIPC_IN, Offset $3122, Length 1 // Radio Audio Bytes
{
  V0301 = TESTBIT V0709, 7 // COM1
  V0302 = TESTBIT V0709, 6 // COM2
  V0303 = TESTBIT V0709, 5 // BOTH
  V0305 = TESTBIT V0709, 4 // NAV1
  V0306 = TESTBIT V0709, 3 // NAV2
  V0307 = TESTBIT V0709, 2 // MRKR
  V0308 = TESTBIT V0709, 0 // ADF
}

// FSUIPC radio audio variable bits
// 2^7 COM1 transmit
// 2^6 COM2 transmit
// 2^5 COM receive both
// 2^4 NAV1 sound
// 2^3 NAV2 sound
// 2^2 Marker sound
// 2^1 DME sound
// 2^0 ADF1 sound

Var 0602, Link FSUIPC_OUT, Offset $3122, Length 1 // Radio Audio Bytes

// ** BUTTONS **
Var 0058, Link IOCARD_SW, Input 2, Type P // COM1 Audio
{
  V0602 = SETBIT 7 // COM1 vs COM2 - either is on. It's a toggle between these two in FS.
  V0602 = CLEARBIT 6
}
Var 0059, Link IOCARD_SW, Input 4, Type P // COM2 Audio
{
  V0602 = SETBIT 6
  V0602 = CLEARBIT 7
}
Var 0060, Link IOCARD_SW, Input 3, Type P // BOTH Audio
{
  V0602 = CHANGEBIT 5 V0060
}

//Var 0061, Link IOCARD_SW, Input 8, Type P // AUX Audio

Var 0062, Link IOCARD_SW, Input 7, Type P // NAV1 Audio
{
  V0602 = CHANGEBIT 4 V0062
}
Var 0063, Link IOCARD_SW, Input 0, Type P // NAV2 Audio
{
  V0602 = CHANGEBIT 3 V0063
}

Var 0064, Link IOCARD_SW, Input 6, Type P // MKR Audio
{
  V0602 = CHANGEBIT 2 V0064
}
Var 0065, Link IOCARD_SW, Input 5, Type P // ADF Audio
{
  V0602 = CHANGEBIT 0 V0065
}

Edit: lisäsinpä kuvan tännekin..
« Last Edit: 18.09.05, 08:23 by Tuomas Kuosmanen »

Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #15 on: 26.09.05, 12:17 »

Tulipa koodattua perliä eilen vähän. Taisi olla yksi V1234 -muuttuja liikaa vilisemässä silmissä ja sai homma riittää, eihän niistä pidä kukaan tolkkua kun niitä on monta..

Eli, nyt voin kirjoittaa SIOC:ia näin:
Quote
Var $Init, Value 0 // INITIALISATION OF STUFF
{
}

// Gear lever
Var $LandingGear, Link FSUIPC_OUT, Offset $0BE8, Length 4 // gear, 0=up, 16383=dwn
Var $SWLandingGear, Link IOCARD_SW, Input 1 // Landing gear switch
{
  $LandingGear = $SWLandingGear * 16383
}

Ja sitten komentokehotteessa:
Quote
type your-script.txt | perl translate_variables.pl > output.txt
(tietty itse teen koodaamisen Linuxilla läppärissä, mutta homma toimii noin windowsilla)

Ja output.txt:iin putkahtaa seuraava koodi:
Quote
Var 0, Value 0 // INITIALISATION OF STUFF
{
}

// Gear lever
Var 1, Link FSUIPC_OUT, Offset $0BE8, Length 4 // gear, 0=up, 16383=dwn
Var 2, Link IOCARD_SW, Input 1 // Landing gear switch
{
V1 = V2 * 16383
}

Eli skripti muuntaa nuo $JärkevätNimet numeroiksi mitä SIOC tajuaa. Helpottaa ainakin omaa koodaustani.

Skripta: here.

Ja härveli on koodattu Perlillä minkä saa windowsille tästä:
Perl for Windows: here. - se on mukana valmiiksi jo kaikissa Linux-distroissa.

Toivottavasti toimii, se tekee vain sen, että jokainen $Muuttuja numeroidaan ja samaa numeroa sitten käytetään joka paikassa koodissa, joten homman pitäisi toimia.

Eka muuttuja on V0000 joka "ajetaan" aina sioc:ia startatessa, joten siihen kannattaa laittaa kaikki "alustukset" jos haluaa tiettyjä juttuja, esim "cold and dark" -systeemeitä.

Toivottavasti tuosta on jollekin muullekin iloa Smiley

//Tuomas

Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #16 on: 20.01.06, 22:57 »

IOCardsin *kytkemisestä* ja kytkinten yhdistämisestä on aika hyvä ohje tässä: http://personales.ya.com/micabina737/iocards/hard/test1i.htm

//Tuomas

Esko Haanpää
Offline Offline

Posts: 180
Date Registered: 19.08.04

FSUIPC
« Reply #17 on: 18.11.07, 17:55 »

Hei kaikki!

Olen käyttänyt Opencockpits Iocards USB-servo cardia ja SIMKITS elektroniikkaa jo pari kolme vuotta.
Yritimme tehdä manifold pressure mittarin, ja RPM mittarin, mutta ne liikkuvat epätasaisesti ja nykivät.
Ymmärsin että vika on varmastikkin FSUIPCssä, ja kirjoitin e-postin Pete Dowsonille.

Hi Pete!
 
I have a problem with a homebuilt manifold pressure gauge using a RC-servo pluged into Opencokpits servocard.
The gauge moves to it´s correct position, but it moves jerky.
Not with a smooth movement.
 
I have the exact same problem when I connect my homebuilt manifold pressure gauge to my Simkits interface card.
Simkits also use FSUIPC to read and write data to and from MS flightsimulator.
 
Are all microsoft flightsimulator instrument values read by FSUIPC updated at same rates?
 
Peten vastaus: "No. If you are talking about FS2004 or before, there are priorities, to avoid affecting FS performance."
 
Are the instrument values inside MS flightsimulator calculated at same rates? Or do some instruments have priority over others?
 
Peten vastaus: "No, I think they are mostly the same. But even FS's own gauges are a little jerky. If you enlarge them you can see this. They get away with it because they are normally too small to
 
notice. Programs like Project Magenta, and well-programmed add-on aircraft, tend to use their own smoothing (interpolation) to make the displayed gauge values change nice and smoothly."
 
I have a wild idea that the value for manifold pressure provided in offset Offset 08C0 through FSUIPC is updated at a too low speed.
Can you do something in FSUIPC to improve the data rate coming out if it is that whitch is causing my problem?
 
Peten vastaus: "I have just had a look. The Manifold Pressure values are part of a large group updated at a second (not top) priority, which rates it at a little over 4 updates per second -- a quarter of the normal update rate (18.2 per second).
FSUIPC has had this rate built in for these values for its whole life, 8 years now. Odd that itr should only now be seen as a problem?
Anyway, seeing as PCs are several times more powerful now than they were 8 years ago, I guess I could relax some of those timings. Are there any others whilst I'm at it?"
 
 
 

Ja Pete Dowson antoi minulle tällaisen linkin josta hain erikois version:
 
Try FSUIPC version 3.761, from here:
 
http://fsuipc.simflight.com/beta/FSUIPC3761.zip

Eilen siis valmistimme meidän Manifold pressure mittarin ja kierre mittarin meidän Convair Metropolitanissa, ja ne toimivat uskomattoman hyvin!
Ei mitään häiriöitä ja nykimistä!

Esko
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #18 on: 19.11.07, 19:16 »

Joo, petelle kantsii kyllä antaa aina kommenttia, moni juttu selviää helposti.

Toinen tapahan olis koodata siocilla sit joku timer-funktio millä tietyllä tasaisella nopeudella siirretään aina mittarin arvoja "lisää" tai "vähemmän" -suuntaan kunnes arvot täsmäävät. Se saattais kanssa auttaa.


//T

Raine Ampuja
Offline Offline

Posts: 421
Date Registered: 27.07.01

Re: SIOC-ohjelmointia (IOCards)
« Reply #19 on: 15.04.08, 19:40 »

Olen koekäyttänyt siocilla toteutettua Variometriä ja Ias-mittaria...ongelmana on ääni?!

koneesta kuuluu nimittäin tasavälein skrubu...noin parin sekunnin välein..mikähän tää juttu on?
Pages: [1] 2 3 4 Reply Print 
« previous thread next thread »
Jump to:  

1