Witam. Jestem na forum nowy. Od kilku miesięcy przymierzam się do budowy własnego kokpitu. Trochę czytałem i zastanawiałem się nad wyborem softu. Wybór padł oczywiście na HSC, ze względu na to, że "Dobre bo Polskie", po naszemu udokumentowane i po naszemu wspierane
Na początek postanowiłem sprawdzić, czy poradzę sobie ze skryptowaniem. Są dwa problemy na wstępie (może i banalne, ale na forum jest jeden wątek o HSC więc piszę tutaj).
Pierwszy jest taki, że po pierwszym uruchomieniu hsc i zmianie konfiguracji modułu fsData na FSX (pojawia się błąd, ale program działa). Jednak przy ponownym uruchomieniu mam to:
Application starting...
Loading modules...
Input module : DataReceiver
Output module: DataSender
Input module : FalconData
System.NullReferenceException: Object reference not set to an instance of an object.
at FSData.ModulesConfiguration.Load()
at FSData.FSDataOutput.Load(ILog log)
at HomeSimCockpit.Main.LoadDevices()
Input module : GameControllersInput
Input module : KeyboardInput
Output module: KeyboardOutput
Output module: LCDOnLPT
Input module : TestModule
Output module: TestModule
Output module: MouseOutput
Output module: simOUT
Input module : SkalarkiIO
Output module: SkalarkiIO
Input module : Timer
Modules loaded: 14
Input: 7
Output: 7
Number of variables: 932
Input: 528
Output: 404
I muszę kopiować na dysk czystą instalkę... Żeby znowu działało. Czyli problem jest przy zapisie ustawień.
Druga rzecz. Próbuję rozgryzać skryptowanie. Utworzyłem sobie skypcik sprawdzający w module testowym czy działają światła. Ale jak wysłać komendę do zmiany? Otrzymuję błąd (10). Oto skrypt:
// skrypt symulujący panel lights
// 8.10.2010
// mcd@interia.eu
script "FS - Lights"
{
// zmienne tekstu wyświetlanego na wyświetlaczu
variable $lcd_line_1
{
module = "TestModule";
id = "out:string_00";
type = string;
direct = out;
}
variable $lcd_line_2
{
module = "TestModule";
id = "out:string_01";
type = string;
direct = out;
}
variable $lcd_line_3
{
module = "TestModule";
id = "out:string_02";
type = string;
direct = out;
}
// zmienna przechowująca ustawienie świateł landing lights
variable $LandLights
{
module = "FSDataInput";
id = "028C";
type = int;
direct = in;
function = "LandingLightStatus";
}
variable $StrobeLights
{
module = "FSDataInput";
id = "0281";
type = int;
direct = in;
function = "StrobeLightStatus";
}
// funkcja pokazująca status landinglights na wyświetlaczu
function LandingLightStatus($variable)
{
if ( $LandLights == 1 )
{
$lcd_line_1 = "LANDING LIGHTS: ON";
}
else
{
$lcd_line_1 = "LANDING LIGHTS: OFF";
}
$lcd_line_2 = ToString( FormatNumber( FSDataInput:HexToInt( $LandLights ), "0" ) ) + " " + ToString( FormatNumber(
FSDataInput:HexToInt( $StrobeLights ), "0" ) );
}
function StrobeLightStatus($variable)
{
if ( $StrobeLights == 1 )
{
$lcd_line_3 = "STROBE LIGHTS: ON";
}
else
{
$lcd_line_3 = "STROBE LIGHTS: OFF";
}
$lcd_line_2 = ToString( FormatNumber( FSDataInput:HexToInt( $LandLights ), "0" ) ) + " " +ToString( FormatNumber(
FSDataInput:HexToInt( $StrobeLights ), "0" ) );
}
// zmienna do której zapisujemy rozkazy dla symulatora
variable $control
{
module = "FSDataOutput";
id = "028C";
type = int;
direct = out;
}
// pokazanie zmiany
variable_changed $LandLights
{
LandingLightStatus( $LandLights );
}
variable_changed $StrobeLights
{
StrobeLightStatus( $StrobeLights );
SetWithSignal( $control, 0 );
}
// zmienne przycisków i enkoderów joystick'a
variable $btnLandingLts
{
module = "TestModule";
id = "in:bool_00";
type = bool;
direct = in;
}
variable_changed $btnLandingLts
{
SetWithSignal( $control , 0);
}
}
W kodzie na końcu jest trochę śmieci. Nie potrafiąc wysłać komendy z "przycisku" w module testowym, próbowałem podpiąć ją testowo pod wyłącznik strobe LTS w FSX. Miało działać przynajmniej tak: Jak włączam StrobeLTS to automatycznie wyłączają się LandingLts. Wiem, że to bez sensu, ale dla sprawdzenia tylko.
Co robię źle? Pozdrawiam