conexion puerto serie

22/06/2007 - 10:35 por Aitziber | Informe spam
Hola.
Estoy haciendo un programa en visual studio 2005 para pocketpc y tengo que
comunicar vía puerto serie.
El programa me funciona pero va un poco lento.
La comunicacion es entre el ppc y una placa base.

¿Como puedo hacer que vaya más rápido?
va a 19200baudios y los datos los recibo mediante un
port.read(byte[],offset, tamaño) y envio port.write(byte[],offset,tamaño).

Preguntas similare

Leer las respuestas

#1 David caso
22/06/2007 - 11:09 | Informe spam
me imagino que la velocidad que das es la que te dan desde el fabricante
de la placa, ¿no?. Aunque no me queda claro que te va lento, la
recepción de información, o la ejecución del programa¿?.
Si te refieres a la ejecución general del programa, no esperes conseguir
velocidad, si te refieres a la comunicación entre el dispositivo y la
maquina, solo comentarte, que yo manejo dispositivos Bluetooth, y de
RFID (que al final no es mas que un puerto COM), y en la mayoria de los
casos hay que bajarles la velocidad de comunicacion a 2400, porque 9600
acaba fallando, asi que a 19200 ni lo he intentado.

un saludo

Aitziber escribió:
Hola.
Estoy haciendo un programa en visual studio 2005 para pocketpc y tengo que
comunicar vía puerto serie.
El programa me funciona pero va un poco lento.
La comunicacion es entre el ppc y una placa base.

¿Como puedo hacer que vaya más rápido?
va a 19200baudios y los datos los recibo mediante un
port.read(byte[],offset, tamaño) y envio port.write(byte[],offset,tamaño).


Respuesta Responder a este mensaje
#2 Aitziber
22/06/2007 - 11:25 | Informe spam
Si, algunas placas tienen 4800 y otras 19200.
Yo creo que el problema es el recibir, analizar esos datos y despues enviar
la respuesta.
Igual es que analizando tarta mucho.

"David caso" <david.soporte.esto.lo.quitas.sico.es> escribió en el mensaje
news:
me imagino que la velocidad que das es la que te dan desde el fabricante
de la placa, ¿no?. Aunque no me queda claro que te va lento, la recepción
de información, o la ejecución del programa¿?.
Si te refieres a la ejecución general del programa, no esperes conseguir
velocidad, si te refieres a la comunicación entre el dispositivo y la
maquina, solo comentarte, que yo manejo dispositivos Bluetooth, y de RFID
(que al final no es mas que un puerto COM), y en la mayoria de los casos
hay que bajarles la velocidad de comunicacion a 2400, porque 9600 acaba
fallando, asi que a 19200 ni lo he intentado.

un saludo

Aitziber escribió:
Hola.
Estoy haciendo un programa en visual studio 2005 para pocketpc y tengo
que comunicar vía puerto serie.
El programa me funciona pero va un poco lento.
La comunicacion es entre el ppc y una placa base.

¿Como puedo hacer que vaya más rápido?
va a 19200baudios y los datos los recibo mediante un
port.read(byte[],offset, tamaño) y envio
port.write(byte[],offset,tamaño).
Respuesta Responder a este mensaje
#3 RFOG
22/06/2007 - 11:48 | Informe spam
En Fri, 22 Jun 2007 10:35:43 +0200, Aitziber escribió:

Hola.
Estoy haciendo un programa en visual studio 2005 para pocketpc y tengo
que
comunicar vía puerto serie.
El programa me funciona pero va un poco lento.
La comunicacion es entre el ppc y una placa base.

¿Como puedo hacer que vaya más rápido?
va a 19200baudios y los datos los recibo mediante un
port.read(byte[],offset, tamaño) y envio
port.write(byte[],offset,tamaño).





La forma más rápida de reaccionar a una comunicación de ese tipo es tener
un hilo dedicado por entero al puerto y al cálculo de la respuesta. Aparte
de eso hay más opciones, como implementar las ejecuciones en un nuevo hilo
con una cola de comandos o si necesitas recibir-ejecutar-responder
entonces en el mismo hilo que el puerto serie.

Cambia los switch por arrays de punteros a funciones (en C# no se puede,
aunque lo mismo es posible tener arrays de delegados -lo que ya no sé es
el rendimiento), en el cual el verbo (el comando) es el índice del array
que ejecutará la acción, sustituye los bucles y los if/else if/else
if/else por consultas a tabla donde sea posible, evita anidar muchos
bucles y utiliza el goto para salir de posibles anidaciones...

Y si todavía es demasiado lento, usa C++ bajo Win32 o como mucho MFC con
las técnicas descritas arriba...

Respecto a las velocidades, si se producen pérdidas de comunicación la
cosa está clara: cables apantallados y si se siguen produciendo es que el
hardware (la PDA o lo que haya al otro lado) no es muy bueno. Otra cosa es
que sean comunicaciones sin cable, en ese caso sí que es normal que se
pierdan cosas.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Sacar las cosas de quicio, no se hace sin perjucio.
Respuesta Responder a este mensaje
#4 David caso
22/06/2007 - 13:42 | Informe spam
para saber el tiempo que tarda en hacer cada cosa puedes hacer los
siguiente:

'definir un par de variables, esta en milisegundos
int mInicio;
int mFin;

'Justo antes y despues de cada proceso que quieras controlas
mInicio=System.Environment.TickCount;
..'Procesos
mFin=System.Environment.TickCount;

'Calculas el tiempo.
int Tiempo = mFin-mInicio;'Te devuelve el tiempo en milisegundos

-

de esta manera vas a poder ver donde tienes la perdida de tiempo.
quizas si haces algo de lo que te comenta rfog, revisa la programacion
quiza la manera de analizar la información que te manda la placa no sea
la mas optima, aunque si estas en C# para CompactFramework, no te hara
mucha gracia ponerte a pasarlo a C++, pero bueno pa gustos colores.

¿goto? no por dios, eso no ehhhhh!!!!!!, jejeje



un saludo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida