el 09-30-2014 04:56 PM
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
el 09-30-2014 10:38 PM
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
el 10-01-2014 09:03 AM
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
el 10-01-2014 09:13 AM
¿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???
el 10-01-2014 09:17 AM
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
el 10-02-2014 03:12 PM
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]
10-03-2014 12:50 PM - editado 10-03-2014 12:51 PM
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