Jump to content

Libreria exportserial para DCSW.


Blackleg

Recommended Posts

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. :icon_mrgreen:

 

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. :aplauso-6:

 

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 by Blackleg
Link to comment
Share on other sites

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. :icon_mrgreen:

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 by Blackleg
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

 

:aplauso-6:

Link to comment
Share on other sites

  • 8 months later...
  • 1 year later...

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!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Some pretty cookies are used in this website