Professional Documents
Culture Documents
- Robtica
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi...
Robtica
Temas:
Pgina principal Cinemtica Inversa I Cinemtica Inversa II Cinemtica Inversa III Trayectorias Simuladores de Brazo Robot Emulador RV-2AJ Encoder Encoder por Hardware Encoder por Software Encoder con efecto Hall PIC Encoder USB USB Bulk Transfer Fabricar Brazo Robot Brazo por RS232 DTR-RTS-CTS-DSR... Bresenham 2D Bresenham 3D Bresenham 4D? Algoritmo DDA YouTube Robots Foro de Debate Links Contacto Sitemap
DTR-RTS-CTS-DSR...
Translate to English.
Los diodos D1, D2 y D3 son opcionales. Los valores de R3 a R6 pueden ser mayores de 1K. Las entradas CTS-DSR-DCD-RI acepta seales tipo TTL.
Salidas:
* ("RI" slo es compatible con la USART (Com1 y 2) que viene en el PC. En el caso de las FTDI
seriales no siempre la tienen implementada porque slo se usan en los antiguos Modem.)
Los dos programas que se exponen abajo de esta pgina sirven para controlar los bits de forma independiente del puerto serie (USART) y tambin es vlido para los FTDI seriales. He tomado programas de
1 de 7
24/08/2011 14:33
DTR-RTS-CTS-DSR... - Robtica
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi...
otras webs***, los he modificado ligeramente (en el primer programa), con la intencin de que se entendiera mejor. *** Cliquea aqu, aqu y aqu para ver los programas originales (siempre en FreeBasic). Para abrir el puerto serie puedes usar el formato COM1 al 8 como siempre, por ejemplo: CreateFile( "COM1", GENERIC_READ Or GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ) pero ms all del COM8 hay que usar otro formato: "\\.\COMx" donde x puede ser del 1 al 255. Por ejemplo: CreateFile( "\\.\COM18", GENERIC_READ Or GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ) Para mantener la compatibilidad con todos los Windows (16 y 32 bits), usaremos este ltimo. Si ests bajo MSDOS o Win9x recuerda usar puertos no superiores al COM8. En Windows Vista de 64 bits, hay problemas, porque no reconoce, o no te da el privilegio de usar los puertos COM de la forma acostumbrada. Para poder acceder a ellos con Windows Vista 64 bits se puede usar dos mtodos. Uno es dndole a las propiedades de tu programa ejecutable (botn derecho del ratn) y habilitar el programa como Administrador. El otro caso es indicando al programa (no tengo experiencia en esto) dnde est la carpeta "Syswow64", que es el equivalente a la carpeta en XP "System32". Para manejar puertos reales y si estn en MSDOS o Win9x, puedes acceder al puerto serie de forma directa con Inp y Out. Esto no es posible en plataformas de 32 bits (XP Win2000, Vista32, etc.) , Cliquea aqu para ver un ejemplo.
2 de 7
24/08/2011 14:33
DTR-RTS-CTS-DSR... - Robtica
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi...
no significa que las FTDI sean lentas. Lo que ocurre es que las FTDI las usamos aqu de forma indirecta. Para usarlo de forma directa se necesita la DLL correspondiente al FTDI que usemos y la programacin sera otra y est fuera de mis conocimientos de momento. De todas formas, si quieres ver un ejemplo de cmo implementar la DLL correspondiente para el FT232 haz clic aqu. Los programas que estn al final de esta pgina estn escritos en FreeBasic. No s cmo se hace en otros lenguajes de programacin. Conseguimos hacer parpadear tres LED y leer 3 4 bits de entradas, tanto en puertos reales como en virtuales. La USART del PC suele ser el Com1 y a veces tambin el Com2. Pero si usas COM virtuales y quieres averiguar en qu puerto COM est has de hacer lo siguiente: Ves a: Inicio > Panel de Control > (Vista clsica) > Sistema > Hardware > Administrador de Dispositivos > Puertos Com & LPT > y pulsas en el smbolo '+', ah vers la referencia al puerto COM seguido de un nmero.
3 de 7
24/08/2011 14:33
DTR-RTS-CTS-DSR... - Robtica
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi...
En "Opciones avanzadas" vers justo abajo a la izquierda de esa ventana, te permite cambiar el nmero de puerto COM a otro. Si dice que est en uso, pero no est conectado el elemento que usa ese puerto, entonces puedes utilizarlo (hazlo slo si tienes experiencia). Es compartir el puerto mientras esos dos elementos no estn juntos. Esto ltimo es peligroso si no se tiene conciencia de lo que se est haciendo.
4 de 7
24/08/2011 14:33
DTR-RTS-CTS-DSR... - Robtica
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi...
Puedes crearte un verdadero problema si usas un mismo nmero de puerto para dos o ms cosas que ya estn en uso al mismo tiempo, as que ndate con ojo. Aunque no suele ser necesario, es mejor reiniciar una vez hecho los cambios.
Los programas.
En cualquiera de los dos programas has de pulsar "ESC" (tecla escape) para salir. Puedes descargar los cdigos fuentes y los ejecutables de los programas que estn abajo clickeando aqu:
Pines de salida: TxD -----> patilla 3 del DB9 RTS -----> patilla 7 del DB9 DTR -----> patilla 4 del DB9 Masa ----> patilla 5 del DB9
The translation could modify the code. Use the code without translating or download the program by clicking the link above.
Manejo en FreeBasic de las Salidas TxD, RTS y DTR del puerto COM (USART), o el FT232xx, o el PL2303xx:
#Include "windows.bi" Dim Letra Dim hCom Dim ComX Screen 9 Locate 10,1: Input "Escribe solo el -numero- del puerto COM:"; ComX ' Es vlido tanto para puertos reales como virtuales. Color 14,1 Cls Locate 10,1 Print " Observa el cambio de estado de los LED. Han de parpadear" Print " secuencialmente, un segundo de tiempo cada uno." Print Print " Pulsa 'Escape' para salir; quiza tarde varios segundos en" Print " tener efecto por la temporizacion que hay en el programa." hCom = CreateFile( "\\.\COM" + Str( ComX ),_ GENERIC_READ Or GENERIC_WRITE,_ 0,_ NULL,_ OPEN_EXISTING,_ As String As HANDLE As Integer
5 de 7
24/08/2011 14:33
DTR-RTS-CTS-DSR... - Robtica
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi...
0,_ NULL ) While Letra <> Chr( 27 ) Letra=InKey() EscapeCommFunction( hCom, SETDTR ) Sleep 500 EscapeCommFunction( hCom, CLRDTR ) Sleep 500 EscapeCommFunction( hCom, SETRTS ) Sleep 500 EscapeCommFunction( hCom, CLRRTS ) Sleep 500 EscapeCommFunction( hCom, SETBREAK ) ' TxD=1 Sleep 500 EscapeCommFunction( hCom, CLRBREAK ) ' TxD=0 Sleep 500 Wend CloseHandle( hCom ) End ' RTS=0 ' RTS=1 ' DTR=0 ' DTR=1
Y ahora el programa para leer las entradas. Si las patillas de entrada (CTS - DSR - DCD - RI) estn sueltas lo interpreta como un "0". Hay que llevarlas a positivo para que se ponga las entradas que corresponda a "1". En nuestro caso, tal como est en el esquema, con 5 voltios ya conseguimos un "1" lgico pese a que el puerto COM usa seales de +12 y -12 voltios. Si pones una entrada a masa (GND) representa un "0" lgico.
Pines 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
The translation could modify the code. Use the code without translating or download the program by clicking the link above.
Manejo en FreeBasic de las Entradas CDC, DSR, CTS y RI* del puerto COM (USART), o el FT232xx, o el PL232xx:
6 de 7
24/08/2011 14:33
DTR-RTS-CTS-DSR... - Robtica
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi...
Screen 9 Locate 10,1: Input "Escribe solo el -numero- del puerto COM:"; ComX ' Es vlido tanto para puertos reales como virtuales. 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 Print "CTS=0 "; If modemStat Print "DSR=0 "; If modemStat Print "RING=0 "; If modemStat Print "RLSD=0" And MS_CTS_ON And MS_DSR_ON Then Print "CTS=1 "; Then Print "DSR=1 "; Else Else
And MS_RING_ON Then Print "RING=1 "; Else And MS_RLSD_ON Then Print "RLSD=1" Else
7 de 7
24/08/2011 14:33