Ruahatu Posted April 19, 2017 Posted April 19, 2017 For more visibility, I open a new post concerning my questions about my library for the Gazelle. My problem is related to the display of the AM radio. The radio have 6 digits Here is the argument AM_Radio_freq_cent = 133, AM_Radio_freq_dix = 134, AM_Radio_freq_unite = 136, AM_Radio_freq_dixieme = 138, AM_Radio_freq_centieme = 139, The frequency increases by 0.025 When i use this code local function getVhfNavFreq() local function a(n) return GetDevice(0):get_argument_value(n) end return string.format("%.0f%.0f%.0f", a(133)*10, a(134)*10, a(136)*10) .. "." .. string.format("%.0f%.0f", a(138)*10, a(139)*10) end defineString("VHFNAV_FREQ", getVhfNavFreq, 7, "VHF NAV Radio", "VHF NAV Frequency") I can see in the controle reference the frequency but the 2 last digit are wrong 0.000 = 0 0.025 = 3 0.050 = 5 0.075 = 8 I understand that i have to use this type of code local vhf_lut1 = { ["0.00"] = "0", ["0.25"] = "3", ["0.50"] = "5", ["0.75"] = "8" } local function getVhfAmFreqency() local freq1 = string.format("%.0f",GetDevice(0):get_argument_value(133)):sub(3) local freq2 = string.format("%.0f", GetDevice(0):get_argument_value(134)):sub(3) local freq3 = string.format("%.0f", GetDevice(0):get_argument_value(136)):sub(3) local freq4 = string.format("%.0f", GetDevice(0):get_argument_value(138)):sub(3) local freq5 = vhf_lut1[string.format("%.2f",GetDevice(0):get_argument_value(139))] return freq1 .. freq2 .. freq3 "." .. freq3 .. freq4 .. freq5 end defineString("AM_DISPLAY", getVhfAmFreqency, 7, "VHFAM Panel", "VHFAM Display") But it does not work and once again i dont understand :cry: Thanks for your help
Ruahatu Posted April 21, 2017 Author Posted April 21, 2017 Always busy investigating If I understand correctly, the %.0f is used to format the number exactly as many digits as needed by the argument?? Someone can explain to me wthat it is the function sub(3) ??? Thanks
Ruahatu Posted April 21, 2017 Author Posted April 21, 2017 :cheer3nc: EUREKA I found it local vhf_lut1 = { ["0"] = "00", ["25"] = "25", ["50"] = "50", ["75"] = "75" } local function getVhfAmFreqency() local freq1 = string.format("%.0f", GetDevice(0):get_argument_value(133)*10) local freq2 = string.format("%.0f", GetDevice(0):get_argument_value(134)*10)--:sub(3) local freq3 = string.format("%.0f", GetDevice(0):get_argument_value(136)*10)--:sub(3) local freq4 = string.format("%.0f", GetDevice(0):get_argument_value(138)*10)--:sub(3) local freq5 = vhf_lut1[string.format("%.0f", GetDevice(0):get_argument_value(139)*100)] return freq1 .. freq2 .. freq3 .. "." .. freq4 .. freq5 end defineString("AM_DISPLAY", getVhfAmFreqency, 7, "VHFAM Panel", "VHFAM Display") But still want info about this :sub(3)
FSFIan Posted April 22, 2017 Posted April 22, 2017 The Lua 5.1 Reference Manual has documentation on every language construct and standard library function, including string.format and string.sub. some_string_variable:sub(n) simply returns everything from the third character onwards and is used to transform something like "0.25" to "25". DCS-BIOS | How to export CMSP, RWR, etc. through MonitorSetup.lua
Ruahatu Posted April 24, 2017 Author Posted April 24, 2017 Ian;3117379']The Lua 5.1 Reference Manual has documentation on every language construct and standard library function' date=' including string.format and string.sub. some_string_variable:sub(n) simply returns everything from the third character onwards and is used to transform something like "0.25" to "25". Thank you Ian for your explanations and your wonderful program :thumbup:
Recommended Posts