Jump to content
The simFlight Network Forums

Paul Henty

Members
  • Posts

    1,366
  • Joined

  • Days Won

    44

Everything posted by Paul Henty

  1. It could be, but since the error was from the WAPI dll I said to ask you. There are 2 users experiencing this exception intermittently but I can't reproduce it. I was hoping you might be able to shed some light on it with a line number of something. I'll take another look at my code and see if there's anything I've missed. Paul
  2. If the exception is thrown by the FSUIPC_WAPID.dll then you need to ask John about that as it's his dll. Same here. The log messages are produced by John's WASM module so I couldn't tell you what this means or if its a problem or not. Paul
  3. I don't think it actually uses it to access your window. I think it's just a unique ID that the WASM module uses to keep the requests from multiple clients separated. You can probably just create an IntPtr from a random Int32 value and pass that instead. Yes, if the random pointer works I could add a constructor without the handle parameter and make a random ID inside the dll. SD is signed double word which in C# would be a normal 4 byte 'int'. So check your A000 offset is declared as 'int'. If you don't mean to be working with a c# int you'll need to change SD to the appropriate size: c# -> size in ini file sbyte -> SB byte -> UB short -> SW ushort -> UW int -> SD uint -> UD double -> do not specify a size. Paul
  4. Sorry for the broken links - things are still in development and are getting moved around. I'll amend the post. The latest is 0.5.2. Here is the link: http://www.fsuipc.com/download/FSUIPC-WASMv0.5.2.zip If your browser blocks this direct link, goto: http://www.fsuipc.com/ and search for 'WASM'. That's the .lib file, not a dll. Please use the DLL from the zip file above. To use the dll to your project in Visual Studio: In Visual Studio you can add this DLL to your project as a normal project item and set the property "Copy to Output Directory" to "Copy if Newer". Yes, FSUIPC7 now supports this legacy method of reading and writing LVARS. It was designed back in the days of FSX and is provided now so that old applications using FSUIPC will now work on MSFS. You can use this feature if you like (it's a bit easier) but it's significantly slower than using the new MSFSVariableServices. Each LVAR read/write takes up a whole IPC exchange to itself. If you're accessing 10 variables this might be okay. If you want to read 30 or more in real time, this method is going to be too slow. Paul
  5. That's true. FSUIPC cannot tell you which airport you are at, or are near to. Paul
  6. If you're using my Client DLL for .NET languages you can use the AirportsDatabase service for this. It reads the files generated by Pete Dowson's MakeRunways program. For details and examples, please look in the Example Code application available on my Website: http://fsuipc.paulhenty.com/#downloads Go through the examples under the section called "Airports/Runways Database" to see how to use the database. Example "DB003 Finding Airports In Rage" shows you how to get the nearest airport to the player. You can use this to find out if the player is at an airport and which one it is. Paul
  7. No, this works fine in the .NET client DLL. Are you using the UpdateExtendedPlaneIndentifiers() method like I told you in the other thread you posted? Have you tried the AI Traffic Examples in the "Example Code" application? You can download it from my website here: http://fsuipc.paulhenty.com/#downloads Run this and go to "AI003 Getting Extended Information" under "AI Traffic". If it works in the example app, please see the code in the form for how to get the extended information. If it doesn't work in the example app then it's a problem with FSUIPC7. Please report this to John in the FSUIPC7/MSFS sub forum. Paul
  8. I recommend asking John for this in the FSUIPC7/MSFS forum. He's unlikely to see this thread. https://forum.simflight.com/forum/183-fsuipc7-msfs/ Paul
  9. Versions prior to FSUIPC7 all ran inside the Flight Sim process, so FSUIPC could never be left running on its own, so this was never a problem. I don't know if John has added an offset to FSUIPC7 to know if the Flight Sim connection has been lost. I can't see anything on the spreadsheet. It might be a good feature to request. For now, you could try something like reading offset 0x0230 (Double) which is a timestamp in seconds. If this doesn't change for a while then you know the connection to MSFS has been lost. Paul
  10. These are extended identifiers. You need to enable them using the AITrafficServices.UpdateExtendedPlaneIndentifiers() method. The way FSUIPC works, it can take a while to get the extended information which is why you need to opt in. The info is cached so the delay is only noticeable when you first update the AI Traffic and when new planes come in to range. Paul
  11. Hi Jason, The CDU class was using the same offset group between multiple instances. I've changed this so each instance will now have its own offset group. This should fix the problem. Version 3.2.8 is now on NuGet. Paul
  12. MSFS is still under development so many functions are not yet exposed for developers to use. If you have questions about MSFS specifically, it's best to ask John Dowson in the FSUIPC7/MSFS sub-forum. https://forum.simflight.com/forum/183-fsuipc7-msfs/ Paul
  13. I don't know what else to suggest, sorry. I've been trying here but I can't reproduce the error and no other users are reporting it. It looks to be something specific to your setup. Paul
  14. That error means there is a mismatch somewhere between 64 and 32 bit. Is it compiled to x64 only, or it is "Any CPU"?. If it's "Any" then your DLL will run in 32 bit if the exe or process it's running in is 32 bit. When the host application is running, check the Windows Task Manager. If it's running as 32 bit it will add this to the end of the name. Paul
  15. The other thing to check is that you're compiling your application as a 64bit application (targeting x64). Or, if your compiling for "Any CPU" make sure you've unchecked "prefer 32-bit". Since WAPID.DLL is 64 bit your application will also need to be running as a 64bit application. You'll find these in the project properties under the 'Build' tab. Paul
  16. No, I can't see any way of doing that. Paul
  17. Hi Matthias, I can't find a way of doing this. I can only iterate through using the NEXT_VIEW and PREVIOUS_VIEW controls like you. These view windows are accessible via the Win32 API (on FSX at least - I don't have P3D). So you could use that to find them and give them focus, but you'd have to be familiar with the Win32 API and it wouldn't work over WideFS. Paul
  18. I don't sorry. Maybe try downloading some free ones and see. Or ask in the support forums of popular commercial scenery like Orbx. Paul
  19. If you want the voice prompts as you previously described then you need the taxiway names. I can only suggest using free or commercial scenery that includes the correct names in the BGL files. These will then be extracted into the Airports Database via MakeRunways.exe. An alternative would be to your application to find a route to the runway and just give 'turn left/right/hold short' voice instructions (no need for taxiway names). This would not necessarily be the route given by the VATSIM controllers. Maybe they can make allowances for blind pilots by either allowing self-navigation to the runway, or giving step-by-step instructions during the taxiing over the radio to guide the pilot to the runway. Paul
  20. If I generate the taxiway names in the DLL they are unlikely to match the real-world names. Vatsim controllers will be using the real world names so it would be very confusing for you to have different names. It's probably not a good idea. Paul
  21. I think all taxiways have name in real life, but the scenery (BGL) files built into FSX have only a few named taxiways. I don't know if this is any better in later versions of flight sim, but I would think most commercial add-on scenery would be better at this. There are ICAO rules for naming taxiways and now we know which are connected it should be possible to automatically name the missing ones in a realistic way. It's unlikely to get the names the same as real life, but at least they'll have names. Let me know if that's a feature that would be useful and I'll look into it. Paul
  22. Hi, If it's intermittent then it's going to be difficult to track down. Are you using the latest versions of all the components? My DLL: 3.2.7 WAPIID.dll: 0.5.0 Latest FSUIPC7 (for the latest wasm module) Paul
  23. Hi Andy, Version 3.2.7 is now on NuGet. There is a new feature that add TaxiwayIntersection objects to Taxiways, Runways, Gates and Helipads. You can use these intersections to find which taxiways are connected and where they go (e.g. gate, runway). Each intersection also has a Lat/Lon point identifying where the junction is. Hopefully this will enable you to do most of what you want. Here is some sample code explaining how it works: C# // Setup AirportsDatabase DB = FSUIPCConnection.AirportsDatabase; DB.LoadTaxiways = true; DB.Load(); // To use intersections you must first calculate them for the airport you are interested in FsAirport EGJJ = DB.Airports["EGJJ"]; EGJJ.CalculateTaxiwayIntersections(); // Now each Taxiway has a number of collections of FsTaxiwayIntersections. // e.g.: // Get taxiway B FsTaxiway taxiwayB = EGJJ.Taxiways["B"]; FsTaxiwayIntersectionCollection<FsTaxiway> connectedTaxiways = taxiwayB.TaxiwayIntersections; FsTaxiwayIntersectionCollection<FsGate> connectedGates = taxiwayB.GateIntersections; FsTaxiwayIntersectionCollection<FsRunway> connectedRunways = taxiwayB.RunwayIntersections; FsTaxiwayIntersectionCollection<FsHelipad> connectedHelipads = taxiwayB.HelipadIntersections; // For each of these collections you can step through and get the information about the intersection // This example works on the gates connected to this taxiway: foreach(FsTaxiwayIntersection<FsGate> gateIntersection in connectedGates) { // Get the location where the taxiway connects to the gate FsLatLonPoint intersectionLocation = gateIntersection.Location; // The object property points to the gate itself string gateName = gateIntersection.Object.ID; } // FsGate. FsHelipad and FsRunway objects also have a collection of taxiway intersections // e.g. get all taxiways that join with runway 27 FsRunway rw27 = EGJJ.Runways["27"]; foreach (FsTaxiwayIntersection<FsTaxiway> taxiwayIntersection in rw27.TaxiwayIntersections) { FsLatLonPoint location = taxiwayIntersection.Location; string taxiwayName = taxiwayIntersection.Object.Name; } VB.NET ' Setup Dim DB As AirportsDatabase = FSUIPCConnection.AirportsDatabase DB.LoadTaxiways = True DB.Load() ' To use intersections you must first calculate them for the airport you are interested in Dim EGJJ As FsAirport = DB.Airports("EGJJ") EGJJ.CalculateTaxiwayIntersections() ' Now each Taxiway has a number of collections of FsTaxiwayIntersections. ' e.g.: ' Get taxiway B Dim taxiwayB As FsTaxiway = EGJJ.Taxiways("B") Dim connectedTaxiways As FsTaxiwayIntersectionCollection(Of FsTaxiway) = taxiwayB.TaxiwayIntersections Dim connectedGates As FsTaxiwayIntersectionCollection(Of FsGate) = taxiwayB.GateIntersections Dim connectedRunways As FsTaxiwayIntersectionCollection(Of FsRunway) = taxiwayB.RunwayIntersections Dim connectedHelipads As FsTaxiwayIntersectionCollection(Of FsHelipad) = taxiwayB.HelipadIntersections ' For each of these collections you can step through and get the information about the intersection ' This example works on the gates connected to this taxiway: For Each gateIntersection As FsTaxiwayIntersection(Of FsGate) In connectedGates ' Get the location where the taxiway connects to the gate Dim intersectionLocation As FsLatLonPoint = gateIntersection.Location ' The object property points to the gate itself Dim gateName As String = gateIntersection.Object.ID Next ' FsGate. FsHelipad and FsRunway objects also have a collection of taxiway intersections ' e.g. get all taxiways that join with runway 27 Dim rw27 As FsRunway = EGJJ.Runways("27") For Each taxiwayIntersection As FsTaxiwayIntersection(Of FsTaxiway) In rw27.TaxiwayIntersections Dim Location As FsLatLonPoint = taxiwayIntersection.Location Dim taxiwayName As String = taxiwayIntersection.Object.Name Next Paul
  24. I don't think so. When you use offset 0x0D70 in FSUIPC7 it has to get the data from the WASM module. There's no where else to get it. Previous versions of flight sim had other ways (e.g. Panels.dll) but those methods don't exist in MSFS. I think I read somewhere that the WASM module is installed by the FSUIPC7 installer, so installing the WASM module shouldn't present any particular issues. Paul
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.