• Sábado 20 de Abril de 2024, 01:07

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - albertosv

Páginas: [1]
1
C# / Re: Sincronización de USB-Serial ando perdido
« en: Miércoles 23 de Junio de 2010, 15:04 »
Cita de: "tannke"
No se si sera la mejor forma pero ahora mismo solo se me ocurre esto. La idea seria crear varios hilos (threads o bakgrownworker) uno para cada puerto que quieras conectarte. Ahora tambien tenemos el problema que tienes que lanzar uno despues de otro (volverias a tener unos microsegundos de desfase) seguramente tambien para esto aya algo mejor para sincronizar los threads. Pero como no los domino mucho yo lo que haria es en cada uno de ellos poner al principio un "while( variable global booleana);" la variable debe estar en true antes de lanzar los hilos. Una vez lanzados todos cambias la variable a false y deberian salir del bucle while todos a la vez para empezar a ejecutar la rutina con los puertos.

Ya te digo seguro haya algo muuucho mejor que esto. Bueno, nada mas espero te sirva. Un saludo

En primer lugar muchas gracias por la respuesta.

Te comento como lo hago a dia de hoy. Estoy usando el objeto SerialPort de .NET y programo cada evento DataReceived para que salte automaticamente con el nº de bytes que forman cada paquete de datos del sensor (en este caso 20 bytes).

Todo ello lo tengo en una clase que representa lo que es el sensor en si....y digamos que en este caso como quiero sincronizar 3 sensores, lo que hago es crear 3 objetos de dicha clase. El problema es que claro...como tengo que llamar 1 a 1 a su función Start() correspondiente...pues los datos van llegando segun los vaya procesando windows supongo...

A mi me interesaria que llegaran en el orden sensor 1, sensor 2, sensor 3...pero es imposible. Llegan segun quieren...no se si llegais a entender lo que quiero decir.

El tema de los hilos que me has comentado lo estuve valorando pero realmente no he trabajo nunca con dichos hilos y no se si para esto mismo que hago seria necesario (ya que creo que a su vez cada evento del objeto serial port de cada sensor seria un hilo propiamente dicho no???)

Quiza este confundido...te agradezco muchisimo tu ayuda..espero poder solucionarlo no dentro de mucho porque ya pocas cosas más se me ocurren.

Miles de gracias

2
C# / Sincronización de USB-Serial ando perdido
« en: Martes 22 de Junio de 2010, 15:52 »
Buenas a todos/as.

Me gustaria saber si podriais ayudarme a solucionar un pequeño problema que tengo y no se si va a ser posible ya que me estoy volviendo algo loco.

Os comento, se trata de sincronizar unos dispositivos que se conectan al pc mediante un cable USB/Serial. Es decir, es una conexión USb normal pero el ordenador lo trata como un puerto COM.

El software lo estoy realizando con C# y uso para la comunicación el objeto SerialPort de .NET. El funcionamiento es totalmente correcto y la comunicación con cada dispositivo es correcta.

El problema viene cuando quiero que trabajen sincronizados. Es decir, estos dispositivos me envian una información constantemente al PC (son sensores de luz)...La comunicación con ellos es enviando una serie de comandos desde el PC a dicho componente. Digamos para que lo entendais, que tengo que enviarles un código ascii desde el pc para que empiecen a enviarme la información (supongamos que tengoque enviar el caracter 'A').  Al tener distintos puertos COM para cada sensor no puedo enviar ese caracter de arranque a la vez para que empiecen a enviar la información a la vez los 2. Es decir, tenog que hacerlo de forma secuencial y de se modo siempre tienen un retraso entre ellos 2 (porque primero mando el caracter a uno, y acto seguido con un retraso de milisegundos el caracter al otro).

Me gustaria saber si conoceis alguna forma de poder manejar distintos puertos COM de forma que fueran sincronizados, o si alguno habeis trabajado con algo parecido. Si conoceis cualquier libreria, o cualquier información que me sea util os lo agradeceria enormemente..ya que hasta donde yo puedo llegar no se me ocurren más ideas.

Si necesitais que os de más información solo teneis que preguntarme.

Muchas gracias anticipadas a todos.

3
Buenas a todos/as.

Me gustaria saber si podriais ayudarme a solucionar un pequeño problema que tengo y no se si va a ser posible ya que me estoy volviendo algo loco.

Os comento, se trata de sincronizar unos dispositivos que se conectan al pc mediante un cable USB/Serial. Es decir, es una conexión USb normal pero el ordenador lo trata como un puerto COM.

El software lo estoy realizando con C# y uso para la comunicación el objeto SerialPort de .NET. El funcionamiento es totalmente correcto y la comunicación con cada dispositivo es correcta.

El problema viene cuando quiero que trabajen sincronizados. Es decir, estos dispositivos me envian una información constantemente al PC (son sensores de luz)...La comunicación con ellos es enviando una serie de comandos desde el PC a dicho componente. Digamos para que lo entendais, que tengo que enviarles un código ascii desde el pc para que empiecen a enviarme la información (supongamos que tengoque enviar el caracter 'A').  Al tener distintos puertos COM para cada sensor no puedo enviar ese caracter de arranque a la vez para que empiecen a enviar la información a la vez los 2. Es decir, tenog que hacerlo de forma secuencial y de se modo siempre tienen un retraso entre ellos 2 (porque primero mando el caracter a uno, y acto seguido con un retraso de milisegundos el caracter al otro).

Me gustaria saber si conoceis alguna forma de poder manejar distintos puertos COM de forma que fueran sincronizados, o si alguno habeis trabajado con algo parecido. Si conoceis cualquier libreria, o cualquier información que me sea util os lo agradeceria enormemente..ya que hasta donde yo puedo llegar no se me ocurren más ideas.

Si necesitais que os de más información solo teneis que preguntarme.

Muchas gracias anticipadas a todos.

4
C# / Pasar un String desde C# a un dato de tipo char* en C++
« en: Sábado 24 de Abril de 2010, 21:12 »
Hola a todos/as.

Tengo una duda que llevo 2 dias intentando solucionar de alguna forma...pero se me resiste y mucho.

Os agradeceria enormemente una pequeña ayuda ya que ando perdido y sobre todo desesperado...

Desde mi programa en C# (aplicación windows form) tengo que llamar a una función que se encuentra en una dll creada con Visual C++ .NET. Dicha dll esta creada con C++ standar...me refiero sin hacer uso de los tipos de valores propios de .NET.

La función a la que tengo que llamar desde mi aplicación tiene el siguiente formato.

   void iniciar(chat *archivo1,char *archivo2);


Es una función a la cual le tengo que pasar 2 rutas de archivos para realizar un proceso.

Desde mi aplicación C# escribo lo siguiente:

  objeto.inicar(txtArchivo.Text,txtArchivo2.Text); (objeto es un objeto de la clase que maneja la dll, todas las funciones se encuentra en una clase dentro de esa dll. por eso creo un objeto de esa clase para llamar a sus funcionbes).

El caso, que me da el siguiente error al compilar:

Error   1   La mejor coincidencia de método sobrecargado para 'getOrientation.cGetOrientation.iniciar(sbyte*, sbyte*)' tiene algunos argumentos no válidos   
Error   2   Argumento '1': no se puede convertir de 'string' a 'sbyte*'   
Error   3   Argumento '2': no se puede convertir de 'string' a 'sbyte*'   

Si alguien me puede hechar un cable os lo agradeceria enormemente...

Muchas gracias.

5
C# / Problema código dentro de un evento de una clase C#
« en: Jueves 10 de Diciembre de 2009, 16:32 »
Buenas a todos/as.

Tengo una duda que la verdad no se porque me sucede.

El caso, que tengo una aplicación realizada en C# que utiliza una .dll creada tambien en C# (las 2 realizadas por mi).

En dicha .dll tengo un evento que ejecuto cuando se ha recibido una información proveniente del hardware que maneja (unos sensores que desarrollamos en la empresa).

Bien, todo eso funciona perfectamente desde hace tiempo. Pero el problema que tengo es que cuando quiero programar ese evento desde una aplicación que usa esa .dll me da un error si ejecuto código dentro de la función que uso para manejar el evento.

Os pongo un ejemplo:

void Funcion(object sender, EventArgs e)
        {
            MyListAccX.Add(Sistema.NumFrames, Sistema.Sensor.digitalAcce[Sistema.NumFrames-1].X);

            MyListAccY.Add(Sistema.NumFrames, Sistema.Sensor.digitalAcce[Sistema.NumFrames-1].Y);

            MyListAccZ.Add(Sistema.NumFrames, Sistema.Sensor.digitalAcce[Sistema.NumFrames-1].Z);

            MyListGyrX.Add(Sistema.NumFrames, Sistema.Sensor.digitalGyro[Sistema.NumFrames-1].X);

            MyListGyrY.Add(Sistema.NumFrames, Sistema.Sensor.digitalGyro[Sistema.NumFrames-1].Y);

            MyListGyrZ.Add(Sistema.NumFrames, Sistema.Sensor.digitalGyro[Sistema.NumFrames-1].Z);

            MyListMagX.Add(Sistema.NumFrames, Sistema.Sensor.digitalMagn[Sistema.NumFrames-1].X);

            MyListMagY.Add(Sistema.NumFrames, Sistema.Sensor.digitalMagn[Sistema.NumFrames-1].Y);

            MyListMagZ.Add(Sistema.NumFrames, Sistema.Sensor.digitalMagn[Sistema.NumFrames-1].Z);

            //textBox_NumFrames.Text = Sistema.NumFrames.ToString();
           //textBox_Bytes.Text = Sistema._serialPort.BytesToRead.ToString();

            //zedGraphControl_Acc.AxisChange();
            //zedGraphControl_Acc.Invalidate();
            //zedGraphControl_Gyr.AxisChange();
            //zedGraphControl_Gyr.Invalidate();
            //zedGraphControl_Mag.AxisChange();
            //zedGraphControl_Mag.Invalidate();
            //if (Sistema.NumFrames > MyPaneAcc.XAxis.Scale.Max - MyPaneAcc.XAxis.Scale.MajorStep)
            //{
            //    MyPaneAcc.XAxis.Scale.Max = Sistema.NumFrames + MyPaneAcc.XAxis.Scale.MajorStep;
            //    MyPaneAcc.XAxis.Scale.Min = MyPaneAcc.XAxis.Scale.Max - 1000;
            //    MyPaneGyr.XAxis.Scale.Max = Sistema.NumFrames + MyPaneGyr.XAxis.Scale.MajorStep;
            //    MyPaneGyr.XAxis.Scale.Min = MyPaneGyr.XAxis.Scale.Max - 1000;
            //    MyPaneMag.XAxis.Scale.Max = Sistema.NumFrames + MyPaneMag.XAxis.Scale.MajorStep;
            //    MyPaneMag.XAxis.Scale.Min = MyPaneMag.XAxis.Scale.Max - 1000;
            //}



           
        }


En esa función, si solo realizo las acciones que estan sin comentar funciona perfectamente. Pero si quito los comentarios, funciona todo muy lento (funciona, no da error pero con mucho retraso todo).

No os cuento más ya que podria estar hablando de ello mucho tiempo y quiza sepais directamente que le pasa, pero si necesitais más info no dudeis en pregutarme.

Los tiros creo que van en que no se porque motivo, no puedo usar datos de controles dentro de esta función sin que se ralentice todo. Vi algo por ahi de derivar la clase de EventsArgs, de hecho lo hice y sigue igual.

Muchas gracias a todos por vuestro tiempo.

UN saludo.

6
C# / Componente grafico de lineas
« en: Jueves 12 de Febrero de 2009, 11:49 »
Hola muy buenas a todos/as.

A ver si podeis ayudarme , ya que ando buscando un componente para Visual Studio .NET (trabajo con C#) que me permita poder dibujar graficos de lineas pudiendo
añadir un scroll.

La aplicación coge unos datos de unos sensores (datos de ejes x,y,z) y simplemente seria ir dibujando un nuevo punto cada vez que me llegue un nuevo valor (lo guardo en arrays dinamicos, aunque si es necesario podria grabarlo en una bbdd).

El control tiene que tener scroll ya que se reciben los datos minimo a 50 hercios (50 puntos cada segundo).

He probado muchisimos pero no he conseguido nada con ninguno, a ver si podeis ayudarme. Muchisimas gracias a todos.

7
Crystal Reports / Actualizar La Conexión Con La Base De Datos????
« en: Viernes 25 de Noviembre de 2005, 10:13 »
Buenas a todos/as.

Estoy hacienod una aplicación que genera informes con Crystal Reports. Los datos los toma de una base de datos SQL.

Para realizar la conexión con el informe de crystal utilizo un archivo Microsoft Data Link (.udl).
El problema es el siguiente. Mi aplicación se va a utilizar en distintos sitios por españa y america. entonces, en cada sitio donde se va a utilizar la
base de datos se llama de una manera distinta (lo que si es exactamente igual es la estructura de las tablas).

Lo que hago en mi programa de visual basic es generar mediante codigo el archivo .udl con el nombre de la base de datos segun el lugar donde se este
ejecutando la aplicación (para ello lo leo del registro en en Form_Load y genero el archivo).

Yo los informes los e creado aqui en Madrid donde trabajo, y e utilizado el nombre de la base de datos que tilizamos aqui.

el problema, es cuando se utiliza el programa fuera, ya que siempre intenta leer los datos de la base de datos con la que se creo el informe.
yo genero como e dicho siempre el archivo .udl con los datos necesarios para poder conectarse con la base de datos que corresponda, pero parece como si
crystal reports no hiciera caso de dicho archivo y ya tuviera el almacenado la referencia a la otra base de datosa.

sabeis como puedo solucionar eso??? sabeis si hay alguna manera de que crytal reports actualice la conexión antes de lanzar el informe o algo de eso???
o alguna manera de poder cambiarle la localización de la base de datos???? da igual que sea desde codigo o alguna opcion del crystal.

muchas gracias a todos/as.

8
Visual Basic 6.0 e inferiores / Puedo Acceder A Los Contactos De Outlook Desde Vb6
« en: Miércoles 19 de Octubre de 2005, 10:06 »
Buenas, estoy realizando una aplicación en la cual e dado la opción de enviar emails.

Me gustaria saber si puedo leer de outlook los contactos que tengo para ponerlos en un listbox y que el usuario pueda seleccionar de hay las direcciones. La aplicación es para una empresa que utiliza el exchange como servidor de correo y las direcciones estan en dicho servidor supongo.

Si pudierais ayudarme os lo agradeceria muchisimo.

Gracias.

9
Crystal Reports / Cambiar Tamaño De Objetos De Crystal Reports??
« en: Lunes 19 de Septiembre de 2005, 16:54 »
Hola a todos/as.

Me gustaria saber si sabeis si se pùede cambiar el tamaño de los objetos de un informe de CrystalReports desde el código de Visual Basic.

Muchas gracias.

10
Crystal Reports / Como Ajustar El Tamaño De Impresión
« en: Viernes 16 de Septiembre de 2005, 10:14 »
Hola muy buenas a todos/as.

Mi problema es el siguiente.

Estoy imprimiendo un informe en el cual todos los datos que muestro estan en una tabla cruzada (Cross-Tab),bien, el problema esque cuando la cantidad columnas que se van a imprimir pasan de 6, el resto de columnas me las coloca en otras paginas distintas. Es decir, como el tamaño es más ancho que la pagina, para colocar el resto las va poniendo en distinatas páginas.

Los informes que estoy generando son para la empresa en la cual trabajo y son informes sobre la contabilidad, entoces a las personas que van a utlizar dichos informes les interesa que aprezcan todos los datos en una hoja porque necesitan tener todos los datos de todas las columnas visibles para ir comparandolos.

Antes de utlizar crystal reports, utilizaban un generador de informes llamado Cognos(Impromptu), no se si lo conocereis, pero una de las cosas buenas que tenia dicho generador esque autoajustaba el contenido al tamaño de la pagina. es decir, cuando no entraban todos los datos en la hoja, lo que hacia era reducir el tamaño para que se ajustara y de esta manera tener solo una página.

Me gustaria haber si sabes alguno alguna solución o si se puede hacer algo aunque sea desde código de visual basic. He mirado todas las opciones de crystal pero no encuentro ninguna que me permita hacer eso.

Muchisimas gracias.

Páginas: [1]