Евгений Bird подсказал офсет скольжения. Однобайтовая переменная 036E, но работает не так как должна. выдает значения вправо от 0 до 127, а в лево от 255 до 127. Так быть не должно, может клюкнутая версия fsuipc используется?
САБ
30.11.2016 в 18:30
Это нормально. Число в дополнительном коде. 255 соответствует -1, 128 соответствует -127
ra3dcs
30.11.2016 в 18:42
Да мне то зачем этот дополнительный код нужен? Мне нужна переменная в диапазоне -127 до +127.
САБ
30.11.2016 в 19:06
Да мне то зачем этот дополнительный код нужен? Мне нужна переменная в диапазоне -127 до +127.
Она и есть в этом диапазоне. Просто где-то по дороге в каком-то месте вместо байтовой знаковой ее взяли как байтовую (или большего размера) беззнаковую. Вы можете вернуть его обратно — если число больше 127, вычтите из него 256.
ra3dcs
01.12.2016 в 17:41
Сергей спасибо за помощь! Пришлось написать в СИОК такие строки. Заработало!
Var 0109, Link FSUIPC_IN, Offset $036E, Length 1 // cкольжение { L0 = V0109 IF L0 > 128 { L0 = L0 — 256 } L0 = L0 * 5 // Calculate degrees for UAS-B &skol = L0 }
ra3dcs
03.12.2016 в 10:13
С указателем разворота такая же ерунда.
Var 0120, Link FSUIPC_IN, Offset $037C, Length 2 // разворот { L0 = V0120 IF L0 > 513 { L0 = L0 — 65536 } L0 = L0 * 3 // Calculate degrees for UAS-B &razv = L0 }
САБ
03.12.2016 в 14:13
Александр, только не >128 и > 513, а >=128, >= 512 или >127, >511.
Евгений Bird подсказал офсет скольжения. Однобайтовая переменная 036E, но работает не так как должна. выдает значения вправо от 0 до 127, а в лево от 255 до 127. Так быть не должно, может клюкнутая версия fsuipc используется?
Это нормально. Число в дополнительном коде. 255 соответствует -1, 128 соответствует -127
Да мне то зачем этот дополнительный код нужен? Мне нужна переменная в диапазоне -127 до +127.
Она и есть в этом диапазоне. Просто где-то по дороге в каком-то месте вместо байтовой знаковой ее взяли как байтовую (или большего размера) беззнаковую. Вы можете вернуть его обратно — если число больше 127, вычтите из него 256.
Пришлось написать в СИОК такие строки. Заработало!
Var 0109, Link FSUIPC_IN, Offset $036E, Length 1 // cкольжение
{
L0 = V0109
IF L0 > 128
{
L0 = L0 — 256
}
L0 = L0 * 5 // Calculate degrees for UAS-B
&skol = L0
}
Var 0120, Link FSUIPC_IN, Offset $037C, Length 2 // разворот
{
L0 = V0120
IF L0 > 513
{
L0 = L0 — 65536
}
L0 = L0 * 3 // Calculate degrees for UAS-B
&razv = L0
}
Александр, только не >128 и > 513, а >=128, >= 512 или >127, >511.