algerad3 Posted May 14, 2013 Share Posted May 14, 2013 (edited) Still working on the saitek thingy and I am looking at another angle. " lua sockets". Question... once I get the socket (tcp) running and sending to the client, how do I access the received packets i.e how do I get the values and variables for further use..... Silly me; I googled and goggled and even oggled myself to death and all I got was internet , http examples. I can get the stuff to print to lua console and that works fine , but I can not get the value for my own scripting use. Pointer,tips or topic title for further study would be helpful. :cry: Edited May 14, 2013 by algerad3 you would have never guessed English is supposed to be my primary language [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
Gremlin77 Posted May 14, 2013 Share Posted May 14, 2013 Just write yourself a udp client in VisualStudio. I used VisualBasic, and it's fast enough handling the udp stream. visit my build thread Gremlin's A-10 :thumbup: http://forums.eagle.ru/showthread.php?t=86916 Link to comment Share on other sites More sharing options...
algerad3 Posted May 14, 2013 Author Share Posted May 14, 2013 I have a lua client script.. just trying to figure out how to get at the variables and values from the receive stream... I am also trying to piecemeal a client using visual studio C++ slow going , in up to my neck and getting more deeper into the water soon to be in over my head ,if not already . Thanks for the tip. [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
JG14_Smil Posted May 14, 2013 Share Posted May 14, 2013 This is a interesting thread. I hope people can add to it as I would like to learn about it too. Link to comment Share on other sites More sharing options...
whartsell Posted May 14, 2013 Share Posted May 14, 2013 how are you formatting the data you are sending via udp?. If you attach the lua that is sending the data and an example of the actual data, I should be able to assist you. I also wouldn't mess with C++ C#/VB are a better choice. I use C# for my software Arduino,EOS and Helios Tutorial Static ATC menu mod Link to comment Share on other sites More sharing options...
algerad3 Posted May 14, 2013 Author Share Posted May 14, 2013 I am messing around with an example script I found in the Lua folders. The export of course is from blackshark export, The example listener is thelittle script I found and modified. Currently it will write the exported values to the lua console window. I want the values to be used in the script. As it stands , it turns the light off so I guess gear1up and gear1down has now value to work with. How do I get the values is the question. ( as if you did not figure that out already. LOL) your time and help is appreciated.listeneradaptedsaitek.luaExport.lua [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
whartsell Posted May 14, 2013 Share Posted May 14, 2013 ok from what i see you are missing some code you send the data in the export ok (i wouldnt send the light states as float formatted strings but it will work). however your code doesnt actually do anything with the data once it receives it except prints it l, e = c:receive() print(e) This code block will never execute if gear1up == 1 then saitek.SetLed("X52P",1,1,11,true) else saitek.SetLed("X52P",1,1,11,false) if gear1down == 1 then saitek.SetLed("X52P",1,1,12,true) else saitek.SetLed("X52P",1,1,12,false) end as gear1up isnt defined anywhere. what you need to do is take "e" and parse out the values you want and assign them to a variable ...then you can act on it Im still at work but will check it out and write up an example when i get home. Also is there any reason why you are doing this with lua? or is it the language you are most familiar with Arduino,EOS and Helios Tutorial Static ATC menu mod Link to comment Share on other sites More sharing options...
algerad3 Posted May 14, 2013 Author Share Posted May 14, 2013 oh, So I have to declare it again even though I have it in the export file ( now that I think about it some. Never mind got it. declare ,declare). Anyways , I am using lua as I have a dll that will allow me/us to get our saitek x52 pro gear mfd working. Also helps me understand basics of programming as i really want to expand on the possibility of using the saitek flight instrument panels for gauge displays. [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
whartsell Posted May 14, 2013 Share Posted May 14, 2013 oh, So I have to declare it again even though I have it in the export file ( now that I think about it some. Never mind got it. declare ,declare). Anyways , I am using lua as I have a dll that will allow me/us to get our saitek x52 pro gear mfd working. Also helps me understand basics of programming as i really want to expand on the possibility of using the saitek flight instrument panels for gauge displays. Yes. Remember these are two seperate programs. One doesn't know what's in the other. When you send the data over the wire with the export you are sending it as one big string. On the client you will need to parse that strong to get the vues you are after Ill give you an example in a couple of hours. Im Currently maternity cloths shopping with the wife. Oh boy. Arduino,EOS and Helios Tutorial Static ATC menu mod Link to comment Share on other sites More sharing options...
algerad3 Posted May 14, 2013 Author Share Posted May 14, 2013 If you find any good deals let me know , Girlfriend wants to go shopping this week end. I share in your joy. [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
whartsell Posted May 15, 2013 Share Posted May 15, 2013 here is an example of how you could handle this situation. This does have the shortcoming of if the data order changes it will break.It is also not easilly maintainable for future expansion(adding a bunch of values). There are some more advanced ways to handle that and i can point you in that direction in the future if you require it I commented out all the saitek code cause i dont have saitek gear on this computer In short i added a function called StrSplit that allows you to split a string up into table based on a token. Every other step i took is commented in the code. lemme know if you have any questions/problems ----------------------------------------------------------------------------- -- TCP sample: Little program to dump lines received at a given port -- LuaSocket sample files -- Author: Diego Nehab -- RCS ID: $Id: listener.lua,v 1.11 2005/01/02 22:44:00 diego Exp $ ----------------------------------------------------------------------------- function StrSplit(str, delim, maxNb) -- Eliminate bad cases... if string.find(str, delim) == nil then return { str } end if maxNb == nil or maxNb < 1 then maxNb = 0 -- No limit end local result = {} local pat = "(.-)" .. delim .. "()" local nb = 0 local lastPos for part, pos in string.gfind(str, pat) do nb = nb + 1 result[nb] = part lastPos = pos if nb == maxNb then break end end -- Handle the last field if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end return result end -- require "saitek" -- saitek.AddPage("X52P",1,1, true); -- saitek.AddPage("X52P",1,2, false); -- saitek.AddPage("X52P",1,3, false); -- saitek.AddPage("X52P",1,4, false); -- saitek.AddPage("X52P",1,5, false); -- saitek.AddPage("X52P",1,6, false); -- saitek.AddPage("X52P",1,7, false); -- saitek.AddPage("X52P",1,8, false); -- saitek.AddPage("X52P",1,9, false); -- saitek.AddPage("X52P",1,10,false); -- Make and verify connections. --#################################################################### --#################################################################### local socket = require("socket") host = host or "localhost" port = port or 8080 if arg then host = arg[1] or host port = arg[2] or port end binding = (string.format("Binding'")) --saitek.SetString("X52P",1,1,1, binding) s = assert(socket.bind(host, port)) i, p = s:getsockname() assert(i, p) waiting = (string.format("Waiting" )) --saitek.SetString("X52P",1,1,2, waiting) c = assert(s:accept()) connected = (string.format("dcs Connected")) --saitek.SetString("X52P",1,1,3, connected) --##################################################################### --##################################################################### -- Recieve info --##################################################################### --##################################################################### while not e do if gear1up == 1 then --saitek.SetLed("X52P",1,1,11,true) print("gear1up on") else --saitek.SetLed("X52P",1,1,11,false) print("gear1up off") -- if -- gear1down == 1 then -- saitek.SetLed("X52P",1,1,12,true) -- else -- saitek.SetLed("X52P",1,1,12,false) -- end end --print(l) l, e = c:receive() print(e) data = StrSplit(e,",") -- we take the string received and split it into a table using , as the token to split the string on -- so altBar = somevalue, gear1up = somevalue, gear1down = somevalue, gear2up = somevalue, gear2down = somevalue, gear3up = somevalue, gear3down = somevalue\n" will be split into a table e.g -- gear1up is located at index 2 as lua uses 1 based indexing not 0 based indexing value = StrSplit(data[2],"=") -- now we split data[2] which contains gear1up=somevalue on the token "=" -- we now end up with value as a table containing "gear1up" at index 1 and the value as index2 so we set our gear1up variable to the value at index2 gear1up = value[2] end Arduino,EOS and Helios Tutorial Static ATC menu mod Link to comment Share on other sites More sharing options...
algerad3 Posted May 15, 2013 Author Share Posted May 15, 2013 Thanks for the example , So as I understand it , I need to create a table and then parse from the stream. I guess from here I can reference lua strings. [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
whartsell Posted May 15, 2013 Share Posted May 15, 2013 correct...In the example above you split the (string) data that came in over the socket using "," as the token to split on. This results in a table. Then you take each item in the table and split the string using "=" as a token. The second element in that table is the value you would want to assign to whatever vars you use in your script. From a high level if you wanted to make it more robust (not sensitive to order) you could take each element in the first table and split the values into a key:value pair. This could be wrapped into a function that is completely reusable and wouldnt need to be altered when you add new variables. Then you could just look up each item you are interested in by the key and ordering would no longer be an issue. you also wouldnt need any local variables in that case as you could just use the key:values directly for example: instead of something like gear1up = value[2]... if gear1up == 1 then ... you could just have if data["gear1up"]== 1 then... Arduino,EOS and Helios Tutorial Static ATC menu mod Link to comment Share on other sites More sharing options...
algerad3 Posted May 16, 2013 Author Share Posted May 16, 2013 Whartsell, Just wanted to say thanks for the help you have given me.... Still working on the example you have provided. It seems that when I start the program....Listener and Dcs it starts off telling me the gear1 = off. After that it states that there is an error...String expected but is nil, or after some changes it will run but, the gear is always reporting "off". I will get it sorted out . the Important part is that I now know which direction to go. [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
whartsell Posted May 16, 2013 Share Posted May 16, 2013 no worries...always happy to help. If you get stuck post the export and your scripts and ill review them. I do have bs installed on my gaming rig but no saitek hardware. I dont have bs installed on my dev rig though Arduino,EOS and Helios Tutorial Static ATC menu mod Link to comment Share on other sites More sharing options...
algerad3 Posted May 16, 2013 Author Share Posted May 16, 2013 Cool, I will use this as a learning tool for a bit and then ,if I don't figure it out will as for more help. [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
algerad3 Posted June 24, 2013 Author Share Posted June 24, 2013 me again, I can not quite figure out how to get the example to function correctly. It will not print "Gear1up on" just "gear1up off". it is like it is not receiving the change in the variable. Racking my skull on this one. [sIGPIC][/sIGPIC] CPIAS FOR Saitek: Saitek Flight instrument panels and X-52 pro mfd scripts for Dcs http://forums.eagle.ru/showthread.php?t=94174 Link to comment Share on other sites More sharing options...
sapounas Posted June 25, 2013 Share Posted June 25, 2013 I was also googling to death, with no result. So my project is: Built a throttle for UH-1. Things that i have: One USB board with 8 GPIO/4 A-D Situation: I can write code to capture input from the board with VB .net Problem: What steps must i follow to send input data from VB program to DCS (i would like the steps to be like first you write "this" to dcs\io\*.lua . after you do this, then this and if someone could explain theprotocol of the connection) I tried to communicate the lua listener.lua with vb using socket (encoding ASCII) with no result.. Sorry if i am so noob, but you know.. it's confusion googling all week... Link to comment Share on other sites More sharing options...
Recommended Posts