|
| ... | Среда, 25.12.2024, 20:56
Приветствую Вас Гость | RSS |
Setting Departure & Destination with XML?
| |
Гость | Дата: Пятница, 12.08.2011, 06:56 | Сообщение # 51 |
Группа: Посетители
| Ah so! I wasn't expecting phonetic spelling...
|
|
| |
cassini-m | Дата: Пятница, 12.08.2011, 06:58 | Сообщение # 52 |
Полковник
Группа: Персонал
Сообщений: 113
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Не в сети
| Alright, so I've done as you suggested and ended up creating a gauge to help me read the ICAO stuff. I studied the function of the FS9GPS 500 but I can not figure out how it's doing some of the things as it uses unpublished variables for which I don't know why I would need them or for what. Variables such as: (@g:popupMenu) - Now when this value equals 10 I know that the Direct To "DUPLICATE WAYPOINTS" page will display. I need to create something like this, if there is an instance for which there will be two or more waypoints with the same ICAO I need to be able to see all the option, and be able to select one. I am sure there is a logical and not so loopy way of doing this as the GPS_500 seems to do. I can not make any sense of what variables are doing.
Here is the gauge I modified from your original:
Code <Gauge Name="TEST"> <Size X="600" Y="300" />
<Update Hidden="Yes" Frequency="10" >
(@c:IcaoSearchCurrentIcao) (>@c:WaypointAirportICAO) (@c:IcaoSearchCurrentIcao) (>@c:WaypointIntersectionICAO) (@c:IcaoSearchCurrentIcao) (>@c:WaypointNdbICAO) (@c:IcaoSearchCurrentIcao) (>@c:WaypointVorICAO) (@c:IcaoSearchCurrentIcao) (>@c:FacilityICAO)
'AVNWM' (>@c:IcaoSearchStartCursor)
(L:FMC-UNIT-1,number) chr (L:FMC-UNIT-2,number) chr (L:FMC-UNIT-3,number) chr (L:FMC-UNIT-4,number) chr (L:FMC-UNIT-5,number) chr (L:FMC-UNIT-6,number) chr scat scat scat scat scat (>@c:IcaoSearchEnterChar)
</Update>
<Macro Name="c">C:fs9gps</Macro> <Macro Name="C">C:fs9gps</Macro>
<Element Name="BACKGROUND RECTANGLE"> <Position X="0" Y="0"/> <Rectangle Width="800" Height="300" FillColor="Black" Bright="Yes" /> </Element>
<Element Name="FLIGHT PLAN DISPLAY"> <Position X="0" Y="10"/> <FormattedText X="1000" Y="800" Font="Verdana" FontSize="15" LineSpacing="17" Color="White" Bright="Yes" Tabs="10,10L,35,100,150,200,275,340,420L,470L" Adjust="Left"> <Color Value="Blue"/> <Color Value="darkgreen"/> <String> \{clr2}FLIGHT PLAN\n\n \{clr3} TITLE: %((@c:FlightPlanTitle))%!s!\n WPTS: %((@c:FlightPlanWaypointsNumber))%!2d! % ACT: %((@c:FlightPlanIsActiveFlightPlan))%!2d!\n \{clr2}----------------------------- DATA -------------------------------\n % # \tIDENT \tALT \tTYPE \tHDG \tLAT \tLON \tDIST \tTTL\n %((@c:FlightPlanWaypointsNumber) s2 0 !=) %{if} %(0 sp1) %{loop} %(l1 (>@c:FlightPlanWaypointIndex)) \{clr} %((@c:FlightPlanWaypointIndex))%!-3d! \t%((@c:FlightPlanWaypointIdent))%!s! \t%((@c:FlightPlanWaypointAltitude,feet))%!5d! \t%((@c:FlightPlanWaypointType))%!5d! \t%((@c:FlightPlanWaypointMagneticHeading, degrees))%!3d! \t%((@c:FlightPlanWaypointLatitude,degrees))%!3.2f! \t%((@c:FlightPlanWaypointLongitude,degrees))%!3.2f! \t%((@c:FlightPlanWaypointDistance,nmiles))%!4.1f! \t%((@c:FlightPlanWaypointDistanceTotal,nmiles))%!5.1f!\n %(l1 ++ s1 l2 <) %{next} %{end}
\{clr2}----------------------------- ICAO SEARCH -------------------------------\n\{clr}
%{loop} %((@c:IcaoSearchCurrentIcao))%!s! \n%((@c:IcaoSearchCurrentIdent))%!s! \n%((@c:FacilityICAO,string))%!s! \n%((@c:IcaoSearchCurrentIcaoType))%!s! \n%((@c:IcaoSearchMatchedIcaosNumber))%!s! %{next}
</String> </FormattedText> </Element>
<Element Name="TEXT-FIELD"> <Position X="0" Y="250"/> <Visible>(L:FMC-MSG-UNIT-1,number) 0 ==</Visible> <FormattedText X="280" Y="230" Bright="Yes" Font="Calibri" FontSize="15" Adjust="Left" Color="%( (L:FMC-BRT,number) 0x7f + 0x100 * )%" LineSpacing="15" Tabs="15,25L,120C,265R,270R"> <String>%( (L:FMC-UNIT-1,number) chr (L:FMC-UNIT-2,number) chr (L:FMC-UNIT-3,number) chr (L:FMC-UNIT-4,number) chr (L:FMC-UNIT-5,number) chr (L:FMC-UNIT-6,number) chr (L:FMC-UNIT-7,number) chr (L:FMC-UNIT-8,number) chr (L:FMC-UNIT-9,number) chr (L:FMC-UNIT-10,number) chr (L:FMC-UNIT-11,number) chr (L:FMC-UNIT-12,number) chr (L:FMC-UNIT-13,number) chr (L:FMC-UNIT-14,number) chr (L:FMC-UNIT-15,number) chr (L:FMC-UNIT-16,number) chr (L:FMC-UNIT-17,number) chr (L:FMC-UNIT-18,number) chr (L:FMC-UNIT-19,number) chr (L:FMC-UNIT-20,number) chr (L:FMC-UNIT-21,number) chr (L:FMC-UNIT-22,number) chr (L:FMC-UNIT-23,number) chr (L:FMC-UNIT-24,number) chr scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat)%!s! </String> </FormattedText> </Element>
<Keys>
<On Key="AlphaNumeric"> <Visible>(L:FMC-KEYBOARD-USE,bool) 1 ==</Visible> (M:Key) (>@c:IcaoSearchEnterChar) </On>
</Keys>
</Gauge>
The piece of code with the ICAO search and facilityicao variables will not work as I expect it to. It will only give me the numerical values of the string and only the first five numbers. I've tried using chr to correct it but nothing still. Some other bits in the gauge I borrowed from the GPS_500 to try and understand their purpose.
Also, I noted this difference: when typing in the GPS Direct To page 'CKH' for example, my first result in the GPS is CKH or Koko Head VOR. But when using it on the FMC code (SEE RTE-ADD-WPT below) CKH will result in another airport or something. I thought because our startcursor letters were in different orders, but when reset to the same order nothing. Code <!--========================================RTE-ADD-WPT========================================-->
(L:FMC-RTE-1,enum) 2 >= if{ (L:FMC-UNIT-3,number) 64 > (L:FMC-MSG-DEL-USE,bool) 0 == and if{
'AVNWM' (>@c:IcaoSearchStartCursor)
(L:FMC-UNIT-1,number) chr (L:FMC-UNIT-2,number) chr (L:FMC-UNIT-3,number) chr (L:FMC-UNIT-4,number) chr (L:FMC-UNIT-5,number) chr (L:FMC-UNIT-6,number) chr scat scat scat scat scat (>@c:IcaoSearchEnterChar)
(@c:IcaoSearchMatchedIcaosNumber) 1 >= if{
(@c:IcaoSearchCurrentICAO) (>@c:FlightPlanNewWaypointICAO)
(@c:FlightPlanWaypointsNumber,number) 0 == if{ 1 (>@c:FlightPlanDirectToDestination) } els{ (L:FMC-RTE-1,enum) 2 - (>@c:FlightPlanAddWaypoint) }
' ' (>@c:IcaoSearchStartCursor)
1 (>L:FMC-UNIT-EMPTY,bool) quit } els{ 1 (>L:FMC-NOT-IN-DATABASE,bool) } } els{ (L:FMC-MSG-DEL-USE,bool) 1 == if{ (L:FMC-RTE-1,enum) 2 - 1 + (>@c:FlightPlanDeleteWaypoint) } els{ 1 (>L:FMC-INVALID-ENTRY,bool) } } quit }
I know I've driven you guys crazy with my lack of understand for the GPS module, I thank you for helping me all this time!
|
|
| |
Robert | Дата: Пятница, 12.08.2011, 06:58 | Сообщение # 53 |
Группа: Удаленные
| just a couple of quick things right now.
You need chr after M:Key. Otherwise, you're attempting to enter numbers (that's what the keystrokes are) into a string. Use chr to convert the keystroke number to an ascii equivalent. EnterChar will only accept 5 characters max. The reason is that is the maximum length of any Ident in fs9gps database, and EnterChar is used for entering Idents needed for an ICAO search. If you exceed 5, then it will just replace the 5th character with the one just typed. The @g functions found in the gps_500 just make that particular gauge easier to code. They work with the gauge, not the gps module. You do not need any of them if you are building your own gauge that uses the gps.dll module. Yes, the gps_500 gauge is complex.
|
|
| |
cassini-m | Дата: Пятница, 12.08.2011, 07:00 | Сообщение # 54 |
Полковник
Группа: Персонал
Сообщений: 113
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Не в сети
| Code (L:FMC-UNIT-2,number) 0 != (L:FMC-UNIT-4,number) 0 == and if{ 'MNV' (>@c:IcaoSearchStartCursor) } (L:FMC-UNIT-4,number) 0 != (L:FMC-UNIT-5,number) 0 == and if{ 'AW' (>@c:IcaoSearchStartCursor) } (L:FMC-UNIT-5,number) 0 != (L:FMC-UNIT-6,number) 0 == and if{ 'W' (>@c:IcaoSearchStartCursor) }
(L:FMC-UNIT-1,number) chr (L:FMC-UNIT-2,number) chr (L:FMC-UNIT-3,number) chr (L:FMC-UNIT-4,number) chr (L:FMC-UNIT-5,number) chr scat scat scat scat (>@c:IcaoSearchEnterChar)
I've used the above code and now it seems to be working much more consistently. I still don't understand how I can view all the matches though. In many cases - I've been actually searching them out to find out how they work - (@c:IcaoSearchMatchedIcaosNumber) will return 2 or more sometimes 6, and so I don't know how I would be able to view all the matches and select from them. I would assume I would have to transfer them to FacilityICAO perhaps and then from there I can list their LAT/LON. But I'm unsure of how to transfer all of them as I don't know how to view them. I've got the IcaoSearchMatchedIcao variable on my mind, but setting it will yield inconsistent results.
I'll keep trying, thanks again bob.
Code *EDIT*
\t\tSELECT DESIRED WAYPOINT \t1 / 1 %( (L:FMC-UNIT-2,number) 0 != (L:FMC-UNIT-4,number) 0 == and if{ 'MNV' (>@c:IcaoSearchStartCursor) } (L:FMC-UNIT-4,number) 0 != (L:FMC-UNIT-5,number) 0 == and if{ 'AW' (>@c:IcaoSearchStartCursor) } (L:FMC-UNIT-5,number) 0 != (L:FMC-UNIT-6,number) 0 == and if{ 'W' (>@c:IcaoSearchStartCursor) }
(L:FMC-UNIT-1,number) 0 != if{ (L:FMC-UNIT-1,number) chr (L:FMC-UNIT-2,number) chr (L:FMC-UNIT-3,number) chr (L:FMC-UNIT-4,number) chr (L:FMC-UNIT-5,number) chr scat scat scat scat (>@c:IcaoSearchEnterChar) }
) \n \t %(0 (>@c:IcaoSearchMatchedIcao) (@c:IcaoSearchCurrentIcao) (>@c:FacilityICAO)) %((@c:IcaoSearchCurrentIdent))%!s! \t\t %((@c:IcaoSearchCurrentIcaoType) ord)%{case}%{:65}ARPT%{:87}WPT%{:78}NDB%{:86}VORDME%{end} \n \t\t\t %((@c:FacilityLatitude) 0 > if{ 'N' } els{ 'S' })%!s! %((@c:FacilityLatitude) abs flr)%!02d!° %((@c:FacilityLatitude) /-/ (@c:FacilityLatitude) /-/ int - 60.019236934915036870791920487336 /-/ * abs)%!02.1f! %((@c:FacilityLongitude) 0 > if{ 'E' } els{ 'W' })%!s! %((@c:FacilityLongitude) abs flr)%!03d!° %((@c:FacilityLongitude) /-/ (@c:FacilityLongitude) /-/ int - 60.019236934915036870791920487336 /-/ * abs)%!3.1f!
I've almost got it! All that's left is to figure out some way to loop the above code to show information for all of the ICAO matches. I've tried using {loop} command but the facility variables don't seem to like that much so I may have to perhaps write a code that will use the type and then refer to the respective Waypoint variables.
Oh well, all the more fun I suppose! Thank You everyone! Back to work.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:00 | Сообщение # 55 |
Группа: Удаленные
| Hi,
For Duplicate Waypoints try:
For search: (+/-) button, left and right mouse knob
decrease
(@c:IcaoSearchMatchedIcaosNumber) 1 > if{ (@c:IcaoSearchMatchedIcao) 0 > if{ (@c:IcaoSearchMatchedIcao) 1 - 0 max (>@c:IcaoSearchMatchedIcao) (@c:IcaoSearchCurrentIcao) (>@c:FacilityICAO) quit } }
increase
(@c:IcaoSearchMatchedIcaosNumber) 1 > if{ (@c:IcaoSearchMatchedIcao) (@c:IcaoSearchMatchedIcaosNumber) < if{ (@c:IcaoSearchMatchedIcao) 1 + (>@c:IcaoSearchMatchedIcao) (@c:IcaoSearchCurrentIcao) (>@c:FacilityICAO) quit } }
Set FPL:
Enter DEST and 0 (>L:dupl wpt counter,enum) !
Then:
(L:dupl wpt counter,enum) 1 + (>L:dupl wpt counter,enum) (@c:FacilityICAO) (>@c:FlightPlanNewWaypointICAO) (L:dupl wpt counter,enum) (>@c:FlightPlanAddWaypoint) 0 (>@c:FlightPlanIsActiveWaypointLocked) quit
Hope it helps,
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:00 | Сообщение # 56 |
Группа: Удаленные
| Edit
Hi,
For a list of duplicate wpts try (works for me):
read
<Element Name="Duplicate WPT's list"> <Visible> Your condition </Visible> <FormattedText X="265" Y="230" Bright="Yes" Font="arial" FontSize="14" Color="#cccccc" LineSpacing="15" Tabs="15,265R" Adjust="left" VerticalAdjust="center"> <String> \n\{lsp=35}
%(your condition) 1 == (@c:IcaoSearchMatchedIcaosNumber) s2 0 > and)%{if}%((L:wpt counter,number) 12 - sp1)%{loop}%(l1 (>@c:IcaoSearchMatchedIcao))
%((@c:IcaoSearchMatchedIcao))%!d! %((@c:IcaoSearchCurrentIdent))%!s! %('AWNVM' (@c:IcaoSearchCurrentIcaoType) ord schr)%{case}%{:0}AIRPORT%{:1}ISEC%{:2}NDB%{:3}VOR%{:4}MARKER%{end} %((@c:IcaoSearchCurrentIcaoRegion)) %!s! \n
%(l1 ++ s1 l2 < l1 (L:wpt counter,number) 6 - < and)\n%{next}%{end}
</String> </FormattedText> </Element>
Next and prev knobs:
(Your condition) if{ (L:wpt counter,number) 6 + (@c:IcaoSearchMatchedIcaosNumber) 12 + min (>L:wpt counter,number) } (Your condition) if{ (L:wpt counter,number) 6 - 12 max (>L:wpt counter,number) }
Hope it helps,
|
|
| |
cassini-m | Дата: Пятница, 12.08.2011, 07:01 | Сообщение # 57 |
Полковник
Группа: Персонал
Сообщений: 113
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Не в сети
| Quote (poruchik) Edit
Hi,
For a list of duplicate wpts try (works for me):
read
<Element Name="Duplicate WPT's list"> <Visible> Your condition </Visible> <FormattedText X="265" Y="230" Bright="Yes" Font="arial" FontSize="14" Color="#cccccc" LineSpacing="15" Tabs="15,265R" Adjust="left" VerticalAdjust="center"> <String> \n\{lsp=35}
%(your condition) 1 == (@c:IcaoSearchMatchedIcaosNumber) s2 0 > and)%{if}%((L:wpt counter,number) 12 - sp1)%{loop}%(l1 (>@c:IcaoSearchMatchedIcao))
%((@c:IcaoSearchMatchedIcao))%!d! %((@c:IcaoSearchCurrentIdent))%!s! %('AWNVM' (@c:IcaoSearchCurrentIcaoType) ord schr)%{case}%{:0}AIRPORT%{:1}ISEC%{:2}NDB%{:3}VOR%{:4}MARKER%{end} %((@c:IcaoSearchCurrentIcaoRegion)) %!s! \n
%(l1 ++ s1 l2 < l1 (L:wpt counter,number) 6 - < and)\n%{next}%{end}
</String> </FormattedText> </Element>
Next and prev knobs:
(Your condition) if{ (L:wpt counter,number) 6 + (@c:IcaoSearchMatchedIcaosNumber) 12 + min (>L:wpt counter,number) } (Your condition) if{ (L:wpt counter,number) 6 - 12 max (>L:wpt counter,number) }
Hope it helps, I have a very similar code, and it works all well but I can not figure out any way to display the LAT/LON for each match. That's what I'm having trouble, now back to the drawing board. :Thinking:
FYI, here's the code:
|
|
| |
Robert | Дата: Пятница, 12.08.2011, 07:01 | Сообщение # 58 |
Группа: Удаленные
| Some very quick thoughts:
Maybe the issue is that you're attempting an ICAO Transfer ((@c:IcaoSearchCurrentIcao) (>@c:FacilityICAO)) within a display Element loop. The ICAO Transfer is not single cycle whereas your display loop is. Consequently, my guess is that you only get a lat/lon for the first Facility.
If you have not already done so, you might take a look at the Asynchronous Operation section of the fs9gps guidebook for a little more background.
As an alternate approach, perhaps you could try building a loop using {if} statements that accommodate the timing of the ICAO Transfer in an Update section.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:02 | Сообщение # 59 |
Группа: Удаленные
| That is the way, sometimes > 50 matches.....
Another point about departure and destination:
I am wrestling with a single-push multipurpose-operation button on the fmc (LSK L6) May be already known, but by exploring, using direct to, add- and delete wpt, it is possible, after setting the destination (2 wpt flightplan!), to erase wpt 0, plane position, and add instead your departure airport.
PUSH 1 select destination. PUSH 2 enter destination and select now departure. PUSH 3 add departure and delete wpt 0 and select next wpt; EXEC button starts blinking. PUSH 4 add next waypoint and sect the next one.. PUSH 5 id. etc. last PUSH, then press EXEC, blinking stops and information is send to different pages of the FMC and become funtional.
Just fun!
|
|
| |
Robert | Дата: Пятница, 12.08.2011, 07:02 | Сообщение # 60 |
Группа: Удаленные
| I've done that before. But then, where do you want the aircraft to go? Wpt 0 or 1?
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:02 | Сообщение # 61 |
Группа: Удаленные
| Well,
To wpt 1.
In this case setting destination and after that replacing wpt 0 with the departure and then entering all the waypoints in between is not the problem. It is off course also possible to add a realistic SID and STAR. The "struggle", the fun, is to make the proper code for the single push LSK L6 to write and enter the flplan and after that EXEC to send the info and commands.
|
|
| |
capitan_cg | Дата: Пятница, 12.08.2011, 07:02 | Сообщение # 62 |
Группа: Удаленные
| If you are a Boeing FMC.
I use this In the route page.
Key press 3 loading dep ICAO and clearing old 0 waypoint, copy Fplan waypoint total number to L:varWPnum you would have 2 at start of plan.
Then add another way point (A:GPS FLIGHT PLAN WP INDEX,number) goes to 3 (A:GPS FLIGHT PLAN WP INDEX,number) L:varWPnum != puts the exec light on. Push the exec button (A:GPS FLIGHT PLAN WP INDEX,number) >L:varWPnum light goes out etc.
The plan is added to legs page in the bckground.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:03 | Сообщение # 63 |
Группа: Удаленные
| Not able to test things at the moment, but it might be a good idea to use (A:GPS FLIGHT PLAN WP INDEX,number) instead of (@c :FlightPlanWaypointIndex), because the last one sometimes is very inconsistent. Also the L:Var's i use change unpredictable when correcting duplicate waypoints.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:03 | Сообщение # 64 |
Группа: Удаленные
| Tested this one and it works flawless:
<Macro Name="InvokeICAOInputMode"> @1 (>@c:IcaoSearchInitialIcao) @2 (>@c:IcaoSearchStartCursor) @3 (>L:data entry,enum) 0 (>@c:IcaoSearchMatchedIcao) </Macro>
<Click> (L:rte,enum) 5 == <!--Page--> if{ (L:lsk L6,enum) 0 == <!--LSK--> if{
<--first push, start typing DEST-->
1 (>L:lsk L6,enum) (L:data entry,enum) 1 == if{ -1 (>@c:IcaoSearchAdvanceCharacter) } @InvokeICAOInputMode((@c:FacilityICAO), 'AVNWM', 1,) quit } els{ (@c:FacilityICAO) (>@c:FlightPlanNewWaypointICAO) (@c:FlightPlanWaypointsNumber,number) 0 ==
<--second push, gives WPT 0 and DEST, start typing DEP-->
if{ (>@c:FlightPlanDirectToDestination) 1 (>L:departure airport,number) } <!--Necessary L:Var--> els{ (L:departure airport,number) 1 ==
<--third push, DEP becomes WPT 0 and DEST is still WPT 1, start typing next WPT-->
if{ 1 (>@c:FlightPlanAddWaypoint) 0 (>@c:FlightPlanDeleteWaypoint) 0 (>L:departure airport,number) }
<--fourth push, brings next WPT between DEP and DEST, start typing next WPT etc. etc. EXEC light on-->
els{ (@c:FlightPlanWaypointsNumber,number) 1 - (>@c:FlightPlanAddWaypoint) } } 0 (>@c:FlightPlanIsActiveWaypointLocked) -1 (>C:fs9gps:IcaoSearchBackupChar) -1 (>C:fs9gps:IcaoSearchBackupChar) -1 (>C:fs9gps:IcaoSearchBackupChar) -1 (>C:fs9gps:IcaoSearchBackupChar) -1 (>C:fs9gps:IcaoSearchBackupChar) 0 (>@c:IcaoSearchStopCursor) quit } } </Click
Finally exec button: 0 (>L:lsk L6,enum) and EXEC light goes off and typing becomes impossible.
<Keys>
<On Key="AlphaNumeric"> <Visible>(L:data entry,enum) 1 ==</Visible> (M:Key) chr (>C:fs9gps:IcaoSearchEnterChar) </On>
</Keys>
|
|
| |
Robert | Дата: Пятница, 12.08.2011, 07:03 | Сообщение # 65 |
Группа: Удаленные
| Question - what happens if you were to omit 0 (>@c:IcaoSearchStopCursor) ?
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:04 | Сообщение # 66 |
Группа: Удаленные
| Nothing i noted, but it doesn't harm. I added also 0 (>@c:IcaoSearchMatchedIcao) behind it to faciltate the dupl wpts search. In the EXEC also 0 (>L:data entry 2,enum), was in the CLRbutton. Now we have to push it further: getting an "airwaydesignation" after entering 2 enclosing wpts. Is this one really read only?; will try.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:04 | Сообщение # 67 |
Группа: Удаленные
| Are you referring to FlightPlanWaypointAirwayIdent? If so, then you might have to deal with FlightPlanRouteType, which MSFT describes also as read only. It will be interesting to see how far you can take this. Thank you for posting this developing code.
|
|
| |
cassini-m | Дата: Пятница, 12.08.2011, 07:05 | Сообщение # 68 |
Полковник
Группа: Персонал
Сообщений: 113
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Не в сети
| I've done this another way. I am too working with Boeing 767 Honeywell FMC and what I do is enter all the information (In the route page for example) such as the destination and departure - storing them in their own respective variables, and before they can be checked they're run through ICAO Search to makes sure I get a match and I filter out anything less than 4000' in length - and after I would click activate and whatever waypoints have been set in the particular route the execute button will make the first waypoint of the flight plan the departure airport - waypoint 0 - and the last the destination airport.
See below: Code <Macro Name="EXECUTE"> <!--========================================RTE-1-RTE-SET========================================-->
(L:FMC-RTE-1,enum) 1 >= if{ (L:FMC-RTE-1-ACT,enum) 0 == (L:FMC-RTE-1-READY,enum) 1 == (L:FMC-RTE-1-ACTIVATE,enum) 1 == and and if{
'A' (>@c:IcaoSearchStartCursor) (L:FMC-RTE-ORGN-1,number) chr (L:FMC-RTE-ORGN-2,number) chr (L:FMC-RTE-ORGN-3,number) chr (L:FMC-RTE-ORGN-4,number) chr scat scat scat (>@c:IcaoSearchEnterChar)
(@c:IcaoSearchMatchedIcaosNumber) 1 == if{ (@c:IcaoSearchCurrentIcao) (>@c:FlightPlanNewWaypointICAO) }
0 (>@c:FlightPlanWaypointIndex) (@c:FlightPlanWaypointICAO) (@c:IcaoSearchCurrentIcao) scmp == if{ 0 (>@c:FlightPlanAddWaypoint) }
'A' (>@c:IcaoSearchStartCursor) (L:FMC-RTE-DEST-1,number) chr (L:FMC-RTE-DEST-2,number) chr (L:FMC-RTE-DEST-3,number) chr (L:FMC-RTE-DEST-4,number) chr scat scat scat (>@c:IcaoSearchEnterChar)
(@c:IcaoSearchMatchedIcaosNumber) 1 == if{ (@c:IcaoSearchCurrentICAO) (>@c:FlightPlanNewWaypointICAO) }
(@c:FlightPlanWaypointsNumber) 1 - (>@c:FlightPlanWaypointIndex) (@c:FlightPlanWaypointICAO) (@c:IcaoSearchCurrentIcao) scmp == if{ (@c:FlightPlanWaypointsNumber) 1 + (>@c:FlightPlanAddWaypoint) }
1 (>L:FMC-RTE-1-ACT,enum) 0 (>L:FMC-RTE-1-ACTIVATE,enum) } quit } </Macro>
FYI, I think your scratch pad is comprised of only the a GPS variable such as ICAOSearch. However, I have created my own scratchpad using LVars - 24 LVars as thats the limit on the GPS - and I can type whatever I want whenever. The LVars are numbers and I convert them using chr.
Below I post the string I use to show the scratchpad and how I use the scratch pad in with the keyboard: Code <Element Name="TEXT-FIELD"> <Position X="050" Y="235"/> <Visible>(L:FMC-MSG-UNIT-1,number) 0 == (L:FMC-WPT-SEL,enum) 0 == and</Visible> <FormattedText X="280" Y="230" Bright="Yes" Font="Calibri" FontSize="15" Adjust="Left" Color="%( (L:FMC-BRT,number) 0x7f + 0x100 * )%" LineSpacing="15" Tabs="15,25L,120C,265R,270R"> <String>%( (L:FMC-UNIT-1,number) chr (L:FMC-UNIT-2,number) chr (L:FMC-UNIT-3,number) chr (L:FMC-UNIT-4,number) chr (L:FMC-UNIT-5,number) chr (L:FMC-UNIT-6,number) chr (L:FMC-UNIT-7,number) chr (L:FMC-UNIT-8,number) chr (L:FMC-UNIT-9,number) chr (L:FMC-UNIT-10,number) chr (L:FMC-UNIT-11,number) chr (L:FMC-UNIT-12,number) chr (L:FMC-UNIT-13,number) chr (L:FMC-UNIT-14,number) chr (L:FMC-UNIT-15,number) chr (L:FMC-UNIT-16,number) chr (L:FMC-UNIT-17,number) chr (L:FMC-UNIT-18,number) chr (L:FMC-UNIT-19,number) chr (L:FMC-UNIT-20,number) chr (L:FMC-UNIT-21,number) chr (L:FMC-UNIT-22,number) chr (L:FMC-UNIT-23,number) chr (L:FMC-UNIT-24,number) chr scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat scat)%!s! </String> </FormattedText> </Element>
<On Key="AlphaNumeric"> <Visible>(L:FMC-KEYBOARD-USE,bool) 1 ==</Visible> (L:FMC-UNIT-1,number) 0 == if{ (M:Key) (>L:FMC-UNIT-1,number) } els{ (L:FMC-UNIT-1,number) (L:FMC-UNIT-2,number) > (L:FMC-UNIT-2,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-2,number) } els{ (L:FMC-UNIT-2,number) (L:FMC-UNIT-3,number) > (L:FMC-UNIT-3,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-3,number) } els{ (L:FMC-UNIT-3,number) (L:FMC-UNIT-4,number) > (L:FMC-UNIT-4,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-4,number) } els{ (L:FMC-UNIT-4,number) (L:FMC-UNIT-5,number) > (L:FMC-UNIT-5,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-5,number) } els{ (L:FMC-UNIT-5,number) (L:FMC-UNIT-6,number) > (L:FMC-UNIT-6,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-6,number) } els{ (L:FMC-UNIT-6,number) (L:FMC-UNIT-7,number) > (L:FMC-UNIT-7,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-7,number) } els{ (L:FMC-UNIT-7,number) (L:FMC-UNIT-8,number) > (L:FMC-UNIT-8,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-8,number) } els{ (L:FMC-UNIT-8,number) (L:FMC-UNIT-9,number) > (L:FMC-UNIT-9,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-9,number) } els{ (L:FMC-UNIT-9,number) (L:FMC-UNIT-10,number) > (L:FMC-UNIT-10,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-10,number) } els{ (L:FMC-UNIT-10,number) (L:FMC-UNIT-11,number) > (L:FMC-UNIT-11,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-11,number) } els{ (L:FMC-UNIT-11,number) (L:FMC-UNIT-12,number) > (L:FMC-UNIT-12,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-12,number) } els{ (L:FMC-UNIT-12,number) (L:FMC-UNIT-13,number) > (L:FMC-UNIT-13,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-13,number) } els{ (L:FMC-UNIT-13,number) (L:FMC-UNIT-14,number) > (L:FMC-UNIT-14,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-14,number) } els{ (L:FMC-UNIT-14,number) (L:FMC-UNIT-15,number) > (L:FMC-UNIT-15,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-15,number) } els{ (L:FMC-UNIT-15,number) (L:FMC-UNIT-16,number) > (L:FMC-UNIT-16,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-16,number) } els{ (L:FMC-UNIT-16,number) (L:FMC-UNIT-17,number) > (L:FMC-UNIT-17,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-17,number) } els{ (L:FMC-UNIT-17,number) (L:FMC-UNIT-18,number) > (L:FMC-UNIT-18,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-18,number) } els{ (L:FMC-UNIT-18,number) (L:FMC-UNIT-19,number) > (L:FMC-UNIT-19,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-19,number) } els{ (L:FMC-UNIT-19,number) (L:FMC-UNIT-20,number) > (L:FMC-UNIT-20,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-20,number) } els{ (L:FMC-UNIT-20,number) (L:FMC-UNIT-21,number) > (L:FMC-UNIT-21,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-21,number) } els{ (L:FMC-UNIT-21,number) (L:FMC-UNIT-22,number) > (L:FMC-UNIT-22,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-22,number) } els{ (L:FMC-UNIT-22,number) (L:FMC-UNIT-23,number) > (L:FMC-UNIT-23,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-23,number) } els{ (L:FMC-UNIT-23,number) (L:FMC-UNIT-24,number) > (L:FMC-UNIT-24,number) 0 == and if{ (M:Key) (>L:FMC-UNIT-24,number) } } } } } } } } } } } } } } } } } } } } } } } } </On>
You might get some use out of it.
Keep em coming guys, love to read these active grand codes of sorts.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:07 | Сообщение # 69 |
Группа: Удаленные
| I agree,
Looks better, but for the time being functionality is nr.1, cosmetics next. Not so busy with fmc; more with fp and custom wpts on nd. Scratchpad shows 5 letters or cifers on the left and on the right simultaneously appear regions, names, index etc. so i can see wether i have the right waypoint.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:07 | Сообщение # 70 |
Группа: Удаленные
| Btw.
For what purpose do you need 24 characters; Namesearch?
|
|
| |
cassini-m | Дата: Пятница, 12.08.2011, 07:07 | Сообщение # 71 |
Полковник
Группа: Персонал
Сообщений: 113
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Не в сети
| Well I made it 24 specifically because that's what the Honeywell FMC allows. So now I can type in the field whatever I wish. If I wanted to I would type "THIS IS A BOEING 767" for example. Although what I use it for in the FMC is setting the Latitudes and Longitudes in the Position page and setting all the parameters in the Route, Performance pages and so on. Also when adding waypoint to a flight plan - although this doesn't use all of the 24 obviously.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:08 | Сообщение # 72 |
Группа: Удаленные
| I understand that, you could almost Twitter....
Curious: you enter this with the keyboard. (Hate using it, only IcaoSearchEnterChar)
How would it look when using the mouse and the fmc keyboard?
|
|
| |
cassini-m | Дата: Пятница, 12.08.2011, 07:08 | Сообщение # 73 |
Полковник
Группа: Персонал
Сообщений: 113
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Не в сети
| No I don't only have to use the keyboard. I just showed that one although I don't like to use the keyboard much either.Below is the click for the letter "A":
Code <Area Left="155" Right="180" Top="345" Bottom="370"> <Tooltip>A</Tooltip> <Cursor Type="Hand"/> <Click> (L:FMC-UNIT-1,number) 0 == if{ 65 (>L:FMC-UNIT-1,number) } els{ (L:FMC-UNIT-1,number) (L:FMC-UNIT-2,number) > (L:FMC-UNIT-2,number) 0 == and if{ 65 (>L:FMC-UNIT-2,number) } els{ (L:FMC-UNIT-2,number) (L:FMC-UNIT-3,number) > (L:FMC-UNIT-3,number) 0 == and if{ 65 (>L:FMC-UNIT-3,number) } els{ (L:FMC-UNIT-3,number) (L:FMC-UNIT-4,number) > (L:FMC-UNIT-4,number) 0 == and if{ 65 (>L:FMC-UNIT-4,number) } els{ (L:FMC-UNIT-4,number) (L:FMC-UNIT-5,number) > (L:FMC-UNIT-5,number) 0 == and if{ 65 (>L:FMC-UNIT-5,number) } els{ (L:FMC-UNIT-5,number) (L:FMC-UNIT-6,number) > (L:FMC-UNIT-6,number) 0 == and if{ 65 (>L:FMC-UNIT-6,number) } els{ (L:FMC-UNIT-6,number) (L:FMC-UNIT-7,number) > (L:FMC-UNIT-7,number) 0 == and if{ 65 (>L:FMC-UNIT-7,number) } els{ (L:FMC-UNIT-7,number) (L:FMC-UNIT-8,number) > (L:FMC-UNIT-8,number) 0 == and if{ 65 (>L:FMC-UNIT-8,number) } els{ (L:FMC-UNIT-8,number) (L:FMC-UNIT-9,number) > (L:FMC-UNIT-9,number) 0 == and if{ 65 (>L:FMC-UNIT-9,number) } els{ (L:FMC-UNIT-9,number) (L:FMC-UNIT-10,number) > (L:FMC-UNIT-10,number) 0 == and if{ 65 (>L:FMC-UNIT-10,number) } els{ (L:FMC-UNIT-10,number) (L:FMC-UNIT-11,number) > (L:FMC-UNIT-11,number) 0 == and if{ 65 (>L:FMC-UNIT-11,number) } els{ (L:FMC-UNIT-11,number) (L:FMC-UNIT-12,number) > (L:FMC-UNIT-12,number) 0 == and if{ 65 (>L:FMC-UNIT-12,number) } els{ (L:FMC-UNIT-12,number) (L:FMC-UNIT-13,number) > (L:FMC-UNIT-13,number) 0 == and if{ 65 (>L:FMC-UNIT-13,number) } els{ (L:FMC-UNIT-13,number) (L:FMC-UNIT-14,number) > (L:FMC-UNIT-14,number) 0 == and if{ 65 (>L:FMC-UNIT-14,number) } els{ (L:FMC-UNIT-14,number) (L:FMC-UNIT-15,number) > (L:FMC-UNIT-15,number) 0 == and if{ 65 (>L:FMC-UNIT-15,number) } els{ (L:FMC-UNIT-15,number) (L:FMC-UNIT-16,number) > (L:FMC-UNIT-16,number) 0 == and if{ 65 (>L:FMC-UNIT-16,number) } els{ (L:FMC-UNIT-16,number) (L:FMC-UNIT-17,number) > (L:FMC-UNIT-17,number) 0 == and if{ 65 (>L:FMC-UNIT-17,number) } els{ (L:FMC-UNIT-17,number) (L:FMC-UNIT-18,number) > (L:FMC-UNIT-18,number) 0 == and if{ 65 (>L:FMC-UNIT-18,number) } els{ (L:FMC-UNIT-18,number) (L:FMC-UNIT-19,number) > (L:FMC-UNIT-19,number) 0 == and if{ 65 (>L:FMC-UNIT-19,number) } els{ (L:FMC-UNIT-19,number) (L:FMC-UNIT-20,number) > (L:FMC-UNIT-20,number) 0 == and if{ 65 (>L:FMC-UNIT-20,number) } els{ (L:FMC-UNIT-20,number) (L:FMC-UNIT-21,number) > (L:FMC-UNIT-21,number) 0 == and if{ 65 (>L:FMC-UNIT-21,number) } els{ (L:FMC-UNIT-21,number) (L:FMC-UNIT-22,number) > (L:FMC-UNIT-22,number) 0 == and if{ 65 (>L:FMC-UNIT-22,number) } els{ (L:FMC-UNIT-22,number) (L:FMC-UNIT-23,number) > (L:FMC-UNIT-23,number) 0 == and if{ 65 (>L:FMC-UNIT-23,number) } els{ (L:FMC-UNIT-23,number) (L:FMC-UNIT-24,number) > (L:FMC-UNIT-24,number) 0 == and if{ 65 (>L:FMC-UNIT-24,number) } } } } } } } } } } } } } } } } } } } } } } } } </Click> </Area>
Hope that helps.
The greatest part of all this is that it allows me to have my own navigation system independent from the GPS. And the key entry allows me to enter unique starting locations for the unit and it will align to the position you enter.
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:09 | Сообщение # 74 |
Группа: Удаленные
| Thanks Engjell
|
|
| |
poruchik | Дата: Пятница, 12.08.2011, 07:09 | Сообщение # 75 |
Группа: Удаленные
| Hi,
Another question, the fmc becomes more intriguing (thought i was ready years ago...) I know how to use iceoenterchar to find a facility and also the keyboard chr scat way to send data back to icao to make a facility some waypoint or something else. But is it also possible to store a facility, found with iceosearch, into L:Var's? (and how) Say i type EHAM on the fmc keyboard and get Schiphol. How do i store this in L:Var's for later use? Never did that.
|
|
| |
|