Jump to content

boarder2

Members
  • Posts

    418
  • Joined

  • Last visited

Everything posted by boarder2

  1. (Reposting this here in hopes that maybe someone else will see it and be able to help) In A-10C I'm trying to use the Lo*SharedTexture methods in Export.lua but I'm running into lots of issues. Any time I try to use those methods, I get an application exception: Faulting application name: dcs.exe, version: 1.1.0.6, time stamp: 0x4d70d825 Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7c8f9 Exception code: 0xc0000005 Fault offset: 0x0000000000018e3d Faulting process id: 0x7d8 Faulting application start time: 0x01cbe1d2e0b27fd7 Faulting application path: C:\Program Files\Eagle Dynamics\DCS A-10C\bin\dcs.exe Faulting module path: C:\Windows\SYSTEM32\ntdll.dll Report Id: 3af5e3cb-4dc6-11e0-a7bf-005056c00008 Here is a copy of my Export.lua in its entirety -- Data export script for Lock On version 1.2. -- Copyright (C) 2006, Eagle Dynamics. -- See http://www.lua.org for Lua script system info -- We recommend to use the LuaSocket addon (http://www.tecgraf.puc-rio.br/luasocket) -- to use standard network protocols in Lua scripts. -- LuaSocket 2.0 files (*.dll and *.lua) are supplied in the Scripts/LuaSocket folder -- and in the installation folder of the Lock On version 1.2. -- Please, set EnableExportScript = true in the Config/Export/Config.lua file -- to activate this script! -- Expand the functionality of following functions for your external application needs. -- Look into ./Temp/Error.log for this script errors, please. -- you can export render targets via shared memory interface -- using next functions -- LoSetSharedTexture(name) -- register texture with name "name" to export -- LoRemoveSharedTexture(name) -- copy texture with name "name" to named shared memory area "name" -- LoUpdateSharedTexture(name) -- unregister texture -- texture exported like Windows BMP file -- -------------------------------- -- |BITMAPFILEHEADER | -- |BITMAPINFOHEADER | -- |bits | -- -------------------------------- -- sample textures : "mfd0" - full SHKVAL screen -- "mfd1" - ABRIS map screen -- "mfd2" - not used -- "mfd3" - not used -- "mirrors" - mirrors local default_output_file = nil local after_next_frame_called_once = false function LuaExportStart() LoSetSharedTexture("mfd0") default_output_file = io.open("c:/Temp/Export.log", "w") if default_output_file then default_output_file:write("LuaExportStart was called.\r\n") end end function LuaExportBeforeNextFrame() end function LuaExportAfterNextFrame() LoUpdateSharedTexture("mfd0") if default_output_file and not after_next_frame_called_once then default_output_file:write("LuaExportAfterNextFrame was called.\r\n") after_next_frame_called_once = true end end function LuaExportStop() LoRemoveSharedTexture("mfd0") if default_output_file then default_output_file:write("LuaExportStop was called.\r\n") default_output_file:close() default_output_file = nil end end function LuaExportActivityNextEvent(t) local tNext = t return tNext end I left some of the default output file stuff in there for more diagnostics. The Export.log file contains this: LuaExportStart was called. LuaExportAfterNextFrame was called. Oddly enough, it's actually making it past the LoSetSharedTexture call into the file output call in LuaExportAfterNextFrame. At this point is when I get the ntdll.dll error. I'm running Windows 7 x64, on a completely fresh install of A-10C updated to patch .6 using the x64 assemblies. Just now I tried using the 32-bit assemblies and it actually creates the shared memory. I can see it using ProcessExplorer, and I can get a handle to it using .NET 4.0 MemoryMappedFile.OpenExisting. One problem - it's just a bunch of zeros. Here is my code running in an x86 .NET assembly WriteStatusMessage("Trying to refresh MFD."); try { using (var file = MemoryMappedFile.OpenExisting("mfd1")) { using (var stream = file.CreateViewStream()) { byte[] data = new byte[stream.Length]; stream.Read(data, 0, data.Length); File.WriteAllText(@"C:\Temp\Info.txt", string.Format("Data Length: {0}", data.Length)); File.WriteAllBytes(@"C:\Temp\bitmap.bmp", data); } } } catch (Exception ex) { WriteStatusMessage("Exception occurred refreshing MFD: {0}", ex.ToString()); } bitmap.bmp is an empty file Info.txt contains: Data Length: 208896 When using the default configuration (256 textures). If I bump the cockpit textures up to 1024 every frame the file is still just empty space, and info.txt now contains: Data Length: 3158016 This also caused both visual studio and DCS to crash... I'm going to guess there's some memory stomping going on there. Or maybe some things not playing nice given the fact that it's throwing around 3MB of data. However, we can at least see that the data size is changing, so that's good. Does anyone have any advice on if it's even remotely possible to get the MFD Exports to work in A-10? The use case I'm going for doesn't allow multiple monitors connected to the same computer as a viable alternative. I want this data via the network.
  2. Found it Looks like SendInput gets the job done http://msdn.microsoft.com/en-us/library/ms646310(v=vs.85).aspx
  3. Is there a preferred method of interacting with an active session via an outside application? Using .NET and the SendKeys class, DCS A-10 doesn't respond to any messages when the game is the active window (My application works fine with notepad). I did a search and couldn't really find much related to this topic.
  4. Awesome, I'll take a look around there tomorrow. Thanks!
  5. I'm wondering if there's any sort of API that gives information about whats going on with the airplane while flying and/or provides me the ability to interact with the aircraft systems. Radio stack, MFD, etc.
×
×
  • Create New...