Autor | Mensaje |
---|
| Asunto: USB ----> RS-232. Majenar los bits RTS, DTR, CDC... indep Publicado: 10 Jul, 2009 - 06:03 |
| Nuevo en el Foro

Registrado: 07 Abr, 2009
Mensajes: 10
|
| Hola amigos,
me compré unos convertidores de USB a RS-232 y cuando quise usarlos como si estuviera comunicándome con una UART me llevé la sorpresa de que no entiende.
Alguno de vosotros sabe cómo manejar los bits RST, DTR, DCD, etc... del convertidor USB a RS232 de forma directa con algún lenguaje de programación?
He intentado de todas las formas posibles haciendo Inp y Out, pero "nanay" de la china.
Saludos. |
| |
|
| |  | | Asunto: Re: USB ----> RS-232. Majenar los bits RTS, DTR, CDC... i Publicado: 10 Oct, 2009 - 05:15 |
| Nuevo en el Foro

Registrado: 28 Jun, 2007
Mensajes: 1
|
| Hola qué convertidor compraste?
yo actualmente estoy intentando trabajar con el FT232RL, aparentemente este circuito integrado de montaje superficial de 28 pines (SOP28) requiere muy pocos componentes externos para funcionar; tal vez buscale información en la pagina del FTDI....
Hope it helps!
Lenin
Oceano escribió: Hola amigos,
me compré unos convertidores de USB a RS-232 y cuando quise usarlos como si estuviera comunicándome con una UART me llevé la sorpresa de que no entiende.
Alguno de vosotros sabe cómo manejar los bits RST, DTR, DCD, etc... del convertidor USB a RS232 de forma directa con algún lenguaje de programación?
He intentado de todas las formas posibles haciendo Inp y Out, pero "nanay" de la china.
Saludos. |
| |
|
| |  | | Asunto: Re: USB ----> RS-232. Majenar los bits RTS, DTR, CDC... i Publicado: 20 Mar, 2010 - 01:13 |
| Nuevo en el Foro

Registrado: 07 Abr, 2009
Mensajes: 10
|
| Ya he encontrado una solución para manejar los Bits de forma independiente en un FTDI (FT232xx o su homónimo PL232xx):
Salidas: DTR - RTS
Entradas: CTS - DSR - (RI*) - DCD
* ("RI" sólo es compatible con la UART (Com[x]) que viene en el PC; en los FTDI no suele tener implementada esta patilla, porque sólo se usan en los antiguos Modem)
He comprobado la frecuencia máxima de cambio de estado con un osciloscopio. Si pones a cambiar el estado sólo una de las salidad (DTR ó RTS) se obtiene una frecuencia máxima de 166 Hercios. Y si usas los dos a la vez (DTR y RTS), la frecuencia es de 85 hercios. Esto es muy pobre, y para lo que necesitaba no me es factible, pero comunico los resultados por si a alguien le encuentra alguna función a todo esto.
El programa está escrito en FreeBasic. No sé cómo se hace en otros lenguajes de programación. Por si alguien no puede acceder al zip que adjunto, copio aquí los dos programas.
Hace parpadear dos LED conectados al DB9 del FTDI (también es válido para la UART del PC, pero hay otras formas mucho más sencillas de manejarlo, directamente con la instrucción "Out puerto, dato" [has de abrir el puerto de comunicaciones previamente con 'Open com "com1:2400,8,n,1,rs,ds,cd" as #1' si estás en plataformas de SO de 32 ó 64 bits como el Win XP; en win98 no hace falta abrir el puerto porque el kernel del SO es de 16 bits, es decir, tipo msdos] y puedes alcanzar más de 20KHz de parpadeo). Las conexiones están en el JPG que adjunto. En pantalla no sale nada porque se trata de ver el parpadeo de los LEDs. Antes de ejecutar el programa has de averiguar en qué puerto Com está tu FTDI; lo puedes encontrar en: Inicio > Panel de Pontrol > Sistema > Hardware > Administrador de Dispositivos > Puertos Com & LPT > y pulsas en el símbolo '+', ahí verás la referencia del puerto donde esté. Si quieres tb puedes cambiar el Com a otro que tu quieras mientras esté libre, pulsando con el botón derecho y le das a "Propiedades" y después pulsas en la pestaña "Configuración del puerto". Pulsas sobre el botón "Opciones avanzadas" y verás abajo de esa ventana que te permite cambiar el Com a otro puerto si está libre.
En cualquiera de los dos programas has de pulsar "Escape" para salir.
Pines:
RTS -----> patilla 7 del DB9
DTR -----> patilla 4 del DB9
Masa ----> patilla 5 del DB9
Manejo de RTS y DTR:
-----------------------
#Include "windows.bi"
#Include "file.bi"
Dim Letra As String
Dim h As HANDLE
Dim ComX As Integer
Dim Puerto As String
Screen 9
Locate 10,1: Input "Escribe solo el -numero- del puerto COM donde tengas tu FTDI. COM:"; ComX
Cls
Locate 10,1
Print "Observa el cambio de estado de los LED. Ha de parpadear"
Print "primero uno y luego el otro, un segundo de tiempo cada uno."
Print
Print "Pulsa 'Escape' para salir. Igual tarda 2 segundos en tener efecto"
Print "hasta finalizar la temporizacion."
Puerto="Com"+Str(ComX)
Open Com Puerto+":9600, N, 8, 1, CS, DS, RS, CD" As #1
' El valor 9600 puede ser cualquier otro valor porque no estamos haciendo comunicaciones asincronas.
While Letra <> Chr(27)
Letra=InKey()
h = Cast(HANDLE, FileAttr( 1, fbFileAttrHandle ))
EscapeCommFunction( h, SETDTR ) ' DTR=1
Sleep 500
EscapeCommFunction( h, CLRDTR ) ' DTR=0
Sleep 500
EscapeCommFunction( h, SETRTS ) ' RTS=1
Sleep 500
EscapeCommFunction( h, CLRRTS ) ' RTS=0
Sleep 500
Wend
Close #1
End
---------------------------------------------
Y ahora el programa para leer las entradas. Si las patillas de entrada (CTS - DSR - DCD) están sueltas lo interpreta como un 1. Hay que llevarlas a masa para que se ponga a cero. Los resultados podrás leerlo en el monitor.
Patillaje de entradas:
CDC -----> patilla 1 del DB9
DSR -----> patilla 6 del DB9
CTS -----> patilla 8 del DB9
RI -----> patilla 9 del DB9 (opcional)
Masa ----> patilla 5 del DB9
El programa está escrito en FreeBasic, no sé cómo se hace en otros lenguajes de programación. En el ZIP adjunto los ficheros fuente y ejecutable.
--------------------------------------
#Include Once "windows.bi"
Dim Letra As String
Dim hCom As HANDLE
Dim modemStat As Dword
Dim ComX As Integer
Screen 9
Locate 10,1: Input "Escribe solo el -numero- del puerto COM donde tengas tu FTDI. COM:"; ComX
Cls
hCom = CreateFile( "Com" + Str(ComX), GENERIC_READ Or GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL )
While Letra = ""
Letra=InKey()
GetCommModemStatus( hCom, @modemStat )
Locate 10,10
If modemStat And MS_CTS_ON Then Print "CTS=1 "; Else Print "CTS=0 ";
If modemStat And MS_DSR_ON Then Print "DSR=1 "; Else Print "DSR=0 ";
If modemStat And MS_RING_ON Then Print "RING=1 "; Else Print "RING=0 ";
If modemStat And MS_RLSD_ON Then Print "RLSD=1" Else Print "RLSD=0"
Print modemstat
Wend
CloseHandle( hCom )
End
--------------------------------------- |
Ultima edición por Oceano el 21 Mar, 2010 - 12:17 , editado 8 veces | |
|
| |  | | Asunto: Re: USB ----> RS-232. Majenar los bits RTS, DTR, CDC... i Publicado: 20 Mar, 2010 - 01:20 |
| Nuevo en el Foro

Registrado: 07 Abr, 2009
Mensajes: 10
|
| Adjunto también un simple esquema por si hay algo que genere duda. |
| |
|
| |  | | Asunto: Publicado: 14 Oct, 2010 - 02:10 |
| Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| pues eso tambien es algo que me intriga oceano tengo que acerme con uno de esos adactadores usb rs232 para el portatil que no dispone de ellos y si me pica la curiosidad como queda configuravo dentro del hardware del pc miraste como lo tienes configurado hay??? en configuracion de hardware de mi pc porque igual te exije cojer labiblioteca de la espansion usb pero que me estraña deveria funcionar del tiron o eso es lo que me molava.. porque si quisiera conectar el programador T-20... funcionaria¿?¿?¿?¿?
un saludo |
| |
|
| |  | | Asunto: Publicado: 14 Oct, 2010 - 02:15 |
| Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| porcierto alguien para dar un empujon con el puñetero visualbasic en particular el 2005 no soy capar de acer nada y no encuentro unos manuales en condiciones lo unico algunas cosas que aprendi de ver algunas pacticas sencillas pero que me ralla tanta ventanita..
un saludo |
| |
|
| |  |
|
|