Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

labview no recibe datos rs232

estoy tratando de comunicar labview con un pic 16f877a, el problema que tengo es que al enviar la respuesta (Pic-labview) al comando recibido (labview-pic) en labview no me aparece nada adjunto programa labview y programacion del pic en c

Descargar todos
0 kudos
Mensaje 1 de 7
5.359 Vistas

Hola Pancho..

 

Si presionas el botón de highlight execution,, ¿Obtienes algun error a la sallida de configuración del puerto serial?

Ya intentaste comunicarte con el dispositivo desde MAX o con un VI sencillo de LabVIEW. 

 

Te recomiendo sigas este tutorial y nos comentes el resultado...  

 

Exito en tu aplicación

0 kudos
Mensaje 2 de 7
5.351 Vistas

gracias por responder marisol

    ejecute el programa con highlight execution y no me dio errores, el programa lo estoy corriendo a traves de puertos virtuales con el programa "configure virtual serial port driver" de lo que si me di cuenta es que al parar la aplicacion el programa sigue anclado al puerto com asignado y no lo cierra, como lo puedo solucionar? al parecer visa close no me lo cierra

0 kudos
Mensaje 3 de 7
5.339 Vistas

¿Estás ocupando algún convertidor serial USB???

 

Alguna vez me paso que mi convertidor en lugar de "convertir" el protocolo... no lo enviaba completo, cortaba algunos bytes... este dispositivo era de muy bajo costo. ¿Podrías intentar con otro convertidor?

 

Una vez configurado el puerto virtual en MAX si corres el programa de abajo... recibes alguna respuesta???

 

Capture.JPG

 

 

0 kudos
Mensaje 4 de 7
5.336 Vistas

Por cierto... te recomendaría hacer un loopback test para ver si tu puerto está funcionando adecuadamente.... hay que colocar un cablecito en tu terminal serial uniendo los pines dos y tres... y después correr el programa de lal liga de abajo

Aquí la info

0 kudos
Mensaje 5 de 7
5.334 Vistas

hola de nuevo, solucione el problema, me funciona a medias presiono el  botton automatico y no tengo problemas con la comunicacion, pero al presionar el boton horario me da un error y debo parar la aplicacion adjunto imagen de error, programa labview y la programacion pic la dejare debajo

 

 

 

'DEFINE OSC 4
@ DEVICE PIC16F877A
@ DEVICE PROTECT_OFF,CPD_OFF,WDT_OFF,PWRT_ON,BOD_OFF,LVP_OFF

INCLUDE "modedefs.bas" ;incluyen los modos de comunicación


TRISA = $FF
TRISB = $F1
TRISC = $BF
TRISD = $F3

serial VAR BYTE ;variable de almacenamiento de 255

releF VAR portd.2 ;nombres para los pines

led var portd.4
x var byte

entra var portb.0
salida var portb.1
SYMBOL TxD = PORTC.6
SYMBOL RxD = PORTC.7

inicio:
; Inicializar los puertos
    PORTB=$00
    PORTC=TRISC
    PORTD=TRISD
;3 parpadeos del led que indica funciona
    FOR x =1 TO 3
    HIGH led
    PAUSE 200
    LOW led
    PAUSE 200
    NEXT
     PAUSE 500
recibir:
pause 1000
    SERIN RxD,T9600,serial ; comparar con pruebaredes
    SELECT CASE serial
        CASE "A"    ; A
            GOTO automatico
        CASE "B"    ; B
            GOTO horarioapa
        CASE "C"    ; C
            GOTO horarioenc
             
       CASE ELSE
            SEROUT TxD,T9600,["comando   invalido.",13,10]
    END SELECT
    PAUSE 500   ; Retardo para estabilizar el puerto
    goto recibir

automatico:
  pause 1000
     SEROUT TxD,T9600,["control automatico.",13,10]
    if entra=1 then
     high salida
     SEROUT TxD,T9600,["luminaria encendida",13,10]
      PAUSE 1000
     goto recibir
      else
      low salida
       SEROUT TxD,T9600,["luminaria  apagada.",13,10]
        PAUSE 1000
    goto recibir
     endif
     
horarioapa:
     SEROUT TxD,T9600,["control    horario.",13,10]
     low salida
      PAUSE 1000
        SEROUT TxD,T9600,["luminaria  apagada.",13,10]
         PAUSE 1000
    goto recibir

horarioenc:
       SEROUT TxD,T9600,["control    horario.",13,10]
        PAUSE 1000
       high salida
        PAUSE 1000
     SEROUT TxD,T9600,["luminaria encendida",13,10]

 

Descargar todos
0 kudos
Mensaje 6 de 7
5.313 Vistas

Hola:

 

La estructura que tienes en el programa no es muy correcta: Observa que tu programa puede escribir varios comandos simultáneamente, y también simultáneamente está leyendo.

 

Como te ha puesto MarisolM más arriba, el proceso de lectura del puerto serie suele ser el siguiente: Escribir un comando, esperar la respuesta y leer esta respuesta.

No debes estar leyendo continuamente y escribiendo varios comandos simultáneamente.

 

Saludos y suerte... moisan

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 7 de 7
5.290 Vistas