Autor Tema: Visual Basic + Comunicación serie + base de datos  (Leído 12583 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado juanpavz

  • PIC12
  • **
  • Mensajes: 77
Visual Basic + Comunicación serie + base de datos
« en: 03 de Agosto de 2009, 22:02:01 »
Hola a todos
Tengo pensado desarrollar un proyecto con PIC en el cual leo algunos sensores y los envio por interfaz serial a la PC, hasta ahi no tendria problemas, pero ademas necesito poder guardar estos datos en una pequeña base de datos basicamente hacer una lectura por ejemplo cada hora, esto seria mas o menos asi: el programa envia cierto caracter y el PIC devuelve el valor actual del sensor y de manera similar con el resto de sensores, pero como los datos que envio son flotantes al enviarlos por interfaz serie llegan como una cadena de ASCII, estos deben convertirse a numero (espero q exista una función que haga esto). una vez almacenados en variables estas deben ser volcadas a la base de datos por ejemplo:
Fecha                Hora     Temperatura     .....
03/08/2009        15:00    17.5                 .....

Una vez logrado esto espero poder crear una pagina web en php que pueda graficar estos datos y colgarlos en un servidor ( un PIII ) para poder ver los datos en forma de gráficos a traves de internet.
Pero primero necesito poder crear la base de datos :shock:
Agradecería cualquier comentario, experiencia similar o aporte, no necesariamente tiene que ser en VB, tambien estuve pensando en JAVA.
Pero hay que evaluar pros y contras.
Saludos y gracias de antemano.
Hazlo o no lo hagas... Pero no lo intentes

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #1 en: 04 de Agosto de 2009, 21:39:28 »
una vez realicé un proyectico el cuál consistía en ir recibiendo registros de datos, como temperatura con su hora y fecha de captura, no llegué tan avanzado como en una base de datos, simplemente lo iba almacenando en texto plano en un solo archivo txt.

en tu caso habría que estudiar el funcionamiento de base de datos propiamente.



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #2 en: 05 de Agosto de 2009, 09:10:36 »
depende con que base de datos quieres trabajar
si fuera con una simple de access seria sencillo

Marca la referencia en visual para usar DAO
y creas una base de datos de access , tablas , y campos
depende de lo que necesitas, plantealo un poco mas claro
lo que tiene que ver con la base de datos y te doy una mano
El conocimiento se consigue a base de esfuerzo...

Desconectado juanpavz

  • PIC12
  • **
  • Mensajes: 77
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #3 en: 05 de Agosto de 2009, 09:41:47 »
Gracias por los comentarios.
Les comento que estuve indagando mas sobre el tema ya que será la primera vez que almacenaré datos en la PC.
Voy a tratar de aclarar el panorama, Tengo un sensor ds18b20 y 16f877 soy capaz de leer el valor del sensor y mandarlo via rs232, el valor flotante se envia como una cadena de ASCII (algo asi 17.50) ahora lo que nunca hice es recibir esta cadena y convertirla nuevamente a numero pero estoy seguro que esto no es nada nuevo. Este proceso debe repetirse cada hora, las 24 horas, entonces necesito que el programa se este ejecutando permanentemente y cada hora envie un comando mediante el cual el PIC le envie la temperatura, una vez recibida la cadena debe ser convertida a numero y almacenada en una base de datos, en realidad en una pequeña tabla con los campos fecha,hora y temperatura porque luego debe existir una aplicacion WEB que lea esta base de datos y grafique estos datos, estuve indagando y en PHP exite librerias para graficar.
el servidor sería un PIII que tengo ocioso.
Si logro esto pasaria a incrementar sensores como presion, humedad, etc.
Saludos
PD: Lo tambien estuve revisando es JAVA + RS232 + mysql + php
Hazlo o no lo hagas... Pero no lo intentes

Desconectado adrianv1

  • PIC10
  • *
  • Mensajes: 22
    • Make-a-tronik!!
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #4 en: 05 de Agosto de 2009, 17:28:44 »
yo tengo una posible solucion, no se si es la mejor pero creo que cumple con el objetivo. el lenguaje y el ide seria el de processing.

usando la libreria serial puedes obtener los datos por RS232, los guardas en variables y despues por medio de la funcion loadStrings() puedes mandar los datos a PHP por medio de la URL. La rutina de php deberia leer los datos que envio processing con la funcion $_GET y guardarlos en la base de datos. una ves en la base de datos solo toca dibujar las graficas.

te dejo algo de info acerca de las librerias y las funciones que deberias utilizar y un tuto que utiliza lo antes mencionado, espero te sea de ayuda.

http://processing.org/reference/libraries/serial/index.html     referencias de la libreria serial
http://processing.org/reference/loadStrings_.html    sintaxis de la funcion loadStrings()
http://www.learningprocessing.com/tutorials/php/    tuto antes mencionado
visita http://make-a-tronik.com blog dedicado a la tecnologia y electronica

Desconectado rodrigo_control2009

  • PIC12
  • **
  • Mensajes: 54
    • Blog  de la  Orden del  temple
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #5 en: 05 de Agosto de 2009, 22:33:21 »
Y  si  va  a  estar  enviando  datos  cada  1  hora  o  sea  24 en el día  no sera  mejor dejar  libre el puerto  e ir almacenando los datos en una eeprom externa ??  y  enviarlo una o dos  veces  al día ....
“El hombre ideal, sería persa de origen, árabe de religión, iraquí por cultura, hebreo por experiencia, cristiano por conducta, hindú por perspicacia, sufí por su estilo de vida, angélico por su moral y divino por sus ideas y conocimiento, destinado a la eternidad”

Desconectado juanpavz

  • PIC12
  • **
  • Mensajes: 77
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #6 en: 05 de Agosto de 2009, 23:36:02 »
Hola adrianv1 conozco algo sobre processing (los programas de ejemplo + arduino), pero estuve revisando los links y no tengo claro de que manera me puede ayudar ya que el codigo debe ser del lado del servidor y creo que los comandos que revise son para enviar datos a una web como cliente (no se si estoy hablando piedras :?).
y rodrigo lamentablemente debo enviar esos datos cada hora ya que la informacion de la temperatura debe estar actualizandose constantemente en la todavia lejana pagina web que debo hacer.
Hazlo o no lo hagas... Pero no lo intentes

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #7 en: 06 de Agosto de 2009, 01:25:07 »
Precisamente, hace poco que hice un proyecto parecido :).

Bien, el tema de lectura de datos lo estás dando por hecho y, aunque no lo mencionas, por el título supongo que usarás VB. Para el sitio web, mencionas PHP, entonces, lo que toda es usar un tipo de base de datos que pueda ser accedido tanto por VB como desde PHP. Aquí hay varias opciones, desde usar un simple archivo de texto (PHP tiene funciones muy potentes para manejo de cadenas) hasta algún servidor de base de datos como MySQL. ¿Qué tan grande o potente piensas que llegue a ser tu aplicación?

En la aplicación que mencioné utilicé VB, una base de datos Access y ASP. Usar BD Access desde VB es bastante sencillo, de ahí habría que buscar cómo manejarla desde PHP, no lo he hecho pero no creo que sea complicado (para PHP siempre he preferido no usar cosas de MS :P).

Yo usaría algo como:

PIC ->RS232 -> VB -> Access/CSV/SQLite -> PHP -> Web
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado juanpavz

  • PIC12
  • **
  • Mensajes: 77
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #8 en: 06 de Agosto de 2009, 11:13:05 »
Gracias por los comentarios.
Geo me agradaria mas usar mysql, pero no cierro ninguna posibilidad mas bien quisiera saber como hacias la lectura de los sensores en VB para tener una referencia, ya que como comente no tengo mucha experiencia recibiendo cadenas (Solo una vez hice algo asi pero en labview pero las cajitas facilitan mucho la tarea)
saludos.
Hazlo o no lo hagas... Pero no lo intentes

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #9 en: 06 de Agosto de 2009, 20:25:44 »
2 preguntas:

1.-¿que lenguaje usaras para el pic?
2.- ¿ese valor flotante de donde viene?

en base a 2, te pregunto porque si por ejemplo el valor de la temperatura lo obtienes de forma digital, entonces es mejor que lo transmitas asi y en la PC lo llevas a flotante (menos tiempo perdido pal pic)

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado juanpavz

  • PIC12
  • **
  • Mensajes: 77
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #10 en: 06 de Agosto de 2009, 23:40:02 »
Hola PalitroqueZ, en este proyecto el tiempo de lectura no es critico, el PIC puede tomarse su tiempo, en este caso pienso leer un ds18b20 y como yo progamo en CCS, encontre una libreria que me da el valor flotante listo para almacenar en una variable, pero si revisamos la libreria de seguro tendre acceso a los bytes que se leen del sensor, pero mi idea a futuro es agregar mas sensores.
Lo que quisiera saber si alguien convirtio un valor flotante que llega por el puerto serie en VB u otro lenguaje a una variable flotante (redundante  :?).
Saludos   
Hazlo o no lo hagas... Pero no lo intentes

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #11 en: 07 de Agosto de 2009, 19:34:57 »
he aquí un par de programillas que hice y que los adapté para los float (siempre me las he arreglado para transmitir enteros)

en el pic:

Código: C
  1. #include <16F877.h>
  2.    #use delay(clock=4000000)
  3.    #fuses NOCPD,NOWDT,BROWNOUT,PUT,XT,NOWRT,NOLVP,NODEBUG,NOPROTECT //0x3F71
  4.    #use rs232(baud=9600, BITS=8, PARITY=N, xmit=PIN_C6, rcv=PIN_C7)
  5. //************************************************************************************
  6.    #define RAND_MAX 1023
  7.    #include <STDLIB.H>
  8.    
  9.    int1  bFloat;
  10.    char  cKeypress;
  11.    float fFlotante;
  12.    
  13. //************************************************************************************
  14. // RUTINA PRINCIPAL
  15. //
  16. //************************************************************************************
  17. #int_rda
  18. void serial_isr() {
  19.   cKeypress=0x00;
  20.   if(kbhit()){
  21.     cKeypress=getc();
  22.     if(cKeypress==0x61){ // pregunta por el caracter a
  23.       bFloat=1;
  24.       cKeypress=0x00;
  25.       disable_interrupts(int_rda);
  26.     }
  27.   }
  28. }
  29.  
  30. //***************************************//
  31. #zero_ram
  32. void main(){
  33.    output_a(0);
  34.    output_b(0);
  35.    set_tris_a(0x0);
  36.    set_tris_b(0x0);
  37.  
  38.    enable_interrupts(int_rda);
  39.    enable_interrupts(GLOBAL);
  40.  
  41.    while (TRUE){
  42.       if(bFloat){ // primer if
  43.          disable_interrupts(int_ad);
  44.          fFlotante= (5.0 * rand())/ 1023.0;
  45.  
  46.          printf("%g",fFlotante);
  47.          enable_interrupts(int_rda);
  48.          bFloat=0;
  49.       } // fin primer if
  50.    }  // fin while
  51. } // fin Main()
  52. //*************************************************************

le puse que generara un número aleatorio entre 0 y 1023 y luego enviará un número flotante entre 0 y 5 por puerto serial SIEMPRE Y CUANDO el PC le envíe el carácter a

Código: Visual Basic
  1. Option Explicit
  2.  
  3. Dim sValor_Recibido As String
  4. Private Sub Command1_Click()
  5.     MSComm1.Output = "a"
  6. End Sub
  7.  
  8. Private Sub Form_Load()
  9.     MSComm1.InBufferSize = 4
  10.     MSComm1.RThreshold = 4
  11.     MSComm1.OutBufferSize = 1
  12.     MSComm1.CommPort = 2
  13.     If MSComm1.PortOpen = False Then
  14.         MSComm1.PortOpen = True
  15.     End If
  16. End Sub
  17.  
  18.  
  19. Private Sub Form_Unload(Cancel As Integer)
  20.  If MSComm1.PortOpen = True Then
  21.      MSComm1.PortOpen = False
  22.  End If
  23.  Unload Me
  24.  End
  25. End Sub
  26.  
  27. Private Sub MSComm1_OnComm()
  28.   On Error GoTo acA
  29.  
  30.   If comEvReceive Then
  31.     sValor_Recibido = MSComm1.Input
  32.     Text1.Text = sValor_Recibido
  33.   End If
  34.   Exit Sub
  35.  
  36. acA:
  37.   MsgBox Err.Description, vbCritical, "Error en el evento onComm:"
  38.   Exit Sub
  39. End Sub

aqui el software hecho en vb6.0 envía el carácter a y luego a modo de "interrupción" llega el float que guardaré como string.

claro que el programilla está un poco crudo, falta procesar bien este dato que llega y ajustar el ancho del dato acumulado en el buffer de UART antes de que se active el evento receive, pero por allí va la idea de como orientarse.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #12 en: 07 de Agosto de 2009, 23:23:10 »
Yo hice algo parecido en Borland Builder c++ (del lado de la Pc), aunque también sería parecido en Visual c++. En c++ las cadenas de caracteres las podes convertir en float con la función atof().
También me hice un script php que recibía los datos que le enviaba desde builder.
Para trasmitir los datos hacia un post,  y los recolectaba con un script php. Para hacer esto lo único que se me ocurrio fue que el software cree un archivo en javascript, y luego lo ejecutaba, y éste haciendo el post. Entonces el script php  lo guardaba en la base de datos mysql.
Desafortunadamente no pude hacer que el software me envía el post directamente, sin crear el archivo intermedio en javascript.

Desconectado adrianv1

  • PIC10
  • *
  • Mensajes: 22
    • Make-a-tronik!!
Re: Visual Basic + Comunicación serie + base de datos
« Respuesta #13 en: 08 de Agosto de 2009, 01:47:00 »
yo ya tengo un ejemplo funcional de lo que te comentaba con processing y PHP, pero ando muy apurado con la universidad, mañana sabado que tenga un tiempecito lo posteo por aca.  :-/
visita http://make-a-tronik.com blog dedicado a la tecnologia y electronica


 

anything