Autor Tema: ¿Como debe recibir un dato por el puerto Serial?  (Leído 3687 veces)

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

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
¿Como debe recibir un dato por el puerto Serial?
« en: 02 de Septiembre de 2006, 18:38:23 »

     Hola:
           
     Hola estado trabajando con el puertos serial. Con el PIC y con visual Basic.

      El manejo de dato se hace correctamente.

     El problema es que cuando mando un dato por Visual Basic => Esta sale del puerto en formato ASCCI, creo, Si mando un dato por ejemplo, el cero, "0" este llega con un 48 mediante la funcion getc().

Código: C
  1. if(kbhit()){
  2.  
  3.         Dato1 = getc();
  4.         Dato2 = fgetc();
  5.         Dato3 = getch();
  6.         Dato4 = getchar();
  7.  
  8.  
  9.                 lcd_gotoxy(1,1);
  10.                 printf(LCD_PUTC,"%u   %u        ",Dato1,Dato2);
  11.  
  12.                 lcd_gotoxy(1,2);
  13.                 printf(LCD_PUTC,"%u   %u        ",Dato3,Dato4);
  14.  
  15.                 delay_ms(5000);
  16.                 delay_ms(5000);
  17.  
  18.      }
       
« Última modificación: 02 de Septiembre de 2006, 18:40:13 por pantera »
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Deimos

  • Visitante
Re: ¿Como debe recibir un dato por el puerto Serial?
« Respuesta #1 en: 02 de Septiembre de 2006, 20:06:02 »
Efectivamente. Todo lo que serialices en VB por el comm serie del PC saldrá en ASCII, si utilizas el getc(). Para hacer pruebas puedes usar el programa TERMINAL, que está en todos los windows. Si mandas la A mayúscula, te saldrá el 65 decimal, B 66d, C 67d y así.

Puedes consultar la tabla ascii en http://www.asciitable.com/

La verdad es que no se si tu mensaje es una pregunta, un problema o un descubrimiento jajajaja pero en definitiva, si mandas un dato en VB por comm serie, el pic lo recibe en ascii

espero haber sido de ayuda

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: ¿Como debe recibir un dato por el puerto Serial?
« Respuesta #2 en: 02 de Septiembre de 2006, 20:52:00 »
 Si era una pregunta , jeee.

Pero mas bien lo que me interesa hacer es mandar un dato entero [0-255] .

Mira, lo que quiere hacer es escribir un dato entero desde una caja texto en visual basic. Y recibir el dato entero [Ya se enviaria en ASCII]. Y esa dato mandarlo a un PWM dentro del micro.

El codigo de visual basic es el siguiente:
Código: Visual Basic
  1. Private Sub Texto_a_Enviar_Click()
  2. Dim texto_salida As Variant
  3.  
  4. texto_salida = CByte(Texto_Mensajes.Text)
  5. texto_salida = CStr(texto_salida)
  6.  
  7. On Error GoTo Error_Enviando
  8. MSComm1.Output = texto_salida
  9. GoTo salir
  10.  
  11. Error_Enviando:
  12.      Valor_MsgBox = MsgBox(" Error al intentar enviar el texto" & Chr(13) & Chr(10) & Chr(10) & "Descripcion:" & Err.Description, vbCritical, "ERROR")
  13.    Resume salir
  14.    
  15. salir:
  16. End Sub

y el codigo en  el pic es:

Código: C
  1. while(TRUE){
  2.         char Dato1,Dato2,Dato3,Dato4;
  3.  
  4.      if(kbhit()){
  5.  
  6.         Dato1 = getc();
  7.        
  8.         Dato2 = fgetc();
  9.         Dato3 = getch();
  10.         Dato4 = getchar();
  11.  
  12.  
  13.                 lcd_gotoxy(1,1);
  14.                 printf(LCD_PUTC,"%c   %c        ",Dato1,Dato2);
  15.  
  16.                 lcd_gotoxy(1,2);
  17.                 printf(LCD_PUTC,"%c   %c        ",Dato3,Dato4);
  18.  
  19.                 delay_ms(5000);
  20.                 delay_ms(5000);
  21.  
  22.         }}


Esto en Labview se hace sumamente facil pero tengo la necesidad de hacerlo en Visual Basic 6
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿Como debe recibir un dato por el puerto Serial?
« Respuesta #3 en: 02 de Septiembre de 2006, 21:19:01 »
Hola pantera.
¿Y cual es el problema?
Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: ¿Como debe recibir un dato por el puerto Serial?
« Respuesta #4 en: 02 de Septiembre de 2006, 23:39:50 »
Mira ya solucione.

Mediante la siguien forma

Código: Visual Basic
  1. Private Sub Texto_a_Enviar_Click()
  2. Dim texto_salida As Variant
  3.  
  4. texto_salida = CByte(Texto_Mensajes.Text)
  5. texto_salida = Chr(texto_salida)
  6.  
  7. On Error GoTo Error_Enviando
  8.  
  9. MSComm1.Output = texto_salida
  10.  
  11. GoTo salir
  12.  
  13. Error_Enviando:
  14.      Valor_MsgBox = MsgBox(" Error al intentar enviar el texto" + Chr(13) + Chr(10) + Chr(10) + "Descripcion:" + Err.Description, vbCritical, "ERROR")
  15.    Resume salir
  16.    
  17. salir:
  18. End Sub

Lo que no comprendia es que tenia que mandar un caracter [0-255].

Ahora si mando un 48 [0 en ascii], manda un carcter "0". Y el microcontrolador recibe el numero 48 .

Ahora puedo mandar datos int8  [0-255].


¿Lo que pregunto ahora es si puedo mandar datos mas grandes a 255, Quizas un int16 ?
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿Como debe recibir un dato por el puerto Serial?
« Respuesta #5 en: 03 de Septiembre de 2006, 00:22:20 »
Por supuesto que puedes!

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Deimos

  • Visitante
Re: ¿Como debe recibir un dato por el puerto Serial?
« Respuesta #6 en: 03 de Septiembre de 2006, 06:59:16 »
Exacto. El valor que tu necesitas lo mandas en ascii, es decir, que en vez de mandar el valor que necesitas, lo ke tienes que mandar es el ascii y ya está, una vez en el micro puedes montar un diccionario que traduzca el ascii que recibe al valor que tu quieres. Esto te lo digo porque veo que lo que quieres hacer es controlar una pwm mediante un pc. Tu el valor de pwm lo envias al micro y este es el que genera la pwm.

Otra manera es montar el diccionario dentro del PC en VB. O sea, que si calculas una pwm le mandas ese valor al micro en ascii. Muy fácil ya verás. Recuerda que tienes que añadir al VB la libreria para comunicar via seria. Te saldrá un icono que representa un teléfono.

Venga herman@, que halla mucha suerte

Dewsss


 

anything