Leer puerto serie sin el MSCOMM

Estoy desarrollando un programa que lee datos de un puerto serie y los representa en una gráfica, pero en el futuro tendré que añadirle un módulo más para que lea de un puerto USB. Me gustaría saber si existe otra manera de leer un puerto que no sea a través del control MSCOMM, he leído por ahí que se puede tratar al puerto como si fuera un fichero en el que escribes y lees, pero no se por donde empezar y en la ayuda de Visual solo aparecen referencias al control MSCOMM para realizar lecturas de puerto. Si comoces alguna solución se agradecerá... Gracias por tu tiempo.
Respuesta
1
Existe otro método de utilizar el puerto comm sin el control MSCOMM, es con API, pero es mucho código para tan solo simular un control MSCOMM, yo te diría que lo utilices, en todo caso utiliza solo su evento OnCom para toma de datos y en otra rutina te encargas de generar la gráfica con los datos que te lleguen, si en el futuro vos no utilizas el comm y lees desde USB, la rutina gráfica es la misma, solo cambias el origen de los datos.
Yo tengo varias aplicaciones utilizando el puerto serie, y es lo más sencillo y efectivo, probé con API pero no existe diferencia alguna.
Si quieres realizar bucles continuos sin que te ocupe todo el tiempo de CPU, tienes
varias opciones, la más sencilla es utilizar un ojeto Timer, a eso objeto le das la das la cantidad de milisegundos que quieres que transcurra entre eventos y ahí pones la rutina gráfico o toma de datos, el problema es que con suerte y sin hacer nada en la maquina te puede dar 20 eventos por segundo, existen unos métodos por API para generar objetos Timer un poco más precisos, si no te da con esta velocidad tendrías que utilizar la función Do Loo para generar un bucle pero utilizando la instrucción DoEvents, te doy un ejemplo:
Supongamos que dibujamos unas lineas en un picturebox con unos datos que tengamos en una matriz de 1000 datos
Do
For x = 1 to 1000
Picture1.Line (coordenadas)
Next
Loop
Esta rutina demandada todo el tiempo del CPU y la aplicación queda colgada. Vamos a utilizar el DoEvents
Do
For x = 1 to 10000
Picture1.Line (coordenadas)
Next
DoEvents
Loop
De esta manera, luego de dibujar una serie de datos en el picture, la aplicación le entrega el control a windows para atender otras funciones y luego sigue la rutina, de esta manera la plaicacion te queda activa y vos podes seguir utilizando otras opciones en el programa, ya no se cuelga.
Lo ideal es depurar bien la parte gráfica y generar un componente activeX que te haga esa función, crearías un OCX solo con la parte gráfico, eso no le saca casi nada de recursos a tu aplicación, es un método más efectivo.
Cualquire duda estoy a tu disposición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas