D-ALAM – DATALOADER Display

  • von
21.02.2022: Ich habe die Konfiguration angepasst, so dass der DATALOADER nun in der ersten Zeile die „atc_airline“ und dann „atc_id“ anzeigt.

Irgendwann ist wirklich alles fertig gebaut – leider. Wirklich alles fertig? Na ja, man könnte ja das DATALOADER Display „beleben“ und ein LCD Display einbauen. Ein ARDUINO mit unbelegten Outputs hatte ich ja noch…

Als Display kommt ein HD44780 16×2 LCD Modul Display Bundle mit I2C Schnittstelle zum Einsatz (Link zu Amazon). Das Display wird mit MOBIFLIGHT betrieben.

Das Display habe ich unten an das Panel geschraubt. Da keine Halterung vorhanden war, habe ich Schrauben an das Panel geklebt und kann das Display mit einer Mutter fixieren.

Die Verkabelung habe ich auf Basis dieses Tutorials so realisiert:

KabelDisplayArduino
SchwarzGNDGND
WeißVCC+5V
BlauSDAPin 20 (SDA)
GrünSCLPin 21 (SCL)

Im Mobiflight habe die beiden Lines so konfiguriert, dass Line 1 die Airline und das Callsign aus der aircraft.cfg anzeigt (Offset 0x3148 und 0x313C). Für die Line 2 habe ich in mein GSX Script eine Statusabfrage implementiert.

Diese ist in meinem Softwareprojekt „peroJeeHellExtPWRbyGSX“ enthalten.

Aktuell schaut das Script so aus (Änderungen werden hier nicht gepflegt und es wird nicht benötigt, wenn man mein GSX Script verwendet):

function checkDataloader()
	local simStatus = ipc.readUB(0x3402)

	-- GSX Status
	if (BOARDING_STATE == 4 or BOARDING_STATE == 5) then
		local x = round(ipc.readLvar("FSDT_GSX_NUMPASSENGERS_BOARDING_TOTAL"),0)
		local y = round(GSXboardedPax,0)
		if (x==y and x>0) then
			line2 = "BDG Cargo..."
		else
			line2 = "BDG ("..x.."/"..y..")"
		end
		
	elseif (BOARDING_STATE == 6 and engineLeftRunning==0 and engineRightRunning==0) then		
		line2 = "BDG completed"
	elseif (DEBOARDING_STATE == 4 or DEBOARDING_STATE == 5) then 
		line2 = "DBDG ("..round(ipc.readLvar("FSDT_GSX_NUMPASSENGERS_DEBOARDING_TOTAL"),0).."/"..round(GSXboardedPax,0)..")"
	elseif (DEBOARDING_STATE == 6 and engineLeftRunning==0 and engineRightRunning==0) then
		line2 = "DBDG completed"
	elseif (CATERING_STATE == 4 or CATERING_STATE == 5) then 
		line2 = "BDG Catering..."
	elseif (REFUELING_STATE == 4 or REFUELING_STATE == 5) then
		line2 = "Refueling..."
	elseif (DEICING_STATE == 4 or DEICING_STATE == 5) then
		line2 = "Deicing..."		
	elseif (DEPARTURE_STATE == 4 or DEPARTURE_STATE == 5) then
		if (ipc.readLvar("FSDT_VAR_Frozen")==1) then
			line2 = "Pushback..."
		else
			line2 = "Departure..."
		end		
	else		
		if (onGround==1) then
			line2 = "In Operation"		
		else
			if (CabinSoundCruiseTime==0 and CabinSoundCruise==1) then CabinSoundCruiseTime = ipc.elapsedtime() end
			if (CabinSoundCruiseTime > 0 and ipc.elapsedtime() < CabinSoundCruiseTime + 480000) then
				-- 8 Minuten (60*1000*8)
				line2 = "Serving Catering"
			else
				line2 = "In Flight"
			end
		end
	end
	-- ipc.Display(line2)
	
	-- Simulator Status
	if (logic.And(simStatus,1) ~= 0) and (logic.And(simStatus,2) ~= 0) then
		line2 = "** PAUSE/SLEW **"
	elseif (logic.And(simStatus,1) ~= 0) then	
		line2 = "**** PAUSED ****"
	elseif (logic.And(simStatus,2) ~= 0) then
		line2 = "***** SLEW *****"	
	end
	
	
	-- Write to Offset
	if (ipc.readSTR(0x66F1, 16) ~= line2) then ipc.writeSTR(0x66F1, line2, 16) end	
end

Der Status für GSX wurde final nochmal angepasst:

  • BDG in progress
  • BDG completed
  • DEBDG in progress
  • DEBDG completed