FSnordic.net
Home Help Rules Login Register
Welcome, Guest. Please login or register.
28.07.17, 08:46

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 48625 times)
Samu Mäntyniemi
Offline Offline

Posts: 282
Date Registered: 08.05.10

Re: SIOC-ohjelmointia (IOCards)
« Reply #40 on: 12.05.11, 21:01 »

Tutkin lisää tuota SIOC;in mukana tullutta esimerkkiä ja kopioin sitä vähän kirjamellisemmin. Tällä alkoi sitten toimimaan:
Code:
Var 0002, name FS_HDG_w, Link FSUIPC_OUT, Offset $07CC , Length 2 // HDG bug write
Var 0001, name KNOB, Link IOCARD_ENCODER Input 001 Aceleration 1 Type 2     // HDG encoder, inputs 1,2
{
&TEMP_HDG = ROTATE 1 360 &KNOB
}

Var 0003, name TEMP_HDG
{
L0 = &TEMP_HDG * 182.444
&FS_HDG_w = ROUND L0
}

Jos yritän kirjoittaa lyhyemmin kuten alla, niin ei toimi.
Code:
Var 0002, name FS_HDG_w, Link FSUIPC_OUT, Offset $07CC , Length 2 // HDG bug write
Var 0001, name KNOB, Link IOCARD_ENCODER Input 001 Aceleration 1 Type 2     // HDG encoder, inputs 1,2
{
L0 = ROTATE 1 360 &KNOB
L1 = L0 * 182.444
&FS_HDG_w = ROUND L1
}

Selvästikään en nyt ymmärrä jotain keskeistä asiaa kun kuvittelen, että noiden pitäisi toimia samoin.

Osallistu maiseman luontiin:
1) http://www.youtube.com/watch?v=Q6CNXmmUaB4
2) http://osm2xp.com/

X-Plane 10 :
Vasen    : AMD Phenom II x4 965@3.74GHz/8GB/HD6970 22"/Win 7 Ultimate 64
Oikea     : i7 980x @4.6GHz /12GB/HD6970/22"+2x15"/Win 7 Ultimate 64
Keskellä : i7 2600K @4.5GHz /8GB/HD6970/22"/Win 7 Ultimate 64
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #41 on: 13.05.11, 04:27 »

Code:
Var 0002, name FS_HDG_w, Link FSUIPC_OUT, Offset $07CC , Length 2 // HDG bug write
Var 0001, name KNOB, Link IOCARD_ENCODER Input 001 Aceleration 1 Type 2     // HDG encoder, inputs 1,2
{
       &FS_HDG_w = ROTATE 1 360 &KNOB
}

Tämä ensimmäinen yritys on siinä mielessä onnekas, että kun nuppia vääntää niin FSX;ssä jotain tapahtuu. Ei mene kuitenkaan niinkuin oli tarkoitus. Kun nuppia hitaasti pyörittää, niin HDG muuttuu asteen ja palaa seuraavassa pykälässä takaisin edelliseen arvoon. Näyttäisi vielä olevan niin, että pyörityssuunnasta riippumatta aina tulee lisättyä aste, joka sitten taas tulee vähennettyä.

EDIT: Jos Offsetiksi vaihtaa  arvon $0C4E, joka kääntää CRS neulaa, niin koodi toimii CRS rotarylle aivan oikein.

Homma selviää kun katsoo minkälaisia arvoja siellä fsuipc-offsetissa on. Eli esiin FSUIPC SDK -> FSUIPC for Programmers.pdf:

   07CC 2 Autopilot heading value, as degrees*65536/360
   0C4E 2 NAV1 OBS setting (degrees, 0–359)

Tuossa tuo heading-arvo ei ole suoraan asteina vaan jostain syystä pitää muuntaa se tuohon muotoon kertolaskulla, kun taas nav1 obs on suoraan vain 0-359.  Eli joskus noita lukuja joutuu vähän muuntelemaan koodissa.

//Tuomas

Samu Mäntyniemi
Offline Offline

Posts: 282
Date Registered: 08.05.10

Re: SIOC-ohjelmointia (IOCards)
« Reply #42 on: 13.05.11, 05:15 »


Tuossa tuo heading-arvo ei ole suoraan asteina vaan jostain syystä pitää muuntaa se tuohon muotoon kertolaskulla, kun taas nav1 obs on suoraan vain 0-359.  Eli joskus noita lukuja joutuu vähän muuntelemaan koodissa.

//Tuomas


Tämän hoksasinkin tosiaan sitten hetken päästä. Tämä ei ilmeisesti kuitenkaan selitä tuota noiden kahden version eroa, joissa molemmissa teen (luullakseni) tuon tarvittavan kertolaskun. Näistä jälkimmäisessä on sama vika kuin aivan ensimmäisessä yrityksessä: neula värähtää mutta palaa aina takaisin.

Osallistu maiseman luontiin:
1) http://www.youtube.com/watch?v=Q6CNXmmUaB4
2) http://osm2xp.com/

X-Plane 10 :
Vasen    : AMD Phenom II x4 965@3.74GHz/8GB/HD6970 22"/Win 7 Ultimate 64
Oikea     : i7 980x @4.6GHz /12GB/HD6970/22"+2x15"/Win 7 Ultimate 64
Keskellä : i7 2600K @4.5GHz /8GB/HD6970/22"/Win 7 Ultimate 64
Jouni Pyhäjärvi
Offline Offline

Posts: 170
Date Registered: 14.07.07

Re: SIOC-ohjelmointia (IOCards)
« Reply #43 on: 13.05.11, 05:19 »


Jos yritän kirjoittaa lyhyemmin kuten alla, niin ei toimi.
Code:
Var 0002, name FS_HDG_w, Link FSUIPC_OUT, Offset $07CC , Length 2 // HDG bug write
Var 0001, name KNOB, Link IOCARD_ENCODER Input 001 Aceleration 1 Type 2     // HDG encoder, inputs 1,2
{
L0 = ROTATE 1 360 &KNOB
L1 = L0 * 182.444
&FS_HDG_w = ROUND L1
}

Tämä koodi ei toimi koska jokaisella kerralla kun nuppiin kosket niin lähdetään liikkeelle arvosta 0.
L0, L1 ovat väliaikaisia muuttujia jotka eivät muista arvoaan suorituskertojen välillä.

Toimivassa koodissahan alkuperäinen HDG on tallessa TEMP_HDG variablessa. Ja sitä lähdetään muuttamaan niin toimii ok.

Samu Mäntyniemi
Offline Offline

Posts: 282
Date Registered: 08.05.10

Re: SIOC-ohjelmointia (IOCards)
« Reply #44 on: 13.05.11, 06:04 »

Tämä koodi ei toimi koska jokaisella kerralla kun nuppiin kosket niin lähdetään liikkeelle arvosta 0.
L0, L1 ovat väliaikaisia muuttujia jotka eivät muista arvoaan suorituskertojen välillä.

Toimivassa koodissahan alkuperäinen HDG on tallessa TEMP_HDG variablessa. Ja sitä lähdetään muuttamaan niin toimii ok.

Kiitos! Nyt meni tajuntaan  Smiley

Osallistu maiseman luontiin:
1) http://www.youtube.com/watch?v=Q6CNXmmUaB4
2) http://osm2xp.com/

X-Plane 10 :
Vasen    : AMD Phenom II x4 965@3.74GHz/8GB/HD6970 22"/Win 7 Ultimate 64
Oikea     : i7 980x @4.6GHz /12GB/HD6970/22"+2x15"/Win 7 Ultimate 64
Keskellä : i7 2600K @4.5GHz /8GB/HD6970/22"/Win 7 Ultimate 64
Samu Mäntyniemi
Offline Offline

Posts: 282
Date Registered: 08.05.10

Re: SIOC-ohjelmointia (IOCards)
« Reply #45 on: 13.05.11, 06:44 »

Tällainenkin näyttäisi toimivan, kun hakee sopivan kiihdytyksen.

Code:
Var 0002, name FS_HDG_w, Link FSUIPC_OUT, Offset $07CC , Length 2 // HDG bug write
Var 0001, name KNOB, Link IOCARD_ENCODER Input 001 Aceleration 50 Type 2     // HDG encoder, inputs 1,2
{
&FS_HDG_w = ROTATE 1 65536 &KNOB
}

EDIT: Myös tämä vaihtoehto toimii:

Code:
Var 0002, name FS_HDG_w, Link FSUIPC_OUT, Offset $07CC , Length 2 // HDG bug write
Var 0001, name KNOB, Link IOCARD_ENCODER Input 001 Aceleration 1 Type 2     // HDG encoder, inputs 1,2
{
L0 = &KNOB * 182.444
&FS_HDG_w = ROTATE 1 65536 L0
}
« Last Edit: 13.05.11, 14:46 by Samu Mäntyniemi »

Osallistu maiseman luontiin:
1) http://www.youtube.com/watch?v=Q6CNXmmUaB4
2) http://osm2xp.com/

X-Plane 10 :
Vasen    : AMD Phenom II x4 965@3.74GHz/8GB/HD6970 22"/Win 7 Ultimate 64
Oikea     : i7 980x @4.6GHz /12GB/HD6970/22"+2x15"/Win 7 Ultimate 64
Keskellä : i7 2600K @4.5GHz /8GB/HD6970/22"/Win 7 Ultimate 64
Ville Pietilä
Offline Offline

Posts: 745
Date Registered: 17.05.06

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #46 on: 03.06.11, 07:29 »

Moi!

Tarkoituksena on kytkeä 3.5" näyttö päälle vain silloin kun lentokone on maassa ja ja gps:kytkin on asennossa 1. Eli jos kone ei ole maassa tai sähkö on poissa gps:n näyttö ei toimi.

Miten yhdistetään kaksi If-lausetta?

Näinkö:




Var 0010, name gps_on_off_sw, Link IOCARD_SW, Input 10, Type I     // Gps:n sähkö päälle/pois kytkin

Var 0020, name Pwr_relay_on, Link IOCARD_OUT, Output 50     // Syöttö releelle

Var 0030, name FL_OnGround, Link FSUIPC_IN, Offset $0366, Length 2     // Aircraft on Ground (1=On ground, 0=Air)
{
  C0 = &FL_OnGround = 1
  C1 = &gps_on_off_sw = 1
  IF C0 AND C1
  {
    &Pwr_relay_on = 1   
  }
}

//Vipu
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

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

Siellä tais olla muuttuja avioniikkakiskon jännitteelle, kantsii käyttää sitä niin toimii oikeammin, vai mikä idea tuossa on-ground-jutussa on?

Muistelen että AND-lausetta voinee käyttää yhdessä iffissä kahden ehdon välissä kans, en muista nyt ihan tarkkaan eikä pääse testaamaan kun simu on kerholla ;P

//T

Ville Pietilä
Offline Offline

Posts: 745
Date Registered: 17.05.06

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #48 on: 03.06.11, 10:36 »

Tarkennuksena eli kyseessä on tämä ohjelma muokattuna:

http://simflight.com/2010/01/26/review-dbs-studios-airport-gps/

Mulla on tähän oma 3.5" kosketusnäyttö s-videolla.

Tämä ohjelma on tehty niin, että se näyttää dataa vain silloin kun kone on maassa. Muuten ruutu on tyhjä.

Siksi ajattelin että turha 3.5 näyttöä on pitää päällä, kun siinä ei ole mitään dataa esitettävänä.

Sitten kuin kone on maassa ja dataa taas tulee menisi näyttö päälle. Siksi tuo onground- muuttuja.

kytkin on tässä koko systeemin sammuttamista varten (sioc input)

Eli ehtona kytkin=1, kone maassa=1  -> näyttö päällä. muuten 0

//Vipu
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #49 on: 03.06.11, 19:39 »

Joo, ok. Ajattelinkin että jotain mielenkiintoista on taustalla Smiley

Laita ne if:it sisäkkäin vaan, pitäisi toimia niin.

IF *jotain*
   {
      IF *jotain muuta*
      {
         tunk
      }
}

Tuollainein vois toimia..?


//T

Ville Pietilä
Offline Offline

Posts: 745
Date Registered: 17.05.06

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #50 on: 07.06.11, 17:18 »

No tossa kun aikani taistelin ja usko loppui piti kysyä euroopan guruilta apua.  Cry

se vaatii subrutiinin toimiakseen...

tässä koodi joka toimii:

Var 1, name gps_on_off_sw, Link IOCARD_SW, Input 10, Type I     // GPS on/off SW
{
  CALL &Controlrelay
}


Var 2, name FL_OnGround, Link FSUIPC_IN, Offset $0366, Length 2     // Aircraft on Ground (1=On ground, 0=Air)
{
  CALL &Controlrelay
}

Var 3, name Controlrelay Link SUBRUTINE
{

  C0 = &FL_OnGround = 1

  C1 = &gps_on_off_sw = 1

  IF C0 AND C1

  {

    &Pwr_relay_on = 1   

  }
  ELSE
  {
    &Pwr_relay_on = 0   
  }
}

Var 4, name Pwr_relay_on, Link IOCARD_OUT, Output 50     // Relay feed (coil)


//Vipu
Juha Klemettinen
Offline Offline

Posts: 5426
Date Registered: 14.04.04

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #51 on: 23.09.11, 11:01 »

Nyt loppuu ymmärrys kesken gps:n koodin kanssa.

Onko tässä jotain väärin:

Quote
Var 120, Link IOCARD_ENCODER, Input 020, Aceleration 1, Type 2
{
IF V120 > 0 // up
{
V3 = 15
}
IF V120 < 0 // down
{
V3 = 16
}
V3 = 0


Var 121, Link IOCARD_ENCODER, Input 003, Aceleration 1, Type 2
{
IF V121 > 0 // up
{
V3 = 18
}
IF V121 < 0 // down
{
V3 = 17
}
V3 = 0
}

Var 122, Link IOCARD_ENCODER, Input 024, Aceleration 1, Type 2
{
IF V122 > 0 // up
{
V3 = 20
}
IF V122 < 0 // down
{
V3 = 19
}
V3 = 0
}

Var 123, Link IOCARD_ENCODER, Input 004, Aceleration 1, Type 2
{
IF V123 > 0 // up
{
V3 = 22
}
IF V123 < 0 // down
{
V3 = 21
}
V3 = 0
}

Tällä koodilla kaksi gps:n rotaryista toimii oikein (eli kääntyvät kumpaankin suuntaan), mutta kaksi ei toimi. Toinen pyörii vain yhteen suuntaan ja toinen näyttää sahaavan edestakaisin (taajuuden valinnassa vaihtelee kahta lukua: esim. 122.xxx->123.xxx->122.xxx->123.xxx jne).
Juha


**Jos siinä on tähtimoottori sen täytyy lentää**
Jouni Pyhäjärvi
Offline Offline

Posts: 170
Date Registered: 14.07.07

Re: SIOC-ohjelmointia (IOCards)
« Reply #52 on: 23.09.11, 12:24 »

Nyt loppuu ymmärrys kesken gps:n koodin kanssa.

Onko tässä jotain väärin:

Tällä koodilla kaksi gps:n rotaryista toimii oikein (eli kääntyvät kumpaankin suuntaan), mutta kaksi ei toimi. Toinen pyörii vain yhteen suuntaan ja toinen näyttää sahaavan edestakaisin (taajuuden valinnassa vaihtelee kahta lukua: esim. 122.xxx->123.xxx->122.xxx->123.xxx jne).
Juha

Kuulostaa siltä että rotaryt ei olisi kytketty peräkkäisiin inputteihin. Master kortillahan ne inputit ei mene pinnien mukaisessa järjestyksessä.
Tuon näet helposti kun käynnistät controlador softan, starttaat sen ja kääntelet hiljalleen rotaryitä. Pitäisi näkyä yhtä rotaryä käännellessä kahden peräkkäisen
inputin menevän päälle ja pois.

Koodi pikasella vilkasulla näyttää olevan validia ja jos kaksi toimii niin pitäisi ne kaksi muutakin toimia.

Samu Mäntyniemi
Offline Offline

Posts: 282
Date Registered: 08.05.10

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

Kuulostaa siltä että rotaryt ei olisi kytketty peräkkäisiin inputteihin.

Voisiko koodissa olla lisäksi häikkää, näyttää että kaksi rotaryä on koodattu inputteihin 003 ja 004:

Code:
Var 121, Link IOCARD_ENCODER, Input 003, Aceleration 1, Type 2
{
...
}

Var 123, Link IOCARD_ENCODER, Input 004 Aceleration 1, Type 2
{
...
}

Kaiketi pitäisi koodissakin jättää yksi input väliin, eli koodata ja kytkeä seuraava rotary 005:n jos edellinen on 003(+004).

Osallistu maiseman luontiin:
1) http://www.youtube.com/watch?v=Q6CNXmmUaB4
2) http://osm2xp.com/

X-Plane 10 :
Vasen    : AMD Phenom II x4 965@3.74GHz/8GB/HD6970 22"/Win 7 Ultimate 64
Oikea     : i7 980x @4.6GHz /12GB/HD6970/22"+2x15"/Win 7 Ultimate 64
Keskellä : i7 2600K @4.5GHz /8GB/HD6970/22"/Win 7 Ultimate 64
Ville Pietilä
Offline Offline

Posts: 745
Date Registered: 17.05.06

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #54 on: 23.09.11, 18:46 »

Hyvä huomio, voisi johtua juuri tuosta.

//Vipu
Juha Klemettinen
Offline Offline

Posts: 5426
Date Registered: 14.04.04

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #55 on: 23.09.11, 19:29 »

Kuulostaa siltä että rotaryt ei olisi kytketty peräkkäisiin inputteihin. Master kortillahan ne inputit ei mene pinnien mukaisessa järjestyksessä.

Inputit ovat peräkkäisiä, controladorilla katsottuna kaikki näyttää olevan ok.

Quote
Voisiko koodissa olla lisäksi häikkää, näyttää että kaksi rotaryä on koodattu inputteihin 003 ja 004:

Tätä pitää kokeilla. Minulla on kaikki muistiinpanot museolla Aztecin nokan päällä, mutta muistelisin rotary-input-parien menevän: 002-003, 004-005, 020-021, 024-025.
Juha


**Jos siinä on tähtimoottori sen täytyy lentää**
Tuomas Kuosmanen
Moderator
Offline Offline

Posts: 10450
Date Registered: 18.06.02

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #56 on: 23.09.11, 19:34 »

Onko rotaryt kytketty johdoilla, meneekö rotaryn maa varmasti maahan? Jos väärä pinni on maa, käy kanssa just noin. Controladorissa ruuvatessa pitää käydä näin (oletetaan että rotary on inputissa 1 & 2:

Quote
-:1:1:-:-:1:1:-:-:1:1:-:-:1:1:...
-:-:2:2:-:-:2:2:-:-:2:2:-:-:2:2:...

(tajuaakohan tuosta mitään Cheesy...) eli siis niin että ensin nousee eka pinni ylös, seuraavalla naksulla toka (molemmat päällä) sit putoaa se ekana noussut pois ja sen jälkeen toinenkin, jolloin sykli alkaa alusta molemmat pois päältä.. Toiseen suuntaan sama mutta vaan toinen pinni "johtaa" yhdellä naksulla.

Quote
-:-:1:1:-:-:1:1:-:-:1:1:-:-:1:1:...
-:2:2:-:-:2:2:-:-:2:2:-:-:2:2:...

//T
« Last Edit: 23.09.11, 19:40 by Tuomas Kuosmanen »

Marco Tammes
Offline Offline

Posts: 737
Date Registered: 23.07.07

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

Siocin DELAY koodauksen kanssa pähkäilyä, ja kyllä olen opiskellut ja katellut netistäkin ohjetta, mutta ei.
Tarkoitus olis seuraava: Engine start knobbi startille ja solenoidi joka on releiden kautta kiinni usb-outputs kortissa, läsäyttää knobin takas norm asentoon. Miten tuo Delay pitäis lisätä tuohon pätkään, ettei kompiloidessa herjaa ja mieluiten vielä toimisikin.

Var 0025, Link FSUIPC_INOUT, Offset $5610, Lenght 1 // START_LEFT_ENGINE
{
IF V0025 = 1
{
V0128 = 1    (tämä on outputti varri)
&DELAY = 0, 300
}
ELSE
{
V0128 = 0
}
}

Inputit on erikseen ja ne toimii. Ainut että sais tuon outputin toimimaan viiveellä. Jos sais myös ohjeen, miten tuon DELAYn saa ympättyä sound scriptiin, niin olisimpa taas onnellinen vähän aikaan  Sad


https://www.facebook.com/MakoysB777er
E6700 3,2 @ 4 GHz,  Mushkin Redline 4x2 Gb,  GTX 560TI,  2 x HyperX SSD,   850W,   Win7  64bit
Tommi Ahonen
Offline Offline

Posts: 452
Date Registered: 31.10.08

Re: SIOC-ohjelmointia (IOCards)
« Reply #58 on: 12.12.11, 06:48 »

Toimiskohan noin?

Var 0025, Link FSUIPC_INOUT, Offset $5610, Lenght 1 // START_LEFT_ENGINE
{
IF V0025 = 1
{
V0128 = DELAY  1, 300    (tämä on outputti varri)
}
ELSE
{
V0128 = 0
}
}
Marco Tammes
Offline Offline

Posts: 737
Date Registered: 23.07.07

WWW
Re: SIOC-ohjelmointia (IOCards)
« Reply #59 on: 13.12.11, 00:52 »

Ok, sain viimein soundin viiveen toimimaan muutamien yritysten jälkeen. Nyt kuuluu bling puolen sekunnin jälkeen, kun kääntää seatbeltsin ja no smokingin päälle. Aikaisemmin ääni tuli kytkimen klik äänen kanssa samaan aikaan ja sekoitti äänielämystä. Vaimo vaan alkaa hermostumaan tuohon jatkuvaan bling ääneen, mutta pakko käännellä edestakaisin kun on se vaan niin hieno ääni  Grin
Kokeilen tuota Tommi kun saan solenoidit liitettyä outputsiin, kutina on että tuo varmaan toimii  thmbup


https://www.facebook.com/MakoysB777er
E6700 3,2 @ 4 GHz,  Mushkin Redline 4x2 Gb,  GTX 560TI,  2 x HyperX SSD,   850W,   Win7  64bit
Pages: 1 2 [3] 4 Reply Print 
« previous thread next thread »
Jump to:  

1