Blackleg Posted March 25, 2013 Report Share Posted March 25, 2013 (edited) Aprovechando los nuevos foros de programación, voy a sacar una pequeño proyecto que tenia por ahí olvidado y que el apocaleches borro del foro. La idea es crear una librería que permita exportar e importar datos del export.lua del DCS directamente por un puerto serie y así , en pocas palabras, conectar un arduino o aparato similar con lo que se facilitaría mucho el tema de hacer cabinas. En cuanto pueda subo el poco código que tengo escrito, pero os dejo unos vídeos de lo que conseguí hacer con ella. Edited March 25, 2013 by Blackleg Quote Link to comment Share on other sites More sharing options...
Blackleg Posted March 26, 2013 Author Report Share Posted March 26, 2013 (edited) Lo prometido es deuda. Aquí tenéis un trozo de código de la librería por si queréis echarle un vistazo y sacarme los colores. He de decir en mi defensa, que no soy programador, ni informastico y que la mayor parte del código esta sacado mediante el metodo del copy&paste. El susodicho código esta escrito en C con el API de Guindows. ( Y para tocarle los cajones al Bill Gates lo compilo en linux ) #include <string.h> #include <windows.h> #include "include/lua.h" //Librerias Lua #include "include/lualib.h" #include "include/lauxlib.h" HANDLE serial; // Descriptor del puerto serie int opencom(lua_State *L) //Funcion para abrir y configurar el puerto serie. { const char *com = luaL_checkstring(L, 1); //Leemos que puerto serie. const int baudrate = luaL_checkint(L, 2); //Leemos baudrate puerto serie serial=CreateFile(com,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); //Abrimos el puerto serie. DCB dcb; // Estructura de configuracion puerto serie GetCommState(serial, &dcb); // Obtenemos la configuracion actual dcb.BaudRate = baudrate; // Configuramos el puerto dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; dcb.fBinary = TRUE; dcb.fParity = TRUE; SetCommState(serial, &dcb); // Establecemos la nueva configuracion return 0; } int closecom(lua_State *L) //Funcion para cerrar el puerto serie. { CloseHandle(serial); //Cierra puerto serie. return 0; } int __declspec(dllexport) luaopen_exportserial(lua_State *L) //Registra las funciones en LUA para poder llamarlas con el export.lua { lua_register(L,"opencom",opencom); //lua_register(L,"writecom",writecom); //lua_register(L,"readcom",readcom); lua_register(L,"closecom",closecom); return 0; } Edited January 2, 2016 by Blackleg Quote Link to comment Share on other sites More sharing options...
Xioiz Posted April 3, 2013 Report Share Posted April 3, 2013 Una duda Blackleg, ¿Por qué el por serial y no por USB?, los ordenadores actuales ya no traen puerto serie y los que los traían tenían 1. Puede que sea un "brutada" de pregunta, pero me intriga jejeje Saludos y la verdad que es interesante jejej Quote Link to comment Share on other sites More sharing options...
Blackleg Posted April 3, 2013 Author Report Share Posted April 3, 2013 Una duda Blackleg, ¿Por qué el por serial y no por USB?, los ordenadores actuales ya no traen puerto serie y los que los traían tenían 1. Puede que sea un "brutada" de pregunta, pero me intriga jejeje Saludos y la verdad que es interesante jejej La idea principalmente esta orientada a conectar un arduino con el DCS World. Menos en los últimos modelos de arduino que pueden simular un teclado o joystick (HID), los mas antiguos y/o chinorris, aunque se conectan por usb, simulan un puerto serie al conectarse. Entonces para configurarlo y enviar datos, tienes que tratarlo como un puerto serie. Quote Link to comment Share on other sites More sharing options...
cjgvn11 Posted December 22, 2013 Report Share Posted December 22, 2013 Excelente trabajo. Le puedo pedir algo seria posible colocar una ejemplo. es posible colocar el código para activar el máster arm en el Black shark Quote Link to comment Share on other sites More sharing options...
Beloki84 Posted December 12, 2015 Report Share Posted December 12, 2015 Hola Blackleg,Estoy introduciéndome en el mundo del arduino y la comunicación serial con los simuladores de vuelo. He visto tu post de tus conexiones con el DCS y el arduino. En mi caso estoy utilizando el Lock On, pero también en el entorno Lua. He conseguido extraer los datos que necesito para mi proyecto (pitch, bank y roll). Ahora no consigo enlazar el archivo que va creando mientras juegas con él (export.log) y el arduino.Muchas gracias de antemano.Un saludo! Quote Link to comment Share on other sites More sharing options...
Blackleg Posted December 13, 2015 Author Report Share Posted December 13, 2015 Lo que tienes que conseguir es una libreria de lua para escribir y leer datos de el puerto serie y comunicarte con el arduino. Mas o menos es el esquema es algo asi: [ DCS/LockOn Export.lua ] <====> [Libreria Lua para RS232] <======> [Arduino] Quote Link to comment Share on other sites More sharing options...
Beloki84 Posted December 13, 2015 Report Share Posted December 13, 2015 Muchas gracias, pero reconozco q no soy muy ducho en programacion. El primer paso lo conseguí (no sé cómo....). Me crea el archivo export.log con los datos que quiero. Ahora necesitaria la librería de lua y el codigo de arduino. ¿tendrías un ejemplo para poder empezar a trabajar por ahi?. Muchas gracias Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.