Programación Específica > Programación en C

 Rs232 Con Rts/cts

(1/2) > >>

jpaler:
Hola a todos !!!

Amigos, actualmente estoy comunicando un 16f877 con el pc a traves de
una aplicacion q hice en java, hasta ahora solo utilizo los pines Tx y Rx.

Algunas veces funciona bien y otras no.
Me he dado cuenta q todo es problema del sincronismo:

La aplicacion le envia un codigo y unos parametros para q el pic realize una
tarea y espera por la respuesta del pic.
La aplicacion no sabe cuando exactamente el pic ha terminado de procesar
o si sigue ocupado todavia.

Me he dado cuenta q necesito usar las banderas del puerto serial q indican
cuando el dispositivo esta listo para recibir/leer datos del puerto.
Creo q esas banderas se llaman algo asi como: RTS o CTS, no se exactamente.

Amigos, me gustaria q alguien me hechara una manito para poder sincronizar
el pic con el pc.

MUCHAS GRACIAS !!!

Huguen_aus_Tirol:
Hola Jpaler! No se exactamente como funciona la comunicación usando los protocolos, pero en una ocación me valí de dos líneas, una del PC al PIC y la otra en sentido contrario (no recuerdo cuales fueron, debería ver en el esquemático), desde el PC informaba al PIC que tipo de bloque de datos se le enviaba, y desde el PIC enviaba una señal para indicar que este estaba listo para recibir más datos.
Lo había hecho en VB y las líneas las controlaba por programa, no tube problemas.

Saludos

jpaler:
gracias huguen... pero nose...

...,aun tengo muchas dudas de q es exactamente lo q tengo q hacer, mira esto:


--- Código: Text --- //FUNCCION EN JAVA Q ENVIA DATOS AL PTO. SERIALpublic synchronized void enviarCaracter( char c ) {     this.puerto = ( SerialPort )this.idPuerto.open( this.usuario, 2000 );    this.flujoSalida = this.puerto.getOutputStream();    this.puerto.setSerialPortParams( this.transf, this.bitsDat, this.bitsPara, this.pari);     this.flujoSalida.write( ( int )c );    this.flujoSalida.close(); }  

como te puedes dar cuenta, asi saque un pin del pic y lo ponga en uno
para avisarle a la aplicacion q aun no es tiempo de leer los datos...
...,en la funcion enterior, no veo por ningun lado lo del RTS o CTS.
es mas, no se de donde pueda leerlos para saber si estan en 0 o en 1.

....

lalo_soft:
Mira yo siempre he usado solo RX Tx y los problemas de sincronismo los he resuelto potenciando el contenido de la trama de datos.

1.- Todos los comandos,parametros y datos numericos son en ascii.

2.-Huso el caracter espacio para separar comando, parametros y datos en el mismo string.

3.-Le agregro el caracter CR LF (0x0D,0x0A) al final para indicar el temino del string no importando su largo
 
4.-La creaccion de un Buffer de recepcion en ambos lados sincronisado con la llegada de los caracteres CR LF para recien entonces procesar los mensajes.

He usado por años esta tecnica de comunicacion entre microcontroladores(pic,Avr,Arm) y un Pc, ocupando solo los pines Rx Tx y me ha dado excelentes resultados.

jpaler:
amigos, miren lo q he encontrado:

--- Código: Text ---                 PTO. SERIE (DTE)        Pin   Nombre   Sentido   Significado        1   GND      0V        2   TxD   salida   Salida de datos        3   RxD   entrada   Entrada de datos        4   DTR   salida   Preparado para recibir        5   CTS   entrada   Vía libre para enviar        6   V      +12V  ...,segun eso, creo q solo tengo q utilizar el pin de CTS y lo unico q tendria q
hacer es tirar otro cable desde el pic hasta el CTS del pc y ponerlo en
cero (0) cuando el pic este trabajando o ponerlo a uno (1) cuando el pic
ha dejado de realizar la operacion y esta listo para recibir mas datos.

...,y tambien he encontrado como revisar el pin de CTS en java, miren:

--- Código: Text --- public abstract void setFlowControlMode(int flowcontrol)     Sets the flow control mode.     Parameters:        flow - control Can be a bitmask combination of         * FLOWCONTROL_NONE: no flow control        * FLOWCONTROL_RTSCTS_IN: RTS/CTS (hardware) flow control for input        * FLOWCONTROL_RTSCTS_OUT: RTS/CTS (hardware) flow control for output        * FLOWCONTROL_XONXOFF_IN: XON/XOFF (software) flow control for input        * FLOWCONTROL_XONXOFF_OUT: XON/XOFF (software) flow control for output  
...claro q no se como configurar el puerto, solo hay dos opciones para utilizar el CTS:
        * FLOWCONTROL_RTSCTS_IN: RTS/CTS (hardware) flow control for input
        * FLOWCONTROL_RTSCTS_OUT: RTS/CTS (hardware) flow control for output
¿como configuro el puerto, con la IN o con la OUT?

ademas, con configurarndo bien el puerto serial, estoy seguro q él mismo
esperara a q el pic le diga q se ha desocupado y q ya puede ir a leer los datos
q el pic le va a entregar.

....
amigos, regalenme su opinion y diganme si todo lo q dije del CTS tiene sentido o no.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa