¿Qué es esto? ¿Por qué es necesario? ¿Está bien si lo toco con el dedo? ¿Qué? ¿Mejor no? Bien, no lo haré. Pero es muy interesante para mí: hay un conector en la computadora, pero por alguna razón nadie le conecta nada. ¿Cómo se llama? ¿Puerto? ¡Guau! ¡Clase! ¿Y qué es eso?..

Este puerto también se llama de serie (Puerto serial), aunque la reducción "COM" en realidad significa "comunicación" - Puerto de comunicación(originalmente diseñado para el movimiento de datos bidireccional: comunicación verdadera). Y aún más a menudo se llama coherente, ya que transmite bits estrictamente uno tras otro.

Además del puerto serie, los ordenadores también disponen de un puerto paralelo, destinado principalmente a conectar impresoras. Se suele llamar así: impresora. Allí, la transferencia de datos es nominalmente unidireccional (aunque sólo nominalmente).

Es muy posible que tu ordenador también tenga un puerto COM. Lo más probable es que se trate de un casquillo ligeramente alargado con nueve contactos en dos filas, cinco y cuatro en cada una, y también roscados para pernos en los extremos. Viene con un cable con conector, respectivamente, con nueve enchufes ubicados en la misma configuración.

El conector se inserta en el zócalo con contactos y se atornilla con los pernos anteriores para que no se caiga. De esta forma, podrás, por ejemplo, conectar directamente dos ordenadores mediante un cable de módem nulo. Esto es lo que se hacía antes, en la era de las primeras PC.

Hoy en día, de esta manera se conectan receptores de satélite, dispositivos de diversos sistemas de seguridad, sistemas de control de procesos de producción y otros dispositivos abstrusos.

Probablemente exista un puerto de este tipo en su computadora portátil (por supuesto, si tiene uno en su hogar). Se utiliza, por ejemplo, para sincronizar con una computadora de escritorio. Es cierto que en la práctica hoy en día esta conexión no se utiliza con mucha frecuencia; nadie quiere engañarse con los cables, porque se pueden utilizar otras tecnologías más modernas y eficientes.

Hoy en día, un puerto USB se utiliza cada vez más para la comunicación con varios dispositivos (por cierto, también es en serie). Módems móviles, impresoras, adaptadores Wi-Fi: cada vez más dispositivos se conectan a través de USB.

Además, con la disponibilidad de tecnologías como Ethernet y FireWire (para Apple), conectar computadoras con cables a través de puertos COM no es tan práctico. Bueno, si recuerdas el Bluetooth (que se traduce como "diente azul"), incluso puedes enviar el puerto serie al museo.

Sin embargo, el sistema operativo Windows todavía nombra sus canales de transmisión de información como COM1, COM2, etc.

¿Por qué? Porque los controladores, por ejemplo, para Bluetooth, pueden aparecer en el sistema exactamente como puertos COM. Aquí estamos, por favor amen y favorezcan, asígnenos canales para el intercambio de datos. ¿Y qué si no somos del todo reales? Aún tendrás que servirnos.

Unix (y sus variantes como Linux) también tiene algunas peculiaridades en cuanto a la actitud hacia los dispositivos conectados. Dado que Unix considera todo lo que le rodea como archivos (¡incluso el hardware!), mantiene sus puertos serie en forma de archivos con nombres como ttyS0, ttyS1, ttyS2 (si es Linux) o ttyu0, ttyu1, ttyu2 (en FreeBSD).

Si es un usuario sencillo y no trabaja con dispositivos específicos, receptores de satélite y otros dispositivos complicados, entonces no es necesario que vaya a las tiendas de informática y busque un cable para un puerto COM.

Los datos de una computadora a otra se pueden transferir de muchas otras maneras, incluso sin ningún cable. Como último recurso, transfiéralo a una unidad flash si la red local no funciona por algún motivo.

En resumen, aunque el puerto COM sigue existiendo desde el punto de vista del sistema operativo e incluso se utiliza prácticamente como canal de comunicación, en la práctica la mayoría de los usuarios pueden olvidarse de él con la conciencia completamente tranquila.

Es cierto que la curiosidad siempre es encomiable. Así que pregunta, interesa, estudia. Pero es mejor no tocarlo con las manos sin permiso.

Publicaciones anteriores:

Entonces llegamos al puerto COM. Pero con él no todo es tan sencillo como con LPT, y su uso completo requerirá mucho más esfuerzo. El principal problema es también su principal ventaja: la transferencia de datos en serie. Si en LPT se transmite un byte de datos a lo largo de 8 líneas, un bit por línea, y el estado de cada línea se puede ver fácilmente, entonces en el puerto COM un byte de datos se transmite bit a bit a lo largo de una línea (en relación con tierra). , por supuesto) y ver lo que se transmite allí solo con LED no sirve. Para hacer esto, necesita un dispositivo especial: un convertidor de un flujo de datos en serie a uno paralelo, el llamado. USART (Transmisor receptor universal síncrono/asíncrono). Por ejemplo, está incluido en la placa base de una computadora equipada con un puerto COM o en cualquier microcontrolador más serio.


Espero que todavía estés desanimado por dominar el puerto COM. No todo es pesimismo. Algunos resultados se pueden obtener sin USART. Formulemos una tarea que implementaremos en la etapa inicial de trabajar con el puerto COM:


"Me gustaría conectar un LED a la computadora a través del puerto COM. Ejecuto el programa. Realizo alguna acción en este programa, el LED se enciende, hago otra cosa: el LED se apaga".


La tarea es bastante específica (teniendo en cuenta el hecho de que no se utiliza USART) y es una tarea puramente de "hágalo usted mismo", pero es bastante factible y viable. Empecemos a implementarlo.


1.Puerto COM

Nuevamente, toma la unidad del sistema de tu PC y mira la parte trasera. Notamos que hay un conector de 9 pines: este es el puerto COM. En realidad puede haber varios (hasta 4). Mi PC tiene dos puertos COM (ver foto).


2. Extensión del puerto COM


3. Hardware

También tendremos que “retocar” el hardware, en el sentido de que será más complicado que con el primer dispositivo para el puerto LPT. El hecho es que el protocolo RS-232, a través del cual se intercambian datos en el puerto COM, tiene una relación lógica entre estado y voltaje ligeramente diferente. Si normalmente esto es lógico 0 0 V, lógico 1 +5 V, entonces en RS-232 esta relación es la siguiente: lógico 0 +12 V, lógico 1 -12 V.

Y, por ejemplo, después de recibir -12 V, no queda claro de inmediato qué hacer con este voltaje. Normalmente, los niveles RS-232 se convierten a TTL (0,5 V). La opción más sencilla son los diodos Zener. Pero propongo hacer este convertidor en un chip especial. Se llama MAX232.

Ahora veamos qué señales del puerto COM podemos ver en los LED. De hecho, en el puerto COM hay hasta 6 líneas independientes que son de interés para el desarrollador de dispositivos de interfaz. Dos de ellos aún no están disponibles para nosotros: las líneas de datos en serie. Pero los 4 restantes están pensados ​​para controlar e indicar el proceso de transferencia de datos y podemos “transferirlos” según nuestras necesidades. Dos de ellos están pensados ​​para el control desde un dispositivo externo y por ahora no los tocaremos, pero sí usaremos las dos últimas líneas restantes. Ellos se llaman:

  • estrategia en tiempo real- Solicitud de transferencia. Una línea de interacción que indica que la computadora está lista para recibir datos.
  • DTR- La computadora está lista. Una línea de interacción que indica que la computadora está encendida y lista para comunicarse.

Ahora transferimos un poco su propósito y los LED conectados a ellos se apagarán o se encenderán, dependiendo de las acciones de nuestro propio programa.

Entonces, armemos un diagrama que nos permitirá llevar a cabo las acciones previstas.

Y aquí está su implementación práctica. Creo que me perdonarán que lo hice en una versión de placa tan tonta, porque no quiero hacer una placa para un circuito tan “altamente productivo”.


4. Parte del software

Aquí todo es más sencillo. Creemos una aplicación de Windows en Microsoft Visual C++ 6.0 basada en MFC para administrar dos líneas de comunicación del puerto COM. Para hacer esto, cree un nuevo proyecto MFC y asígnele un nombre, por ejemplo, PruebaCOM. A continuación, seleccione la opción de construir basado en el diálogo.

Da la apariencia de la ventana de diálogo de nuestro programa como en la Fig. a continuación, es decir, agregue cuatro botones, dos para cada una de las líneas. Uno de ellos es respectivamente necesario para “extinguir” la línea y el otro para “ponerla” en uno.

Clase CTestCOMDlg: CDialog público ( // Construcción pública: CTestCOMDlg(CWnd* pParent = NULL); // constructor estándar HANDLE hFile;

Para que nuestro programa pueda controlar las líneas de un puerto COM, primero se debe abrir este. Escribamos el código responsable de abrir el puerto al cargar el programa.

HFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("¡El puerto no se pudo abrir!", "Error", MB_ICONERROR); ) else ( MessageBox("El puerto se abrió correctamente", "Ok", MB_OK); )

Usando la función estándar Win API Crea un archivo() abre el puerto COM COM2. A continuación, comprobamos el éxito de la apertura y mostramos un mensaje informativo. Aquí debemos hacer una nota importante: COM2 está en mi computadora, pero en tu computadora puedes conectarlo a otro puerto COM. En consecuencia, es necesario cambiar su nombre al puerto que esté utilizando. Puede ver qué números de puerto están presentes en su computadora de esta manera: Inicio -> Configuración -> Panel de control -> Sistema -> Hardware -> Administrador de dispositivos -> Puertos (COM y LPT).

Como resultado, la función CTestCOMDlg::OnInitDialog(), ubicado en el archivo PruebaCOMDlg.cpp, nuestra clase de diálogo debería tomar la forma:

BOOL CTestCOMDlg::OnInitDialog() ( CDialog::OnInitDialog(); // Agrega el elemento de menú "Acerca de..." al menú del sistema. // IDM_ABOUTBOX debe estar en el rango de comandos del sistema. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); ) ) // Establece el icono para este cuadro de diálogo. El marco hace esto automáticamente // cuando la ventana principal de la aplicación no es un cuadro de diálogo SetIcon(m_hIcon, TRUE); // Establecer ícono grande SetIcon(m_hIcon, FALSE); // Establecer ícono pequeño // TODO: Agregar inicialización adicional aquí hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("¡No se pudo abrir el puerto!", "Ostbk", MB_ICONERROR); ) else ( MessageBox("Puerto abierto correctamente", "Ok", MB_OK); ) return TRUE // devuelve TRUE a menos que establezca el foco en un control)

Ahora agreguemos controladores para los botones de control de línea. Les di nombres apropiados: la función que establece uno en la línea DTR es OnDTR1(), 0 es OnDTR0(). Para la línea RTS, de la misma forma. Permítanme recordarles que el controlador se crea cuando hace doble clic en el botón. Como resultado, estas cuatro funciones deberían verse así:

Void CTestCOMDlg::OnDTR1() ( // TODO: Agregue el código del controlador de notificaciones de control aquí EscapeCommFunction(hFile, 6); ) void CTestCOMDlg::OnDTR0() ( // TODO: Agregue el código del controlador de notificaciones de control aquí EscapeCommFunction(hFile, 5); ) void CTestCOMDlg::OnRTS1() ( // TODO: Agregue el código del controlador de notificaciones de control aquí EscapeCommFunction(hFile, 4); ) void CTestCOMDlg::OnRTS0() ( // TODO: Agregue el código del controlador de notificaciones de control aquí EscapeCommFunction(hFile, 3);

Déjame explicarte un poco cómo funcionan. Como puede ver, en su interior contienen una llamada a la misma función de Win API. FunciónCommEscapar() con dos parámetros. El primero de ellos es un identificador (HANDLE) para un puerto abierto, el segundo es un código de acción especial correspondiente al estado requerido de la línea.

Eso es todo, compilamos y lanzamos. Si todo está bien, debería ver un mensaje sobre la apertura exitosa del puerto. A continuación, pulsando los botones correspondientes, hacemos parpadear los LED conectados al puerto COM.

© Ivanov Dmitri
diciembre de 2006

Junto con el puerto paralelo, el puerto COM, o puerto serie, es uno de los puertos de entrada/salida tradicionales de los ordenadores, utilizados en los primeros PC. Aunque el puerto COM tiene un uso limitado en las computadoras modernas, la información sobre él puede ser útil para muchos usuarios.

El puerto serie, al igual que el puerto paralelo, apareció mucho antes de la aparición de las computadoras personales con la arquitectura IBM PC. En las primeras computadoras personales, el puerto COM se utilizaba para conectar dispositivos periféricos. Sin embargo, el ámbito de su aplicación era algo diferente del ámbito del puerto paralelo. Si el puerto paralelo se usaba principalmente para conectar impresoras, entonces el puerto COM (por cierto, el prefijo COM es solo una abreviatura de la palabra comunicación) generalmente se usaba para trabajar con dispositivos de telecomunicaciones, como módems. Sin embargo, puede conectar al puerto, por ejemplo, un mouse, así como otros dispositivos periféricos.

Puerto COM, principales áreas de aplicación:

  1. Terminales de conexión
  2. ~ módems externos
  3. ~ impresoras y trazadores
  4. ~ ratones
  5. Conexión directa entre dos ordenadores.

Actualmente, el alcance del puerto COM se ha reducido significativamente debido a la introducción de una interfaz USB más rápida y compacta y, por cierto, también serial. Los módems externos diseñados para conectarse a un puerto, así como los ratones “COM”, casi han dejado de utilizarse. Y es raro que ahora alguien conecte dos computadoras usando un cable de módem nulo.

Sin embargo, varios dispositivos especializados todavía utilizan el puerto serie. Puedes encontrarlo en muchas placas base. El hecho es que, en comparación con USB, un puerto COM tiene una ventaja importante: según el estándar de transmisión de datos en serie RS-232, puede funcionar con dispositivos a una distancia de varias decenas de metros, mientras que el alcance de un cable USB es generalmente limitado a 5 metros.

El principio de funcionamiento de un puerto serie y su diferencia con uno paralelo.

A diferencia de un puerto paralelo (LPT), un puerto serie transmite datos bit a bit en una sola línea, en lugar de en varias líneas a la vez. Las secuencias de bits se agrupan en series de datos, comenzando con un bit de inicio y terminando con un bit de parada, así como bits de paridad utilizados para la verificación de errores. De aquí proviene otro nombre en inglés, que tiene un puerto serie: Serial Port.

El puerto serie tiene dos líneas a través de las cuales se transmiten los datos: estas son líneas para transferir datos desde el terminal (PC) al dispositivo de comunicación y viceversa. Además, hay varias líneas de control más. El puerto serie cuenta con un chip UART especial, que es capaz de soportar una velocidad de transferencia de datos relativamente alta, alcanzando los 115.000 baudios (bytes/s). Sin embargo, cabe señalar que la velocidad real del intercambio de información depende de ambos dispositivos de comunicación. Además, las funciones del controlador UART incluyen convertir código paralelo en código serie y viceversa.

El puerto utiliza señales eléctricas de voltaje comparativamente alto, hasta +15 V y -15 V. El nivel cero lógico del puerto serie es +12 V y el nivel uno lógico es -12 V. Una caída de voltaje tan grande nos permite garantizan un alto grado de inmunidad al ruido de los datos transmitidos. Por otro lado, los altos voltajes utilizados en el puerto serie requieren soluciones de circuitos complejos. Esta circunstancia también contribuyó a la disminución de la popularidad del puerto.

Interfaz serie RS-232

El funcionamiento del puerto serie en una PC se basa en el estándar de transferencia de datos para dispositivos serie RS-232. Este estándar describe el proceso de intercambio de datos entre un dispositivo de telecomunicaciones, como un módem, y un terminal de computadora. El estándar RS-232 define las características eléctricas de las señales, su finalidad, duración, así como los tamaños de conectores y pinouts para ellas. Sin embargo, RS-232 describe únicamente el nivel físico del proceso de transferencia de datos y no se refiere a los protocolos de transporte utilizados, que pueden variar según el equipo de comunicación y el software utilizados.

El estándar RS-232 se creó en 1969 y su última versión, TIA 232, se lanzó en 1997. Actualmente, RS-232 se considera obsoleto, pero la mayoría de los sistemas operativos aún lo admiten.

En las computadoras modernas, el conector del puerto serie es un conector macho DB-9 de 9 pines, aunque el estándar RS-232 también describe un conector DB-25 de 25 pines, que se usaba a menudo en computadoras más antiguas. El conector DB-9 suele estar ubicado en la placa base de la PC, aunque en computadoras más antiguas puede haber estado ubicado en una multitarjeta especial insertada en una ranura de expansión.

Zócalo DB-9 de 9 pines en la placa base

Conector DB-9 en el cable del dispositivo conectado al puerto

A diferencia de un puerto paralelo, los conectores a ambos lados de un cable serie de dos vías son idénticos. Además de las líneas para transmitir los datos en sí, el puerto contiene varias líneas de servicio a través de las cuales se puede transmitir información de control entre el terminal (computadora) y el dispositivo de telecomunicaciones (módem). Aunque teóricamente solo se necesitan tres canales para que funcione un puerto serie: recepción de datos, transmisión de datos y tierra, la práctica ha demostrado que la presencia de líneas de servicio hace que la comunicación sea más eficiente, confiable y, como resultado, más rápida.

Finalidad de las líneas del conector DB-9 del puerto serie según RS-232 y su correspondencia con los contactos del conector DB-25:

Contacto DB-9 nombre inglés nombre ruso Contacto DB-25
1 Detección de portador de datos Transportista detectado 8
2 Dato transmitido Datos transmitidos 2
3 Recibir datos Datos recibidos 3
4 Terminal de datos listo Preparación terminal 20
5 Suelo Tierra 7
6 Conjunto de datos listo Preparación del transmisor 6
7 Peticion para enviar Solicitud de envío de datos 4
8 Borrar para enviar Transferencia de datos permitida 5
9 Indicador de anillo Indicador de timbre 22

Configuración e interrupciones

Dado que una computadora puede tener varios puertos serie (hasta 4), el sistema les asigna dos interrupciones de hardware: IRQ 3 (COM 2 y 4) e IRQ 4 (COM 1 y 3) y varias interrupciones del BIOS. Muchos programas de comunicación, así como los módems integrados, utilizan interrupciones y el espacio de direcciones de los puertos COM para su funcionamiento. En este caso no se suelen utilizar puertos reales, sino los llamados puertos virtuales, que son emulados por el propio sistema operativo.

Como ocurre con muchos otros componentes de la placa base, los parámetros del puerto COM, en particular los valores de interrupción del BIOS correspondientes a las interrupciones de hardware, se pueden configurar a través de la interfaz de configuración del BIOS. Para esto, se utilizan opciones del BIOS como Puerto COM, Puerto serie integrado, Dirección del puerto serie, etc.

Conclusión

El puerto serie del PC no es actualmente un medio de entrada/salida muy utilizado. Sin embargo, dado que existe una gran cantidad de equipos, principalmente para fines de telecomunicaciones, diseñados para funcionar con un puerto serie, y también debido a algunas de las ventajas del protocolo de datos serie RS-232, la interfaz serie aún no debería descartarse. como una arquitectura de computadora personal rudimentaria y completamente obsoleta.

Un puerto COM se utiliza con mayor frecuencia para comunicarse entre un microcontrolador y una computadora. En este artículo, le mostraremos cómo transmitir comandos de control desde la computadora y transmitir datos desde el controlador.

Preparándose para el trabajo

La mayoría de los microcontroladores tienen múltiples puertos de E/S. El protocolo UART es el más adecuado para la comunicación con una PC. Este es un protocolo de transferencia de datos asíncrono en serie. Para convertirlo a una interfaz USB, hay un convertidor USB-RS232 – FT232RL en la placa.
Para completar los ejemplos de este artículo, sólo necesitarás una placa compatible con Arduino. Usamos . Asegúrese de que su placa tenga un LED conectado al pin 13 y un botón de reinicio.

Por ejemplo, carguemos código en el tablero que muestra una tabla ASCII. ASCII es una codificación para representar dígitos decimales, alfabetos latinos y nacionales, signos de puntuación y caracteres de control.

símbolo entero = 33; void setup() ( Serial. begin(9600 ); Serial. println(" Tabla ASCII ~ Mapa de caracteres " ); ) void loop() ( Serial. write(símbolo); Serial. print(" , dec: " ); Serial. print(símbolo); Serial. print("); Serial. print("); ", bin:"; println(símbolo, BIN); ​continuar ) ) símbolo+ + ;

La variable de símbolo almacena el código del símbolo. La tabla comienza en 33 y termina en 126, por lo que la variable de símbolo se establece inicialmente en 33.
Para iniciar el funcionamiento del puerto UART, utilice la función Serie.comenzar(). Su único parámetro es la velocidad. La velocidad debe ser acordada de antemano entre el emisor y el receptor, ya que el protocolo de transmisión es asíncrono. En el ejemplo considerado, la velocidad es 9600bps.
Se utilizan tres funciones para escribir un valor en un puerto:

  1. Serie.write()– escribe datos en el puerto en forma binaria.
  2. Serie.imprimir() Puede tener muchos significados, pero todos sirven para mostrar información en una forma legible por humanos. Por ejemplo, si la información especificada como parámetro a transferir está resaltada entre comillas, el programa del terminal la generará sin cambios. Si desea mostrar un valor en un sistema numérico específico, debe agregar una palabra de servicio: BIN - binario, OCT - octal, DEC - decimal, HEX - hexadecimal. Por ejemplo, Impresión.serie(25,HEX).
  3. Serie.println() hace lo mismo que Serie.imprimir(), pero también rompe la línea después de generar la información.

Para comprobar el funcionamiento del programa es necesario que el ordenador disponga de un programa terminal que reciba datos del puerto COM. El IDE de Arduino ya lo tiene integrado. Para llamarlo, seleccione Herramientas->Monitor de puerto en el menú. La ventana de esta utilidad es muy sencilla:

Ahora haga clic en el botón reiniciar. El MK se reiniciará y mostrará la tabla ASCII:

Presta atención a esta parte del código:

si (símbolo = = 126) (mientras (verdadero) (continuar;))

Detiene la ejecución del programa. Si lo excluye, la tabla se mostrará infinitamente.
Para consolidar sus conocimientos, intente escribir un bucle infinito que enviará su nombre al puerto serie una vez por segundo. Agregue números de paso al resultado y no olvide romper la línea después del nombre.

Envío de comandos desde la PC

Antes de hacer esto, es necesario comprender cómo funciona un puerto COM.
En primer lugar, todo el intercambio se produce a través del búfer de memoria. Es decir, cuando envías algo desde una PC a un dispositivo, los datos se colocan en alguna sección de memoria especial. Tan pronto como el dispositivo está listo, lee los datos del búfer. La función le permite verificar el estado del búfer. Serie.disponible(). Esta función devuelve el número de bytes en el búfer. Para restar estos bytes necesitas usar la función Serie.read(). Veamos cómo funcionan estas funciones usando un ejemplo:

valor int = 0; void setup() ( Serial. begin(9600 ); ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; Serial. print(" Recibí: " ); Serial. escribir(val);

Una vez que el código esté cargado en la memoria del microcontrolador, abra el monitor del puerto COM. Escriba un carácter y presione Entrar. En el campo de datos recibidos verá: “Recibí: X”, donde en cambio X será el carácter que ingresaste.
El programa gira sin cesar en el bucle principal. En el momento en que se escribe un byte en el puerto, la función Serial.available() toma el valor 1, es decir, se cumple la condición Serie.disponible() > 0. Siguiente función Serie.read() lee este byte, limpiando así el búfer. Después de eso, utilizando las funciones que ya conoce, se produce la salida.
El uso del monitor de puerto COM integrado del IDE de Arduino tiene algunas limitaciones. Al enviar datos desde la placa al puerto COM, la salida se puede organizar en cualquier formato. Y cuando se envían desde la PC a la placa, los caracteres se transmiten de acuerdo con la tabla ASCII. Esto significa que cuando ingresas, por ejemplo, el carácter “1”, se envía “00110001” a través del puerto COM en binario (es decir, “49” en decimal).
Cambiemos un poco el código y verifiquemos esta declaración:

valor int = 0; void setup() ( Serial. begin(9600 ); ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; Serial. print(" Recibí: " ); Serial. println(valor, BIN) ;

Luego de la descarga, en el monitor de puerto al enviar “1” verás la respuesta: “Recibí: 110001”. Puedes cambiar el formato de salida y ver qué acepta el tablero con otros caracteres.

Control de dispositivos a través del puerto COM

Obviamente, usando comandos desde una PC, puedes controlar cualquier función del microcontrolador. Descarga el programa que controla el funcionamiento del LED:

valor int = 0; void setup() ( Serial. comenzar(9600 ); ) void loop() ( if (Serial. disponible() > 0 ) ( val = Serial. read() ; if (val= = "H") digitalWrite(13 , ALTO); si (val= = "L") digitalWrite(13, BAJO) )

Cuando se envía el carácter "H" al puerto COM, el LED en el pin 13 se enciende y cuando se envía "L", el LED se apaga.
Si, según los resultados de la recepción de datos del puerto COM, desea que el programa realice diferentes acciones en el bucle principal, puede verificar las condiciones en el bucle principal. Por ejemplo.

En mi tiempo Puerto COM Era el puerto universal más utilizado en una computadora personal. A través de este puerto se conectaron una amplia variedad de dispositivos a la computadora:

otra computadora

y otros dispositivos.

Muchos dispositivos con una interfaz USB se controlan a través de una interfaz de puerto COM virtual cuando se conectan a una computadora.

La razón de la gran popularidad del puerto COM fue el bajo costo del cable, ya que solo puede tener 3 cables: tierra, "allí" y "atrás". La historia muestra que las conexiones externas se realizan mejor mediante un enlace serie. Los puertos paralelos son populares en distancias muy cortas. Aunque tras la aparición de SATA esta afirmación puede ser cuestionada. La línea de comunicación ideal es un cable, como, por ejemplo, en la tecnología OneWire. Pero el puerto COM era bastante bueno para su época.

Transferencia de datos a través del puerto COM

El proceso de transferencia de datos a través de COM es bastante simple. Para simplificar, asumiremos que los datos se transfieren solo en una dirección. En el caso de la transferencia de datos bidireccional, todo es simétrico.

Los datos se transmiten en bloques de 5 a 8 bits. Normalmente se utilizan 7 u 8 bytes. Cuando no hay nada que transmitir, el transmisor mantiene una lógica en la línea de -12 Voltios. Antes de que se transmita el siguiente paquete, aparece una señal de +12 voltios (0 lógico) en la línea del puerto COM. Esta caída de voltaje señala puerto COM remoto que el primer bit estará en el siguiente ciclo de reloj. A continuación, los bits de datos del nivel correspondiente se envían secuencialmente: -12 V = 1 y +12 V = 0. Los bits se transmiten hacia adelante y hacia atrás: primero el bit menos significativo, luego el más significativo. Si el receptor del lado remoto funciona en la misma frecuencia, recibirá todos los bits correctamente. Cuando se han transmitido todos los bits, se transmite el bit de suma de comprobación. Después de esto, la línea se establece nuevamente en -12 voltios y se transmite el bit de parada. Si no hay más datos, entonces la línea permanece en esta posición. Y en cuanto hay que transmitir algo más, vuelve a aparecer la tensión de +12 voltios y todo vuelve a empezar. Este voltaje relativamente alto de 12 voltios se utiliza para la inmunidad al ruido de la comunicación a través del puerto COM.

Los periodos entre envíos están separados por un bit de parada. O mejor dicho, no un bit, sino un período igual a 1, 1,5 o 2 veces para transmitir un bit. Utilizando el bit de parada, el lado receptor determina los límites de los paquetes a través del puerto COM.

Historial del puerto COM

Puerto COM son un subconjunto de interfaces UART que se utilizaron en los Estados Unidos para transmitir mensajes telegráficos. Los mensajes se transmitían en 5 bits (la longitud máxima de un “byte” de código Morse). Todavía podemos observar este tamaño de “byte” “extraño” en la configuración para la transferencia de datos a través del puerto COM.

Tarjetas de expansión COM

Los ordenadores modernos no suelen tener un puerto COM independiente. Por lo general, está en la placa base, pero no se muestra en la pared posterior de la unidad del sistema. Para sacarlo al exterior, debe instalar la llamada liberación del puerto COM. Se parece a esto:

Si no hay puertos COM en la placa base (lo cual es muy raro) o no hay suficientes, puede instalar un controlador especial: una tarjeta de expansión. Se instala en una ranura PCI o PCI-Express.

En el caso de portátiles (netbooks), se pueden utilizar adaptadores USB.

Módem y puerto COM

Muchos pines del puerto COM utilizado sólo por módems. Por ejemplo, el módem utiliza el pin 9 del puerto COM para enviar una señal a la computadora de que alguien está intentando llamarla. El módem utiliza el pin n.º 1 para notificar que hay una conexión remota activa. Normalmente, el control de transmisión (pines 4, 6, 7 y 8) está habilitado de forma predeterminada para el módem.

Trabajar con un puerto COM

En programación del puerto COM a nivel de hardware se utilizan puertos de E/S y una tabla de interrupciones. Para el primer puerto COM en computadoras compatibles con IBM PC, el puerto 3F8 y la interrupción IRQ4 están reservados. Para el segundo puerto: 378 / IRQ3. Aunque estas configuraciones se pueden cambiar en la configuración del BIOS. De hecho, por cada puerto COM no hay un puerto de E/S, sino hasta 8.