Recibir datos protocolo pelco rs232/rs485

Hola amigos, espero me puedan ayudar...

Estoy tratando de leer la información de un puerto serial mediante un pic... pero no lo logro.... me explico :

Tengo un DVR, con una salida RS485, a esta salida le he conectado un conversor RS485/RS232

http://www.bestsecurityperu.com/portal/index.php?route=product/product&product_id=375

Al final tengo un puerto serial RS232 que sale del DVR gracias al conversor... lo que necesito es leer lo que envía el DVR que son señales para el PTZ (Protocolo PELCO-D), el DVR ya esta configurado los bauds y demás opciones :

Configuración en el DVR
********************
Protocolo : PELCO-D
Baud rate : 9600
Data bit : 8
Stop bit : 1
Verify : ODD
Address : 1
Auto cruise : OFF

El PIC16F628 que va recibir la información del DVR, el programa en PICBasic Pro es este.
Y no logro que funcione. Adjunto diagrama del circuito.

PICBasic Pro
Código:
@ DEVICE XT_OSC, MCLR_OFF, PWRT_ON, WDT_OFF, LVP_OFF,PROTECT_OFF
include "modedefs.bas"
DEFINE  OSC 4

' ////**** Setup PortA ****////
D_Bus   var PortA  

TE      var D_Bus.4    

Ser_Pin var D_Bus.5     

D_Bus   =   %00010000  

TrisA   =   %00100000   

CMCON = 7  

 

' ////**** Setup PortB ****////
A_Bus   Var PortB       ' PortB = encoder 8-bit address bus
A_Bus   =   $00         ' Power up encoder address bus = 0
TrisB   =   $00         ' PortB = outputs

 

' ////**** Set Baud Rate ****////
Baud    con 16572       ' Define serial baud-rate = 4800 N,8,1

 

' ////**** Utility Variables ****////
stx  Var byte
stx = $00
adr  Var byte
adr = $00
cmd1 Var byte
cmd1  = $00
cmd2 Var byte
cmd2 = $00
dat1 Var byte
dat1 = $00
dat2 Var byte
dat2 = $00
chks Var byte
chks = $00
tmp  Var byte
tmp = $00

 

'ESTE ES MI PROBLEMA... NO LOGRO QUE RECIBA LOS DATOS... INICIO

Begin: 

    serin2 PORTA.5,Baud,5000,Re_Set,[WAIT($FF),stx,adr,cmd1,cmd2,dat1,dat2,chks]
    'SEGUN DEFINICION DE PELCO-D LA SUMA DE adr,cmd1,cmd2,dat1,dat2 DEBE SER
    'IGUAL chks CON ESTO DEBERIA PASAR... PERO NADA
    tmp = adr + cmd1 + cmd2 + dat1 + dat2
    if (tmp <> 0) and (tmp = chks) then goto RUTINA
    goto BEGIN 

 


'ESTE ES MI PROBLEMA... NO LOGRO QUE RECIBA LOS DATOS... FIN


Re_Set:     

    high TE 

    goto Begin  

                        
    goto Begin

   'RUTINA QUE DEBE HACER UNA VEZ QUE RECIBA LA SEÑAL DEL PUERTO RS232

   '.................................

end
Aqui se explica como funciona el protocolo PELCO-D



http://www.commfront.com/RS232_Examples/CCTV/Pelco_D_Pelco_P_Examples_Tutorial2.HTM#3


En verdad mucho les agradece me des luces que que esta mal en mi programa...


Desde ya muchas gracias.
Martin.
 

Adjuntos

  • diagrama.jpg
    diagrama.jpg
    16.2 KB · Visitas: 27
Última edición por un moderador:
Atrás
Arriba