Начал строить кокпит для 767 уже приобрел IOCARD USB Expansion card и мастер карту,
Пока что собрал все на тестовой коробке, как разберусь с кодом перенесу все на панель.
Пока что собрал все на тестовой коробке, как разберусь с кодом перенесу все на панель.
сколько не пробывал разобраться с soic кодом ничего путнего не выходит,
прошу сильно не пинать за не знание, а помочь кто может.
Var 0000 Name NGear Link IOCP Offset 0330 // Значение положения носового шасси получаемое из модуля IOCP4FSX { IF V0000 = 16383 // Если значение переменной 0000 равно 16383, то { V0003 = 1 // Переменной 0003 (зеленая лампа носового шасси) присваиваем значение 1 (горит) V0006 = 0 // Переменной 0006 (красная лампа носового шасси) присваиваем значение 0 (не горит) } ELSE // Если значение переменной 0000 НЕ равно 16383, то { IF V0000 > 0 // Если значение переменной 0000 больше 0, то { V0003 = 0 // Переменной 0003 (зеленая лампа носового шасси) присваиваем значение 0 (не горит) V0006 = 1 // Переменной 0006 (красная лампа носового шасси) присваиваем значение 1 (горит) } ELSE // Если значение переменной 0000 не больше 0 (вероятно равно 0), то { V0003 = 0 // Переменной 0003 (зеленая лампа носового шасси) присваиваем значение 0 (не горит) V0006 = 0 // Переменной 0006 (красная лампа носового шасси) присваиваем значение 0 (не горит) } } } Var 0001 Name LGear Link IOCP Offset 0331 { IF V0001 = 16383 { V0004 = 1 V0007 = 0 } ELSE { IF V0001 > 0 { V0004 = 0 V0007 = 1 } ELSE { V0004 = 0 V0007 = 0 } } } Var 0002 Name RGear Link IOCP Offset 0332 { IF V0002 = 16383 { V0005 = 1 V0008 = 0 } ELSE { IF V0002 > 0 { V0005 = 0 V0008 = 1 } ELSE { V0005 = 0 V0008 = 0 } } } Var 0003 Name GNGearF2, Value 0 //Зеленая лампа носовой шасси, начальное значение устанавливаем 0 Var 0004 Name GLGearF2, Value 0 //Зеленая лампа левой шасси, начальное значение устанавливаем 0 Var 0005 Name GRGearF2, Value 0 //Зеленая лампа правой шасси, начальное значение устанавливаем 0 Var 0006 Name RNGearF2, Value 0 //Красная лампа носовой шасси, начальное значение устанавливаем 0 Var 0007 Name RLGearF2, Value 0 //Красная лампа левой шасси, начальное значение устанавливаем 0 Var 0008 Name RRGearF2, Value 0 //Красная лампа правой шасси, начальное значение устанавливаем 0Конкретно, что не понятно? Это очень простой пример, в более сложных я пока сам не разбирался…
Сообщение отредактировал Shaman_2010: 08 March 2012 — 12:58
Или сами или с переводчиком гугл. Более наглядной короткой и понятной объяснялки нет. Может еще вот тут: http://www.lekseecon…encockpits.html
и по вкладочкам щелкаем и читаем.
vitabutch (09 March 2012 — 01:03) писал:
Или сами или с переводчиком гугл. Более наглядной короткой и понятной объяснялки нет. Может еще вот тут: http://www.lekseecon…encockpits.html
и по вкладочкам щелкаем и читаем.
Совершенно согласен!
// ***************************************************************************** // * Config_SIOC ver 4.01 - By Manuel Velez - www.opencockpits.com // ***************************************************************************** // * FileName : sioc.txt // * Date : 3/10/2012 Var 9001, name OutIAS, Link SUBRUTINE { IF &searching = 1 { &searching = 0 &searching = -999999 } ELSE { IF &searching = 1 { &searching = 1 &searching = 888 } ELSE { IF &searching = 0 { &searching = 0 &searching = -999999 } ELSE { &searching = &searching &searching = &searching } } } } Var 0275, name CMDLBut, static, Link IOCARD_SW, Input 3, Type P // CMD LEFT BUTTON Var 0276, name CMDCBut, static, Link IOCARD_SW, Device 2, Input 6, Type P // CMD CENTRAL BUTTON Var 0277, name CMDRBut, static, Link IOCARD_SW, Device 2, Input 7, Type P // CMD RIGHT BUTTON Var 0278, name MachSel, static, Link IOCARD_SW, Device 2, Input 89, Type P // MACHSEL BUTTON Var 0279, name SpdIntBut, static, Link IOCARD_SW, Device 2, Input 116, Type P Var 0280, name N1But, static, Link IOCARD_SW, Device 2, Input 130, Type P // N1 BUTTON Var 0281, name SpdBut, static, Link IOCARD_SW, Input 5, Type P // SPD BUTTON Var 0282, name ALTHLDBut, static, Link IOCARD_SW, Input 4, Type P // ALTHOLD BUTTON Var 0283, name HdgHldBut, static, Link IOCARD_SW, Device 2, Input 85, Type P // HDGHOLD BUTTON Var 0284, name HDGSelBut, static, Link IOCARD_SW, Input 112, Type P // HDGSEL BUTTON Var 0285, name LNAVBut, static, Link IOCARD_SW, Device 2, Input 128, Type P // LNAV BUTTON Var 0286, name VNAVBut, static, Link IOCARD_SW, Device 2, Input 127, Type P // VNAV BUTTON Var 0287, name FLCHBut, static, Link IOCARD_SW, Device 2, Input 86, Type P // FLCH BOUTTON Var 0288, name BCRSBut, static, Link IOCARD_SW, Device 2, Input 200, Type P // BACK COURSE BUTTON Var 0289, name LOCBut, static, Link IOCARD_SW, Device 2, Input 47, Type P // LOC BUTTON Var 0290, name APPBut, static, Link IOCARD_SW, Device 2, Input 48, Type P // APP BUTTON Var 0291, name VSBut, static, Link IOCARD_SW, Device 2, Input 45, Type P // V/S BUTTON Var 0292, name ATSwitch, static, Link IOCARD_SW, Input 15, Type I // A/T switch Var 0293, name DisEngBar, static, Link IOCARD_SW, Device 2, Input 75, Type I Var 0294, name CapFD, static, Link IOCARD_SW, Input 0, Type I // CAPT FLIGHT DIRECTOR (LEFT SIDE) Var 0295, name FOFD, static, Link IOCARD_SW, Device 2, Input 0, Type I // FO FLIGHT DIRECTOR (RIGHT SIDE) Var 0999, static { CALL &searching CALL &searching CALL &searching CALL &searching } Var 0299, static // read/write ALT from/to level-D panel { CALL &searching } Var 9002, name RO_ALT, Link IOCARD_ENCODER, Input 1, Aceleration 5, Type 2 // ALTIMETER ROTARY { L0 = &searching * -1 // turning right should be plus V0299 = LIMIT 0 ,640 ,L0 } Var 9003, name OutALT, Link SUBRUTINE { IF &searching = 1 { &searching = -999999 &searching = -999999 &searching = -999999 } ELSE { IF &searching = 1 { &searching = 888 &searching = 8 &searching = 8 } ELSE { L0 = V0299 * 100 IF L0 >= 10000 { } ELSE { &searching = -999999 IF L0 >= 1000 { } ELSE { &searching = -999999 &searching = L0 } } } } } Var 9004, name D_ALT, Link IOCARD_DISPLAY, Device 2, Digit 9, Numbers 3 Var 9005, name D_ALTL00, Link IOCARD_DISPLAY, Device 2, Digit 12, Numbers 1 Var 9006, name D_ALTL0, Link IOCARD_DISPLAY, Device 2, Digit 13, Numbers 1 Var 764 Static { &O_Nose = TESTBIT v764 0 &O_Left = TESTBIT v764 1 &O_Right = TESTBIT v764 2 &O_Gear = TESTBIT v764 3 &O_Doors = TESTBIT v764 4 } Var 9007 name O_Doors Link IOCARD_OUT Output 82 Var 9008 name O_Gear Link IOCARD_OUT Output 83 Var 9009 name O_Nose Link IOCARD_OUT Output 84 Var 9010 name O_Left Link IOCARD_OUT Output 85 Var 9011 name O_Right Link IOCARD_OUT Output 86 // Gear Lever: Var 368 Static Link IOCARD_SW Input 73 Type I Var 369 Static Link IOCARD_SW Input 72 Type I Var 370 Static Link IOCARD_SW Input 74 Type I // Flapsindicator Var 9020 name FI_FlpsPos Link FSUIPC_IN Offset $0BE0 Length 4 { CALL &OutFlpsPos } Var 9021 name InitFlpsPos Link SUBRUTINE { &O_Flaps0 = &InitFlpsPos &O_Flaps1 = &InitFlpsPos &O_Flaps5 = &InitFlpsPos &O_Flaps15 = &InitFlpsPos &O_Flaps20 = &InitFlpsPos &O_Flaps25 = &InitFlpsPos &O_Flaps30 = &InitFlpsPos } Var 9019 name OutFlpsPos Link SUBRUTINE { IF &ColdAndDark = 1 { CALL &InitFlpsPos 0 } ELSE { IF &TestMIP = 1 { CALL &InitFlpsPos 1 } ELSE { // // FSLook measurements showed: // Flaps 1 = 1638 // 5 = 3948 // 15= 7415 // 20= 9080 // 25= 13146 // 30= 16384 // IF &FI_FlpsPos < 50 { &O_Flaps0 = 1 } ELSE { &O_Flaps0 = 0 } C0 = &FI_FlpsPos > 1588 C1 = &FI_FlpsPos < 2138 IF C0 AND C1 { &O_Flaps1 = 1 } ELSE { &O_Flaps1 = 0 } C0 = &FI_FlpsPos > 3448 C1 = &FI_FlpsPos < 4448 IF C0 AND C1 { &O_Flaps5 = 1 } ELSE { &O_Flaps5 = 0 } C0 = &FI_FlpsPos > 6915 C1 = &FI_FlpsPos < 7915 IF C0 AND C1 { &O_Flaps15 = 1 } ELSE { &O_Flaps15 = 0 } C0 = &FI_FlpsPos > 8580 C1 = &FI_FlpsPos < 9580 IF C0 AND C1 { &O_Flaps20 = 1 } ELSE { &O_Flaps20 = 0 } C0 = &FI_FlpsPos > 12646 C1 = &FI_FlpsPos < 13646 IF C0 AND C1 { &O_Flaps25 = 1 } ELSE { &O_Flaps25 = 0 } IF &FI_FlpsPos > 15884 { &O_Flaps30 = 1 } ELSE { &O_Flaps30 = 0 } } } } Var 990 Static { CALL &OutFlpsPos } // Flaps indicator, generic part (FS9+FSX) Var 9012 name O_Flaps0 Link IOCARD_OUT Output 9 Var 9013 name O_Flaps1 Link IOCARD_OUT Output 76 Var 9014 name O_Flaps5 Link IOCARD_OUT Output 77 Var 9015 name O_Flaps15 Link IOCARD_OUT Output 16 Var 9016 name O_Flaps20 Link IOCARD_OUT Output 79 Var 9017 name O_Flaps25 Link IOCARD_OUT Output 80 Var 9018 name O_Flaps30 Link IOCARD_OUT Output 12Это пока то что я смог собрать на SOIC коде с использованием лексекон
Сообщение отредактировал woolf: 15 March 2012 — 10:59
A1exZandeR (16 March 2012 — 01:39) писал:
Э… Какя программа-то? Ваш SIOC скрипт или сам SIOC? Или еще какая-то программа? И че значит вырубается — перестает работать или вылетает с ошибкой(и закрывается).
Енкодеры вы где взяли? Если c opencockpits, то ок, а так не понятно, если вы пробовали 3-4 разных видов енкодеров, то они и не будут работать: Для mastercard нужно только с определенными хар-ми.
Если-же вы все приобретали с Opencockpits(включая енкодеры), то запустите controlador.exe(там же находится где и sioc.exe) и посмотрите, что происходит на входах когда крутите энкодер.
woolf (16 March 2012 — 03:38) писал:
Енкодеры вы где взяли? Если c opencockpits, то ок, а так не понятно, если вы пробовали 3-4 разных видов енкодеров, то они и не будут работать: Для mastercard нужно только с определенными хар-ми.
Если-же вы все приобретали с Opencockpits(включая енкодеры), то запустите controlador.exe(там же находится где и sioc.exe) и посмотрите, что происходит на входах когда крутите энкодер.
Энкодеры брал не на Opencockpits а на digikey, когда открываю controlador.exe то там когда вращаешь энкодер показываеться номер входа к которому подключен. а когда запускаю соик то открываться нормально, но при повороте энокдера программа просто закрываться без ошибок. если отключить энкодер то все работает как должно
A1exZandeR (16 March 2012 — 15:45) писал:
Вы уверены, что энкодер совместимый?
Энкодер подключается средней ногой на common ground(одной из групп inputs!) а две других ноги на последовательные! логические! входы.
Допустим мы подключили к inputs 7и 8. Когда крутим, то controlador будет показывать примерно так (7 — 8) +> (7 — ) => ( — ) => (7 — ) => (7 — 8).
У вас так?
A1exZandeR (16 March 2012 — 15:45) писал:
Так быть не должно. Не важно правильный энкодер или нет, сиок не должен закрываться. Попробуйте более ранние версии.
Неправильный энкодер просто «очень быстро» шевелит ногами, и циклы не отрабатываются. Он ничего не имеет против работы сиока
vitabutch (16 March 2012 — 18:43) писал:
Неправильный энкодер просто «очень быстро» шевелит ногами, и циклы не отрабатываются. Он ничего не имеет против работы сиока
Все правильно говорите.
Только человек мог либо не тот энкодер купить, либо не так подключить, что я и пытаюсь выяснить.
SIOC вылетает например когда файл не до конца переведен в byte код. У меня такое было когда ошибка в скрипте не дает sioc compiler доработать до конца и нажать ctrl+s, тогда получается кривой файл. Но если я правильно помню, там сообщение об ошибке сначала выдается.
woolf (16 March 2012 — 19:16) писал:
Только человек мог либо не тот энкодер купить, либо не так подключить, что я и пытаюсь выяснить.
SIOC вылетает например когда файл не до конца переведен в byte код. У меня такое было когда ошибка в скрипте не дает sioc compiler доработать до конца и нажать ctrl+s, тогда получается кривой файл. Но если я правильно помню, там сообщение об ошибке сначала выдается.
какаято ошибка выскакивает при импорте тхт файла в соик

так выглядит когда не вращаю энкодером
Когда вращаю энкодер появляеться и исчезает 001-
запускаю СОИК и только первый клик энкодером сразу вырубаеться программа.
Навжно быстро вращать или медленно результат один.
woolf (17 March 2012 — 07:44) писал:
1) Не тот Не так подключен энкодер. EDIT: Хмм… сходил по вашей ссылке на digikey, энокодер правильный. Значить просто не так подключен.
2) Не докомпелировался скрипт.
Из-за 2) — вылетает SIOC…
Из-за 1) — оно и так работать нормально не будет
энкодер подключен земля на среднюю ногу крайние на входы
A1exZandeR (17 March 2012 — 08:24) писал:
Если подключено на входы 6 и 1, то и 6 и 1 должны оба исчезать и появляться. Последовательность я уже писал.
Опять же входы должны быть последовательные. То есть 1,и 2, 2 и 3 итд.
После того как разберетесь с подключением, поработайте над скриптом, чтобы он компилировался. Сейчас компилятор жалуется, что переменная с именем SEARCHING не определена.
1) Не тот Не так подключен энкодер. EDIT: Хмм… сходил по вашей ссылке на digikey, энокодер правильный. Значить просто не так подключен.
2) Не докомпелировался скрипт.
Из-за 2) — вылетает SIOC…
Из-за 1) — оно и так работать нормально не будет
Сообщение отредактировал woolf: 17 March 2012 — 07:59
woolf (17 March 2012 — 10:33) писал:
Опять же входы должны быть последовательные. То есть 1,и 2, 2 и 3 итд.
После того как разберетесь с подключением, поработайте над скриптом, чтобы он компилировался. Сейчас компилятор жалуется, что переменная с именем SEARCHING не определена.
1)попробывал подключить на другие выходы (3-4) теперь controlador показывает при вращении энкодера ( ) (003-) (003-004-) (004-) ( ) как я понимаю это правильно показывает.
2) в скрипте разобраться не могу знания програмирования у меня нету совсем, весь код собирал из leeksecon там файлы готовые есть
3) какой выход использовать в SIOC в моем случае (3 или 4)? (попробывал и 3 и 4 ставить все равно вылетает SIOC)
ПЫ.СЫ. Огромное спасибо за вашу помощь.
Сообщение отредактировал A1exZandeR: 17 March 2012 — 20:45