Escanee la tabla de códigos de teclas del teclado. Sobre el tema de la evaluación de señales digitales pemin. teclados. Cómo escanear códigos QR en Android

Mayoría teclados modernos Está equipado con teclas multimedia y los ratones ya tienen de tres a siete botones. Conductores y todo tipo de programas útiles Sólo Windows. Todo el mundo sabe que Linux es famoso por su capacidad de personalizar el sistema usted mismo, si, por supuesto, sabe dónde y qué configurar. Nuestra tarea es enseñarle al pingüino a trabajar con panes adicionales.

Determinar el código de escaneo de claves

No importa lo que presiones en tu teclado, al servidor X y al kernel, en general, no les importa lo que esté escrito o dibujado en ellos. Solo les interesa el código de escaneo del botón, y primero las X leen la tabla de códigos de clave del núcleo y luego el código de clave se vincula a su propia tabla de códigos. si en Problemas de Windows No existe una configuración para las teclas multimedia en la consola como tal, por lo que en Linux hay que configurar por separado la reacción al presionar botones en la consola y en X-Window.

Para averiguar el código clave, debe utilizar la utilidad xev incluida con el servidor X. Después de iniciarlo, aparece la ventana del Probador de eventos, ahora presione las teclas secuencialmente, recordando el código emitido:

$xev
...
Evento KeyRelease, serie 31, NO sintético, ventana 0x3e00001,
raíz 0x67, subw 0x0, hora 279734676, (311,611), raíz: (1104,687),
estado 0x2000, código clave 236 (keysym 0x1008ff19, XF86Mail), misma pantalla SÍ,

XFilterEvent devuelve: Falso
Evento KeyRelease, serie 31, NO sintético, ventana 0x2600001,
raíz 0x67, subw 0x0, hora 265877259, (883,334), raíz: (886,358),
estado 0x0, código clave 161 (keysym 0x0, NoSymbol), misma pantalla SÍ,
XLookupString da 0 bytes:
XFilterEvent devuelve: Falso

El resultado puede ser enorme ya que se rastrea cada movimiento del mouse cuando pasa por la ventana del Probador de eventos. La clave se describe mediante el bloque KeyRelease; en particular, el valor del código clave es precisamente el código de escaneo que queremos saber. En el ejemplo mostrado, se presionan dos teclas. El código de clave 236 corresponde al código de clave para el servidor X especificado enkeysym, así como a la acción XF86Mail, que en KDE inicia el cliente de correo predeterminado. Para la clave número 161, el código y la acción no están definidos.

Es posible que se presione una tecla, pero no se emita su código de escaneo. Esto significa que el kernel no puede encontrar un valor coincidente. La salida de dmesg debe contener la siguiente línea:

Utilice "setkeycodes 0xec "para darlo a conocer.

Es decir, se le ofrece configurar el código de escaneo de clave usted mismo utilizando setkeycodes, y elegir el valor del código clave es muy simple. Convierta la cifra resultante a un número decimal (la mayoría de las calculadoras pueden hacer esto) y sume 128. En este ejemplo, 0xec = 236, es decir, obtenemos el código de escaneo 364. En caso de duda, la lista de códigos de escaneo usados ​​y no utilizados puede ser visto ejecutando la utilidad getkeycodes en la consola o dumpkeys. Por ejemplo, si el resultado es “getkeycodes | grep<код клавиши>"no proporcionó nada, por lo que este código se puede utilizar de forma segura.

La utilidad XKeycaps (www.jwz.org/xkeycaps), que es una interfaz gráfica para Xmodmap, también puede ayudar a determinar el código de escaneo.

El programa xev, por supuesto, no funciona en la consola. Para conocer el código de escaneo emitido por el kernel, debe usar la utilidad showkey o getkeycodes:

$mostrar clave
el teclado estaba en modo UNICODE
presione cualquier tecla (el programa terminará 10 segundos después de la última presión)...
0xe0 0x6c 0xe0 0xec

Los dos primeros dígitos corresponden a la tecla presionada, el segundo a la ausencia de presión.

Configurar el enlace del código de escaneo en X-Window

Entonces, ahora que tenemos códigos de escaneo, debemos indicarle al servidor X qué debe hacer realmente cuando se presiona esta tecla, es decir, asignarle un nombre simbólico. Se proporciona una lista de nombres de símbolos en el archivo de encabezado XF86keysym.h. De forma predeterminada, los archivos de encabezado del servidor X no están instalados en las distribuciones modernas. Para verlo en Ubuntu, debe instalar el paquete x11proto-core-dev, después de lo cual este archivo se ubicará en el directorio /usr/include/X11. Alternativamente, puede comunicarse con el servidor CVS de X.Org. Miremos:

$ gato /usr/include/X11/XF86keysym.h
/*
* Teclas que se encuentran en algunos teclados de "Internet".
*/
#definir XF86XK_Standby 0x1008FF10
#definir XF86XK_AudioLowerVolume 0x1008FF11
#definir XF86XK_AudioRaiseVolume 0x1008FF13
#definir XF86XK_AudioPlay 0x1008FF14
#definir XF86XK_AudioStop 0x1008FF15
#definir XF86XK_Mail 0x1008FF19

Si comparamos la última línea con la salida xev, vemos que los valores coinciden con la clave con el código clave 236: clavesym 0x1008ff19, XF86Mail (sin el sufijo XK_). Puede encontrar una lista de todos los valores disponibles tal como deberían usarse en /usr/share/X11/XKeysymDB.

Hay dos formas de crear tu propio diseño: crear una descripción de tu teclado o usar Xmodmap. El último método es el más sencillo, por lo que hablaremos de ello más a fondo. En el directorio de inicio del usuario, creamos un archivo.Xmodmap, en el que ingresamos los valores deseados:

$ medit ~/. xmodmapa

Código clave 161 XF86Calculadora
Código clave 174 XF86AudioLowerVolume
Código clave 176 XF86AudioRaiseVolume
Código clave 162 XF86AudioPause

Y así sucesivamente, creo que el principio es claro. Además, el código clave se puede ingresar tanto en formato decimal como hexadecimal. Según mis observaciones, los códigos de la mayoría de las claves están estandarizados. Por lo tanto, si configura la respuesta al presionar una tecla una vez y transfiere el archivo a otra computadora, existe la posibilidad de que en otro teclado la reacción al presionar una tecla que también está firmada sea similar. Los usuarios del escritorio Gnome con GDM pueden escribir todas estas líneas en el archivo de todo el sistema /etc/X11/Xmodmap.

En otros casos, aún necesitamos decirle al servidor X que use el archivo generado. Esto se implementa de manera diferente en diferentes distribuciones, la idea principal es ejecutar el comando /usr/bin/xmodmap $HOME/.Xmodmap cuando el usuario inicia sesión o cuando inicia X. Aquí cada uno baila como quiere. En los foros sugieren utilizar el archivo $HOME/.xsession (en algunas distribuciones puede llamarse .Xsession), .xprofile o el sistema /etc/X11/Xsession. Y me temo que eso no es todo opciones posibles. Veamos cómo se hace en KUbuntu:

$ sudo grep -iR xmodmap /etc.

Como resultado nos encontramos con un archivo muy interesante /etc/X11/Xsession.d/80ubuntu-xmodmap con el siguiente contenido:

$ gato /etc/X11/Xsession.d/80ubuntu-xmodmap

/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || verdadero

USRMODMAP="$HOME/.Xmodmap"

si [ -x /usr/bin/xmodmap ]; entonces
si [ -f "$USRMODMAP" ]; entonces
/usr/bin/xmodmap "$USRMODMAP" || verdadero
fi
fi

Es decir, se carga el contenido del archivo ubuntu.xmodmap y el user.Xmodmap si existe. Cuando abre ubuntu.xmodmap en el editor, encontrará una lista de códigos clave y nombres simbólicos asociados. De esto podemos concluir: si un desarrollador informa que su distribución admite teclados multimedia, entonces con un alto grado de probabilidad puede encontrar un archivo similar. Otras distribuciones tienen un sistema similar para ejecutar archivos xmodmap personalizados.

Ahora que se han asignado nombres simbólicos a las teclas, puede asignarles las acciones deseadas. Algunos entornos de ventanas como KDE pueden manejar acciones basadas en nombres simbólicos. Entonces, cuando presionas el botón con XF86AudioPlay (PREGUNTA), el reproductor predeterminado comienza a reproducirse. Para configurar la combinación deseada, simplemente vaya al “Centro de control de KDE -> Opciones regionales y de accesibilidad -> Combinaciones de teclado” (en KUbuntu, busque en “Configuración del sistema -> Teclado y mouse”). Hay un elemento de menú similar tanto en Gnome (simplemente puede llamar a gnome-keyboard-bindings) como en XFce. Además, algunos programas como Amarok, Konqueror, MPD también pueden procesar pulsaciones de teclas. En otros ambientes sin
Las herramientas de configuración gráfica probablemente requerirán intervención manual en los archivos de configuración. Por ejemplo, para que en IceWM, al presionar una tecla con el nombre simbólico XF86AudioPlay se inicie el reproductor XMMS, y al presionarla nuevamente se detenga, debes agregar la línea al archivo ~/.icewm que aparece después del primer inicio:

$ mcedit ~/.icewm

tecla XF86AudioPlay xmms --reproducir-pausa

En Fluxbox la línea para iniciar el reproductor se vería así:

$mcedit ~/.fluxbox/claves

Ninguno XF86AudioPlay:ExecCommand xmms --play-pause

Por lo general, hay ejemplos en las configuraciones, por lo que creo que usted mismo puede descubrir fácilmente el resto de los administradores de ventanas.

Configurando la reacción en la consola.

En la consola, el procedimiento es ligeramente diferente. Como recordará, la salida de dmesg recomendaba asignar códigos clave usando el comando setkeycodes. Pero aquí hay diferencias: no puede haber más de 128 comandos de teclado en la consola, debe seleccionar valores del 0 al 127:

$ establecer códigos clave 0xec 118

Puede ver los valores libres en el archivo de distribución del teclado actual. En Ubuntu y todas las distribuciones basadas en Debian, suele ser /etc/console-setup/boottime.kmap.gz. Si después del inicio no hay problemas con las claves, agregue esta línea a uno de los scripts de inicio, por ejemplo en /etc/init.d/rc.local.

Ahora solo queda establecer la correspondencia entre la clave y la acción que se está realizando. Aquí hay incluso más espacio para la creatividad que en las X. En keymaps(5), el procedimiento para hacer coincidir un código clave es el siguiente:

(simple | ) código clave número clave = símbolo clave

# Cambia la consola hacia atrás cuando presionas la tecla con el código 105
código clave 105 = Decr_Console
# Cambia la consola uno hacia adelante cuando haces clic en y una llave con código 106
código clave alt 106 = Incr_Console

Pero puedes crear tus propias opciones especificando el comando en variables:

código clave 120 = F100
cadena F100 = "/sbin/shutdown -h ahora\n"

Es decir, al presionar la tecla con código 120 se realizará la acción especificada en la variable F100; en nuestro caso, la computadora está configurada para apagarse. En lugar de F100, por supuesto, puedes utilizar cualquier otro nombre.

Ahora una parte igualmente importante es dónde anotar todo esto. La documentación y numerosos consejos sugieren utilizar el archivo de diseño de consola actual (en mi caso, boottime.kmap.gz). Por cierto, este es el único archivo que describe los diseños disponibles después de instalar KUbuntu; Para ver otras opciones, debe instalar el paquete de datos de la consola. Después de esto, en /usr/share/keymaps/i386/ puede encontrar varios subdirectorios con archivos dentro. Pero si necesita cambiar a otro diseño (en Ubuntu y algunas otras distribuciones se usa el archivo /etc/default/console-setup o ~/.console-setup para este propósito), será necesario transferir todas las configuraciones a otro archivo, que es algo
incómodo. Si decides dar este paso, utiliza las entradas existentes como plantilla, sin escribir nada en la primera posición, y no olvides dejar una línea en blanco al final.

Un poco sobre la computadora portátil

Hasta ahora no me he encontrado con una computadora portátil cuyos códigos de escaneo clave no se hayan podido determinar. Por lo tanto, la configuración aquí no difiere de las descritas anteriormente. Aunque hay una técnica de la que me gustaría hablar. El modo de hibernación me parece muy cómodo de usar, cuando, al encender la computadora, encuentras todo en su lugar. Las distribuciones modernas, por regla general, lo admiten, aunque la configuración es, en general, simple: simplemente instale el paquete de hibernación y anule los parámetros necesarios en el archivo de configuración. Lo único es que cada vez que se cambia a este modo es necesario ejecutar el script /usr/sbin/hibernate, lo cual no siempre es conveniente. Solo quiero cerrar la tapa del portátil y volver a encenderlo.
comida, descubre cada cosa en su lugar.

Esto es muy fácil de hacer usando el demonio acpid, que es una especie de interfaz de usuario que le permite administrar cualquier evento ACPI disponible a través de /proc/acpi/event. En este caso, acpid lee un conjunto de archivos de configuración del directorio /etc/acpi/events/. Si el paquete con el demonio no está incluido en la distribución, instálelo desde el repositorio; La última versión se puede obtener en el sitio web phobos.fs.tum.de/acpi. Después de la instalación, debe crear dos archivos en el directorio /etc/acpi/events: lid y power. El primero describe la reacción al cerrar la tapa, el segundo al presionar el botón de encendido.

$ sudo mcedit /etc/acpi/events/lid

evento=botón/tapa.*
acción=/usr/sbin/hibernar

$ sudo mcedit /etc/acpi/events/power

evento=botón/encendido.*
action=/sbin/shutdown -h ahora

Son opciones algo simplificadas, en KUbuntu encontrarás scripts más complejos. Después de esto, necesitas reiniciar el demonio acpid:

$ sudo /etc/init.d/acpid reiniciar

Ahora, cuando cierres la tapa de la computadora portátil, el sistema hibernará con la energía apagada y cuando presiones el botón de encendido, se apagará. Sencillo y conveniente.

Programas de instalación

Si no te gusta trastear con archivos de configuración, te sugiero varios programas que te ayudarán a configurar el funcionamiento de las teclas multimedia. Por ejemplo, el propósito inicial del programa Sven (sven.linux.kiev.ua) es configurar teclas adicionales en un teclado multimedia, pero a partir de la versión 0.4, puede corregir errores tipográficos y cambiar la distribución del teclado. Además, incluso si tienes un teclado normal, con su ayuda puedes emular teclas multimedia utilizando atajos de teclado. También puede asignar acciones a botones específicos del mouse. Entiende aproximadamente 10.000 palabras en ruso y 9.500 palabras en inglés. Si el programa no cambia
en sí, entonces el diseño se puede cambiar manualmente usando una tecla especialmente designada (Interrumpir de forma predeterminada). Una tecla separada (Bloqueo de desplazamiento) puede cambiar el caso de las palabras (superior, inferior, la primera letra es superior, el resto es inferior). El indicador de cambio de diseño del teclado recuerda su estado para cada ventana, por lo que si cambia con frecuencia entre aplicaciones, ya no necesitará cambiar el diseño adicionalmente. El programa tiene grandes capacidades y te aconsejo que le eches un vistazo. Todos los ajustes se realizan utilizando programa de graficos, construido sobre bibliotecas GTK+. Sven fue probado en Linux, pero en principio debería funcionar en sistemas *BSD. Administrador de ventanas utilizado
no importa.

Las capacidades de KeyTouch (keytouch.sf.net) son algo más modestas, esta utilidad se utiliza exclusivamente para configurar teclas multimedia. Aunque con su ayuda puedes asignar una acción diferente a cualquier tecla que difiera de la configuración predeterminada. En el sitio web del programa, además de los textos fuente y los paquetes de algunas distribuciones, puede encontrar configuraciones listas para usar para teclados multimedia de los fabricantes más conocidos.

Otro solución interesante- xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html): le permite asignar cualquier comando, incluidos los comandos de shell, a cualquier botón del teclado y del mouse. Todos los ajustes se realizan en un archivo de configuración, que tiene un formato simple y comprensible.

Lo más probable es que ya esté en tu teléfono instalado por defecto Escáner de códigos QR, puede usarlo fácilmente para escanear su primer código QR. Esto es muy fácil de hacer. Simplemente sigue nuestras instrucciones.

1. Abra el lector de códigos QR en su teléfono.

2. Sostenga su dispositivo sobre el código QR para que sea claramente visible en la pantalla de su teléfono inteligente.

Si sostiene su teléfono inteligente correctamente sobre el código QR, sucederá lo siguiente:

  • El teléfono escanea automáticamente el código.
  • En algunas aplicaciones, tienes que hacer clic en una imagen para escanear un código, en lugar de en un botón como lo harías para tomar una foto en tu teléfono inteligente.

3. Presione el botón indicado, si es necesario.

¡Súper! Su teléfono inteligente lee el código y sigue el enlace indicado, lo que no siempre ocurre instantáneamente. En la mayoría de los dispositivos, esto puede tardar unos segundos.

Empezarás a ver códigos QR por todas partes. Sirven para enseñar, informar, explicar y muchas cosas más. ¡Encuéntralos y escanéalos! Los códigos QR te ahorrarán mucho tiempo y esfuerzo.

Cómo escanear códigos QR en Android

Ahora te diremos cómo usar la aplicación de escaneo de códigos QR en Android.

Brevemente:
1. Abierto Tienda de juegos .
2. Buscar Lector de códigos QR .
3. Seleccione Lector de códigos QR(a través de Escanear).
4. Haga clic en " Instalar".
5. Abra el programa Lectura de código QR.
7. Apunte la cámara al código QR.
8. Haga clic en " DE ACUERDO".

Paso 1. Abra Play Store en Android. Este es un ícono en una aplicación o en la pantalla de inicio.

Paso 2. Introduce lector de códigos QR en el buscador. Aparecerá una lista de aplicaciones para leer el código QR.

  • Este artículo explica cómo utilizar el lector de códigos QR, pero puedes elegir la aplicación que prefieras. Solo asegúrese de leer sobre la aplicación antes de descargarla.
  • Los pasos deberían ser los mismos para todas las aplicaciones de lectura de códigos QR.

Paso 3.Haga clic en Lector de códigos QR desarrollado por Scan. El nombre del desarrollador aparece debajo de cada aplicación. Es posible que tengas que desplazarte hacia abajo para encontrar la aplicación creada por Scan.

Etapa 4.Haga clic en Instalar. Aparecerá una ventana emergente pidiéndote que otorgues permiso para acceder a la información de tu Android.

Paso 5.Haga clic en Aceptar. El lector de códigos QR ahora se instalará en su dispositivo Android.

    • Cuando se descargue la aplicación, el botón "Instalar" cambiará a "Abrir" y tendrás un nuevo icono en la aplicación.

Paso 6.Abra el lector de códigos QR. Este es un ícono que parece un código QR en la aplicación. Esto abrirá una aplicación que parece la pantalla de una cámara estándar.

Paso 7Alinee el código QR en el marco de la cámara. Un poco como tomar fotos, excepto que no tienes que presionar ningún botón. Cuando el escáner de código de barras lea el código, aparecerá una ventana emergente con la URL en el código.


Paso 8Haga clic en "Aceptar" para abrir el sitio web. Esto inicia su navegador web predeterminado y navega a la URL en el código QR.

El siguiente dispositivo típico de PC, que parece simple, pero que a veces causa problemas al investigador, es el teclado.

En general, el dispositivo es sencillo. Especialmente no los modelos ya obsoletos conectados al puerto PS/2. Como muestran numerosos datos experimentales, el chip de control del teclado escanea las pulsaciones de teclas y las transmite en código de serie al puerto. La frecuencia de reloj de esta transmisión es múltiplo (en la gran mayoría de los casos) de 6,3 o 10 kHz. Aunque en los últimos años el autor se ha topado con un par de ejemplares cuya frecuencia de reloj rondaba los 20 kHz.

Todos los teclados, cuando mantiene presionada cualquier tecla, comienzan (después de una pausa) a repetir la transmisión del código de tecla "ad infinitum". En el modo normal, esto suele provocar un desbordamiento del buffer del controlador y un mal funcionamiento en unos pocos segundos. Aparece señal de sonido"dinámica" del sistema - "chirrido". La esencia del modo de prueba (el más generalmente aceptado) es bloquear el comando de desbordamiento del búfer, lo que permite, cuando se presiona una tecla, garantizar la transmisión interminable del carácter seleccionado a través del cable del "teclado".

Como siempre, para el correcto cálculo posterior del resultado, es necesario crear una alternancia constante de pulsos en el paquete de códigos. Para los códigos de teclado, puede haber dos combinaciones de este tipo:

10101010 (55) tecla “+; = "

01010101 (AA) en tablas estándar - no aplicable

La tabla general de códigos de escaneo se proporciona en la tabla 14.1.

Tabla 14.1- Códigos de escaneo de teclado

Llave

código de escaneo

Llave

código de escaneo

Llave

código de escaneo

Llave

código de escaneo

Así, al implementar el modo de prueba y, por ejemplo, colocar un peso en la tecla “+”, una secuencia infinita de paquetes de pulsos estará presente en el cable del teclado. En este caso, el período de repetición del pulso en el paquete (es decir, la frecuencia del reloj) será igual a 6,10 o 20 kHz, y la frecuencia de repetición del paquete será mucho menor. El formato de datos se muestra en la Figura 14.1.

Para intercambiar datos en el cable del teclado, hay dos líneas: KBData y KBSync. Al transmitir códigos de escaneo, el teclado establece el siguiente bit de datos en la línea KBData y confirma la transmisión transfiriendo la señal de "1" a "0" en la línea KBSync.

El controlador puede indicar que no está preparado para transmitir/recibir datos con un nivel bajo en la línea KBSync. El resto del tiempo, cuando no hay datos que transmitir, ambas líneas tienen un nivel de señal alto.



Como se desprende de lo anterior, en el espectro PEMIN del cable del teclado se deben esperar componentes de frecuencia con una frecuencia de reloj de 1/76,04·10 -6 = 13,15 kHz. Además, debido a la presencia de dos señales desfasadas con períodos diferentes (¡pero múltiples!), los componentes de frecuencia pares e impares diferirán en amplitud.

Como era de esperar, el PEMIN de una línea de datos sincronizada no es, en principio, informativo. Pero distinguir un PEMIN de otro no es nada fácil. Solo hay un cable, las señales son sincrónicas...

Prácticamente la única forma– seleccione un código de escaneo con el número mínimo de “1” lógicos en el paquete. Estas son las teclas “F3” y F9” (03 y 01 en código hexadecimal). El código "00" no se utiliza.

El oscilograma del código de escaneo “F3” se muestra a continuación.


Estrictamente "en términos de energía", si mide todos los componentes de frecuencia de PEMIN con el código "=" y, por ejemplo, el código "F9", entonces la diferencia en las lecturas del receptor en CADA uno de los componentes de frecuencia es la información verdadera. parte de la energía PEMIN. Además, este es un máximo máximo. El trabajo es bastante complejo y tedioso si no es posible confiarlo a una “máquina automática”. Los propios componentes de PEMIN para tales bajas frecuencias no son fácilmente identificables. Así también para “captar” las diferencias...



En la práctica del SI, en la inmensa mayoría de los casos, simplemente miden los niveles de PEMIN (sin restar nada) y calculan el parámetro de seguridad. Esto es posible, “con reserva”, pero el especialista está obligado a conocer la verdadera situación.

Al final de la revisión, la "distribución de pines" de los conectores de teclado AT y PS/2.


Las “imágenes” en el receptor no parecen tan “clásicas”, sin embargo, son bastante reconocibles. Aquí hay ejemplos



El espectro muestra claramente un aumento en la amplitud de los componentes al disminuir la frecuencia.

También hay características de mediciones "clave" en esta región de frecuencia (desde decenas de kHz y más). El caso es que el teclado, en su ubicación habitual, se encuentra no lejos de unidad del sistema. Y en la parte superior de la SB está bloqueo de pulso La fuente de alimentación es la fuente más poderosa de PEMIN para los componentes “E” y “H”. A la “luz” de un foco tan teatral, ver la tenue “luz” del teclado es un arte especial. Por ello propongo la siguiente técnica. Aleje el teclado lo más posible del SB. Mejor: en un extensor PS/2. Unos 2-2,5 metros.

Coloque la antena de manera que apunte lo menos posible al satélite (la señal, con un ancho de banda del receptor superior a 10 kHz, es un espectro continuo). Y cerca de la antena fija y orientada, comience a girar el teclado y su cable (¡no al revés!). Entonces tendrá muchas más posibilidades de detectar señales PEMIN desde el teclado y ver los componentes PEMIN en la pantalla del analizador con sus propios ojos.

Todo lo anterior aplicado a un teclado con interfaz PS/2. Pero ahora están siendo sustituidos masivamente por teclados con interfaz USB.

En general, esta interfaz se analizó con cierto detalle junto con las impresoras. Sin embargo, sería útil dar alguna “designación de destino” con respecto al teclado.

Recordemos la construcción de paquetes para la interfaz USB, teniendo en cuenta que el teclado está conectado estrictamente a baja velocidad (es decir, a través de la interfaz USB 1.0).

El tamaño máximo de carga útil de DATOS para dispositivos de baja velocidad es de 8 bytes. Es decir, esto es exactamente lo que requiere el código de escaneo del teclado.

Ver la señal (es decir, los datos) en la línea USB resultó no ser una tarea tan fácil. Sin embargo, esto es lo que se reveló precisamente en el cable de un típico “teclado” USB modelo GENIUS KB-06XE, específicamente en la línea (cable) “datos +” (Figura 14.10)


Estos dos oscilogramas cambian entre sí con una periodicidad no especificada (caótica), y las “imágenes” de las señales no dependen de la tecla del teclado presionada (o de ninguna). No fue posible identificar ningún otro cambio en la parte "variable" del paquete (trama).

La frecuencia de estos paquetes está estrictamente estabilizada (figura 14.11) y la duración de cada uno de ellos (visible en los oscilogramas) es de aproximadamente 34 ± 1 μs.


Los paquetes siguen cada 4 ms. Sin embargo, cabe señalar que el final de cada paquete "tembla" todo el tiempo, y el clásico "temblor" se nota. Por lo tanto, la imagen espectral es algo borrosa y sólo se vuelve clara con un promedio suficientemente largo.


Además, hay que tener en cuenta que, debido a los diferentes períodos de repetición de los impulsos y a sus diferentes duraciones, el espectro tiene el carácter de una especie de mezcla de espectro continuo y lineal. Sin embargo, el carácter de lóbulo del espectro, natural para una secuencia infinita de paquetes y múltiple en sus “lóbulos” de la duración promedio de un paquete, se conserva muy claramente. Sólo los "ceros" de la función se suavizan mediante fluctuaciones y un período de repetición no variable de pulsos individuales. Sin embargo, la imagen en sí es bastante típica. Con una resolución de frecuencia más fina, el espectro comienza a resolverse en "líneas" determinadas por la tasa de repetición del paquete (250 Hz) (Fig. 14.13). Por lo tanto, con la visualización más simple de oscilogramas y no sincronizada con la transmisión real del código de escaneo, Identificar y visualizar secciones del marco (paquete), responsable de la transferencia de datos, falló. Sin embargo, se puede argumentar que el PEMIN del cable del teclado seguirá siendo este y no otro. Está claro en qué frecuencias buscarlo, está claro que será de naturaleza continua (en cualquier caso, con una resolución de frecuencia del receptor superior a 0,3 kHz). Y está claro qué valor sustituir como valor de reloj en los cálculos (el período mínimo de pulsos en un paquete en el experimento fue de 1,322 μs). Medir esto, en cualquier SI, con un osciloscopio con al menos un ancho de banda de 200 MHz es una tarea trivial. El modo de prueba, de hecho, es cualquiera, puede presionar cualquier tecla o no puede presionar nada. Los paquetes se transmiten de todos modos a través de la interfaz. Y, en una primera aproximación, los consideramos informativos (hasta que se demuestre lo contrario).

Los oscilogramas y espectros dados se obtuvieron utilizando un osciloscopio AKIP-4108/2 conectado a la misma computadora en la que se realizaron las mediciones (cabe señalar que esta es una repetición muy funcional del desarrollo de la empresa PICO Technology por parte nuestra. No peor que los chinos :)).

El espectro claramente va mucho más allá de 1 MHz (el osciloscopio ya no lo permitía y no tenía mucho sentido conectar un analizador). El resto lo determina el cable, como antena aleatoria, y el grado de blindaje.

Para otros modos de interfaz USB se necesita un osciloscopio con un ancho de banda de muchos GHz.

Cómo calcular exactamente el espectro continuo y, al mismo tiempo, permanecer dentro del marco del NMD actual es una conversación separada y no para una discusión abierta, por desgracia... Sin embargo, en publicaciones posteriores tendremos que volver a ello, allí no hay ningún lugar adonde ir. Intentaré “mantenerme dentro de los límites”...

Lo que me impulsó a trabajar en un dispositivo de este tipo fue el hecho de que la mayoría de los dispositivos Gamemort fáciles de replicar no permitían la implementación de una cantidad suficiente de botones de control. Un puerto de juegos de PC fue diseñado originalmente para un máximo de cuatro botones. Todo tipo de extensiones tampoco tienen la flexibilidad deseada. Por ejemplo, la extensión CH Flightstick Pro, popular entre los aficionados al bricolaje, te permite implementar hasta 14 botones, pero no puedes usar dos botones al mismo tiempo; se trata de volar en dichos dispositivos en juegos en los que tienes que "girar tu" constantemente cabeza” - en los mismos pájaros, puedes olvidarlo. Algunas extensiones utilizan una interfaz puramente digital: los datos sobre los botones presionados y la desviación de la perilla se transmiten a lo largo de líneas de puerto de juego digitales, que originalmente estaban destinadas a transmitir datos sobre los cuatro botones "estándar". Incluso considero que tales extensiones son algo redundantes. Y convertir datos analógicos a digitales complica el diseño del joystick. Además, no todos los juegos quieren entender qué tipo de monstruo está "adjunto" a él. Y el teclado: ¡aquí está, en todo su esplendor de 102 teclas! Además, los suscriptores de RU.GAME.FLIGHT echaron más leña al fuego, preguntando de vez en cuando “¿cómo puedo domar el teclado y cruzarlo con alegría?” y salir sin nada.

En resumen, el trabajo del dispositivo es "sentarse" en el bus entre el teclado y la PC y simular pulsaciones de teclas en el teclado de acuerdo con los botones presionados en el dispositivo.

Entonces me senté a desarrollarlo. Antes de eso, tenía experiencia trabajando con varios microprocesadores y microcontroladores. En general, dedos de oreja a oreja. Y creí ingenuamente que ahora tomaré los muelles, haré RTFM y en una semana estaré sobre un caballo blanco. Todo el problema fue que no pude encontrar documentación sobre el protocolo de transferencia de datos entre el teclado y el controlador ni en Internet ni en las conferencias Fido correspondientes. Tuve que coger un osciloscopio y pasar varias semanas desmontando las improvisaciones e intentando repetirlas. Por lo tanto, la mayor parte de la información que se presenta a continuación es el resultado de mis conclusiones y no está documentada. Si me equivoco en algo, estaré encantado de escuchar tus comentarios en Rashpil en ukr punto neto.

Principios básicos de la transferencia de datos.

Todo lo siguiente es válido para los teclados PS/2 y AT, que se diferencian únicamente en el diseño del conector (se puede conectar mediante un adaptador).

El intercambio de datos bidireccional se produce entre el teclado y el controlador ubicado en la placa base de la computadora (en adelante, simplemente "controlador"). El controlador transmite varios comandos (por ejemplo, cambiar el estado de los LED o la velocidad de repetición automática). El teclado transmite códigos de escaneo de las teclas presionadas (código de escaneo - símbolo claves, no deben confundirse con los códigos ASCII).

escanear códigos

Llave código de escaneo Llave código de escaneo Llave código de escaneo Llave código de escaneo
1 16 2 1E 3 26 4 25
5 2E 6 36 7 3D 8 3E
9 46 0 45 - 4E + 55
Retroceso 66 Pestaña 0D q 15 W. 1D
mi 24 R 2D t 2C Y 35
Ud. 3C I 43 oh 44 PAG 4d
[ 54 ] 5B Ingresar 5A Ctrl(L) 14
A 1C S 1B D 23 F 2B
GRAMO 34 h 33 j 3B k 42
l 4B ; 4C " 52 ` 0E
Cambio(L) 12 \ 61 z 1A X 22
C 21 V 2A B 32 norte 31
METRO 3A , 41 . 49 / 4A
Mayús(R) 59 Alt(L) 11 Espacio 29 Bloq Mayús 58
Esc 76 F1 05 F2 06 F3 04
F4 0C F5 03 F6 0B F7 83
F8 0A F9 01 F10 09 F11 78
F12 07 Bloqueo de desplazamiento 7E * 7C Num lock 77
7 6C 8 75 9 7D - 7B
4 6B 5 73 6 74 + 5A
1 69 2 72 3 7A 0 70
. 71 Alr(R) E0-11 Ctrl(R) E0-14 Imprimir pantalla E0-12-E0-7C
Insertar E0-70 Borrar E0-71 Izquierda E0-6B Hogar E0-6C
Fin E0-69 Arriba E0-75 Abajo E0-72 Página arriba E0-7D
Página abajo E0-7A Bien E0-74 Ingresar E0-5A / E0-4A

Nota: el teclado AT en realidad tiene tres conjuntos diferentes de códigos de escaneo. Solo he dado los valores para el conjunto número 2, el predeterminado.

Cuando presiona una tecla, el teclado transmite el código de escaneo de esta tecla al controlador. Cuando se libera, primero el prefijo 0F0h y luego el código de escaneo de la clave liberada.

Las combinaciones de teclas con Shift, Alt y Ctrl se transmiten como una secuencia de dos códigos de escaneo. Desde la perspectiva del controlador, estas claves no son diferentes de cualquier otra. De la misma manera, los modos Bloq Num y Bloq Mayús no difieren a nivel de hardware; difieren a nivel de software según el programa que atiende las interrupciones del teclado.

Me gustaría discutir brevemente la implementación del modo de repetición automática. Como regla general, las funciones de repetición automática se asignan al propio teclado; después de un cierto tiempo, si no se suelta la tecla, el teclado envía otro código de escaneo exactamente igual. Si presiona otra tecla en este momento, otro código de escaneo “volará” al controlador y se considerará que solo se ha presionado una tecla. En los juegos, este problema se resuelve de manera simple: la tecla se considera presionada hasta que llega el código de escaneo correspondiente con el prefijo 0F0h. Por lo tanto, en principio no implementé las funciones de repetición automática.

Además de los códigos de escaneo anteriores, el teclado puede devolver algunos comandos de servicio. Pero estos comandos, así como los comandos emitidos por el controlador, no tienen ningún valor práctico en este caso. Por tanto, no me detendré en ellos.

Descripción del protocolo de intercambio.

El intercambio de datos entre el teclado y el controlador se realiza de forma asíncrona mediante un protocolo serie. La esencia de la transmisión asíncrona es que los datos se transmiten solo cuando hay algo que transmitir: se presiona/suelta una tecla del teclado y se debe emitir el código de escaneo correspondiente o el controlador debe emitir un comando al teclado.

Hay dos líneas para el intercambio de datos: KBData y KBSync. Al transmitir códigos de escaneo, el teclado establece el siguiente bit de datos en la línea KBData y confirma la transmisión transfiriendo la señal de "1" a "0" en la línea KBSync. Al recibir datos del controlador, el teclado lee el bit de datos de la línea KBData y confirma la recepción transfiriendo la señal en la línea KBSync de “1” a “0”. El controlador puede indicar que no está preparado para transmitir/recibir datos con un nivel bajo en la línea KBSync. El resto del tiempo, cuando no hay datos que transmitir, ambas líneas tienen un nivel de señal alto. La frecuencia de repetición de pulsos de la línea KBSync es de aproximadamente 10-25 KHz.

Los datos se transmiten en el siguiente orden: un bit de inicio - "0", ocho bits de datos, un bit de paridad (la suma de todos los bits +1), un bit de parada - "1". Después de recibir cada byte de datos, el controlador establece la línea KBSync en nivel bajo, lo que indica que está ocupado procesando los datos recibidos y no está listo para recibir el siguiente. Esto puede considerarse confirmación de aceptación. El teclado confirma cada byte del comando recibido emitiendo el código 0FAh. Si ocurre un error durante la transmisión, el controlador puede requerir que se repita la transmisión del último byte emitiendo el comando 0FEh. El teclado se comporta de manera diferente: simplemente ignora los errores. No veo nada fatal en esto: si su sistema falla con frecuencia, entonces no tiene lugar en su escritorio.

Lo más probable es que mis explicaciones hayan sido demasiado confusas, así que intentaré ilustrarlas con varios diagramas de tiempo.

Vista general de la transferencia de datos desde el teclado (S1 - bit de inicio; S2 - bit de parada; D0-D7 - datos; P - bit de paridad; W - procesamiento de datos recibidos)

Un ejemplo de transmisión de bytes de 74 horas: la tecla "6" en el teclado numérico. En este ejemplo, cuando el teclado inicia una transferencia, el controlador indica que no está listo para recibir datos y el teclado espera a que la línea KBSync quede libre.

Implementación de hardware

Ahora pasaré directamente a la descripción de la implementación del dispositivo en hardware.

El dispositivo está conectado a la interrupción de las señales KBSync y KBData y pasa señales desde/hacia el teclado a través de sí mismo, sondea el estado de los cuatro botones y emite los códigos de escaneo correspondientes, simulando así el funcionamiento del teclado.

El dispositivo se basa en un microcontrolador de un solo chip AT89C2051. El microcontrolador Atmel AT89C2051 pertenece a la familia MCS-51 ( análogo doméstico- MK-51). La principal diferencia entre el AT89C2051 y el i8051 es el menor consumo de energía, el número de líneas de E/S reducido a 15 y la imposibilidad de utilizar memoria externa. Más información detallada AT89C2051 e i8051 se pueden encontrar en www.atmel.com y www.intel.com. En lugar de AT89C2051, puede utilizar AT89C51, i8051 (KR1816BE51) o i8031 (KR1816BE31) con ROM externa. Pero las dos últimas opciones, debido a su mayor consumo de energía, pueden provocar que se funda el fusible del controlador del teclado.

En los microcontroladores Atmel, después de la designación principal, la frecuencia máxima del generador de reloj se indica en megahercios. Le aconsejo que instale un microcontrolador diseñado para una frecuencia de 24 MHz y un cuarzo con una frecuencia más alta: 16-20 MHz.

Diagrama esquemático. (R1-R4 - 47K; R5 - 10K; C1, C2 - 18pF; C3 - 1uF; D1 - AT89C2051; BQ1 - cuarzo 12-24MHz)

La línea P1.4 se utiliza como salida de habilitación de sondeo del botón. Esta es la base para futuras expansiones: las líneas P1.4-P1.7 se usarán para emitir la dirección de la línea para sondear los botones presionados (hasta 16 líneas de 4 botones cada una). “0” en la línea P1.0-P1.3 significa que se presiona el botón correspondiente.

Los elementos C3 y R5 implementan un circuito que genera una señal de reinicio cuando se aplica energía.

KBLas líneas de datos del teclado y el controlador se suministran a las entradas P3.2 (INT0) y P3.3 (INT1). Por tanto, un intento de iniciar la transferencia de datos desde el teclado o el controlador provoca la correspondiente interrupción. Las rutinas para dar servicio a estas interrupciones simplemente transmiten señales correspondientes a la transferencia de un byte a través del microcontrolador. Cuando el microcontrolador no está ocupado transmitiendo datos, se consultan las líneas P1.0-P1.4, se procesan los datos recibidos y se emiten los códigos de escaneo correspondientes al controlador. Esta versión da prioridad a los datos transmitidos por el propio dispositivo. Por lo tanto, a veces se pueden perder los datos del teclado.

Para concluir esta sección, daré la distribución de pines de los conectores de teclado AT y PS/2.

La señal -KBReset es una señal opcional. Algunos controladores pueden usar esto para restablecer el teclado.

Texto de firmware

Proporciono el texto fuente del firmware para el microcontrolador AT89C2051 con la esperanza de que un lector curioso pueda corregirme o adaptar el programa para que funcione con otro tipo de microcontrolador.

Org 0 sjmp iniciar org 3 jmp from_keyboard; INT0 org 13h jmp to_keyboard; INT1 iniciar movimiento a,#5; establecer el tipo de interrupción mov tcon,a; INT0 e INT1 en el frente - mov a,#0; transición de "1" a "0" mov ip,a mov a,#85h mov ie,a mov a,#0ffh ; el último mov 6,a se almacena en la dirección 06h; código procesado clr p1.4; habilitar el bucle de sondeo mov a,p1; se lee el estado de los botones y a,#15; - los cuatro bits menos significativos del puerto P1; D0 - arriba; D1 - derecha; D2 - abajo; D3 - dptr de movimiento izquierdo,#hat_table; leer datos sobre cuatro botones movc a,@a+dptr; ampliado a ocho direcciones; D0 - arriba; D1 - derecha; D2 - abajo; D3 - izquierda; D4 - derecha arriba; D5 - derecha abajo; D6 - izquierda abajo; D7 - movimiento izquierdo arriba r2,a; guardando datos mov r0,a xrl a,6 ; si los nuevos datos no difieren del bucle jz; recibido en el ciclo anterior - repita la encuesta mov r1,#8; bucle para ocho bits loop3 jnb acc.7, loop2; "1" - hubo un cambio push acc mov a,r1 mov dptr,#key_table-1; extraiga el código de escaneo correspondiente movc a,@a+dptr push acc mov a,r0; registro R0 - señal de presionar/soltar rlc a ; clave emulada mov r0,a; "1" - la "clave" fue liberada pop acc mov acc.7,c ; si D7=1 - el código de escaneo estará precedido por 0f0h una llamada a send_key; emitiendo un código de escaneo pop acc sjmp loop2a loop2 push acc mov a,r0 rlc a mov r0,a pop acc loop2a rl a djnz 1,loop3 mov 6,r2 sjmp loop send_key mov es decir,#80h; interrumpe una llamada deshabilitada send2comp; enviando código de escaneo mov, es decir, #85h; interrupciones habilitadas ret send2comp jnb acc.7,send; si es necesario, 0f0h push acc mov a,#0f0h acall enviar pop acc clr acc.7 mov b,#200 l9 nop djnz b,l9 enviar push 1 push 0 clr p3.3; P3.3 - KBData mov b,#6; emisión del bit de inicio l10 nop djnz b,l10 clr p3.5 mov b,#15 l2 nop djnz b,l2 setb p3.5 mov b,#6 l3 nop djnz b,l3 mov r0,#8; generando ocho bits de datos y contando paridad mov r1,#1 byte_loop xrl 1h,a rrc a mov p3.3,c mov b,#6 l6 nop djnz b,l6 clr p3.5 mov b,#15 l4 nop djnz b, l4 setb p3.5 mov b,#6 l5 nop djnz b,l5 djnz r0,byte_loop mov a,r1 mov c,acc.0 mov p3.3,c ; bit de paridad de salida mov b,#6 l8 nop djnz b,l8 clr p3.5 mov b,#15 l12 nop djnz b,l12 setb p3.5 mov b,#6 l13 nop djnz b,l13 setb p3.3; bit de parada de salida mov b,#6 l7 nop djnz b,l7 clr p3.5 mov b,#15 l11 nop djnz b,l11 setb p3.5 mov b,#200 l14 nop djnz b,l14 setb p3.5 pop 0 pop 1 ret from_keyboard; transferencia de un byte al controlador mov, es decir, #80h push psw push acc push b mov b,#2 in6 jnb p3. 4,in8 djnz b,in6 sjmp in7 in8 mov b,#10 in1 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in1 in2 mov a,p3 rl a orl a,#11010111b mov p3,a jb p3.4,in2 djnz b,in1 in3 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in3 mov p3,#0ffh in4 jb p3.5,in4 in5 jnb p3 .3,in7 clr p3.4 jnb p3.5,in5 in7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov es decir,#85h reti to_keyboard; transfiriendo un byte al teclado mov, es decir, #80h push psw push acc push b mov b,#5 out61 jb p3.5,out7 djnz b,out61 setb p3.4 setb p3.2 out62 jnb p3.5,out62 out6 mov c ,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out6 out8 mov b,#10 out1 mov c,p3.4 mov p3.5,c mov c , p3.3 mov p3.2,c jnb p3.4,out1 out2 mov c,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out2 djnz b, out1 out3 mov c,p3.4 mov p3.5,c mov c,p3.2 mov p3.3,c jnb p3.2,out3 out7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov es decir, #85h reti hat_table; tabla para ampliar los datos leídos desde el puerto P1; el índice de la tabla es un código binario de cuatro bits; datos: el estado de las ocho claves emuladas; "0" - tecla presionada db 0ffh; izquierda+derecha+arriba+abajo=combinación prohibida db 0ffh; izquierda+derecha+abajo=combinación prohibida db 0ffh; izquierda+arriba+abajo=combinación prohibida db 0bfh; izquierda+abajo=izquierda-abajo db 0ffh; izquierda+derecha+arriba=combinación prohibida db 0ffh; izquierda+derecha=combinación prohibida db 07fh ; izquierda+arriba=izquierda arriba db 0f7h; izquierda db 0ffh; derecha+arriba+abajo=combinación prohibida db 0dfh; abajo+derecha=abajo-derecha db 0ffh; arriba+abajo=combinación prohibida db 0fbh; abajo db 0efh; derecha+arriba=derecha arriba db 0fdh; derecha db 0feh; arriba db 0ffh; ningún botón presionado key_table; tabla de códigos de escaneo db 75h; teclado numérico 8 db 74h; teclado numérico 6 db 72h; teclado numérico 2 db 6bh; teclado numérico 4 db 7dh; teclado numérico 9 db 7ah; teclado numérico 3 db 69h; teclado numérico 1 db 6 canales; teclado numérico 7

En el archivo tools.zip encontrará dos programas: a51.exe - un ensamblador, hex2bin - un convertidor de archivos hexadecimales, que se obtienen en la salida del ensamblador, a un formato binario adecuado para actualizar la ROM del microcontrolador con un programador. .

Montaje y solución de problemas

Puedes montar el dispositivo según el esquema anterior sobre una protoboard, un tablero grabado en casa o fabricado industrialmente. Se debe colocar un enchufe debajo del microcontrolador. Es mejor dejar espacio en la placa para 2-3 paquetes DIP de 16 pines; se agregarán en versiones posteriores.

A continuación, después de realizar los cambios deseados, el texto fuente del microprograma se ensambla utilizando el programa a51.exe. Para actualizar el firmware con el programador, el programa hex2bin.exe convierte el archivo hexadecimal resultante en una imagen binaria.

Habiendo ensamblado el dispositivo por completo, lo conectamos al teclado y al ordenador. Tres... Dos... Uno... ¡Vamos!... Un dispositivo ensamblado correctamente a partir de componentes en buen estado debería funcionar inmediatamente. En caso contrario comprobar la correcta instalación y la presencia de alimentación en el microcontrolador. Usando un osciloscopio, verifique si el generador de reloj se ha iniciado y si llega un pulso de alto nivel a la entrada RST cuando se enciende la alimentación. Al presionar teclas en el teclado, los pulsos en las líneas P3.3 y P3.5 deben repetir, con cierto retraso, los pulsos en las líneas P3.2 y P3.4, respectivamente. Cuando presiona/suelta los botones del dispositivo, también deberían aparecer pulsos en las líneas P3.3 y P3.5. Si esto no ayuda, escríbeme ( Rashpil en puerto punto ru) informe de error, indicando el modelo y tipo (AT, PS/2) de su teclado, placa base/multitarjeta, microcontrolador utilizado y frecuencia del utilizado resonador de cuarzo. Intenté probar el dispositivo con el número máximo disponible para mí placas base y teclados: no se identificaron problemas. En mi caso se utilizó cuarzo de 14,2 MHz.

Errores conocidos

La versión actual del firmware contiene los siguientes defectos:

  • No se realiza un seguimiento de los códigos de escaneo de doble byte. Esto lleva al hecho de que a veces, cuando se usa la cabaña y el teclado al mismo tiempo, las teclas del teclado se "congelan" cuando se presionan o se perciben incorrectamente;
  • A veces los datos se transfieren incorrectamente desde el controlador al teclado. Esto se puede expresar, por ejemplo, en el hecho de que los LED no cambian su estado cuando se presionan las teclas Bloq Num, Bloq Mayús, Bloq Despl;
  • Traqueteo de los contactos de los botones de la cabaña. Hasta ahora esto no ha sido fatal para mí en los juegos.

Planes futuros

Aquí hay una breve lista de lo que me gustaría implementar en versiones futuras:

  • Correcciones de errores menores: procesamiento de señales más correcto; seguimiento de códigos de escaneo de doble byte;
  • Conexión de una matriz de 16x4: admite hasta 64 botones o dos botones y hasta 56 botones;
  • Admite hasta 16 diseños de códigos de escaneo diferentes almacenados en la ROM del microcontrolador;
  • Conexión de un chip NVRAM con capacidad de guardar y reprogramar “sobre la marcha” hasta 32 diseños de códigos de escaneo.

Conclusión

Intenté presentar todos los datos necesarios para comprender el principio de funcionamiento de mi dispositivo. Esta descripción no pretende ser 100% técnicamente precisa. Si me equivoco en algo, por favor cuénteme su versión de los hechos. Si puede realizar mejoras y adiciones a mi circuito y/o firmware, si tiene ideas para un mayor desarrollo del circuito, hágamelo saber también. Además, estoy esperando información de artesanos que hayan podido replicar o adaptar este dispositivo para otro tipo de microcontroladores.

Vladímir "Rasp" Klimus (Rashpil en ukr punto neto)

  1. En la parte superior de la ventana de Google Play hay cadena de búsqueda. Esto es exactamente lo que usaremos. Activamos y escribimos el nombre de nuestra aplicación. No es necesario ingresarlo por completo. Tan pronto como el objeto indicado en la captura de pantalla aparezca en los resultados de la búsqueda, simplemente tóquelo.
  1. Seremos redirigidos a la página de inicio del programa. Hay un gran botón verde que dice "INSTALAR". Pinchalo.
  1. Estamos esperando que la aplicación termine de descargarse. Como pesa poco menos de 5 MB, el proceso no llevará mucho tiempo.
  1. Listo. Una vez completada la instalación automática, podemos iniciar el programa directamente desde aquí.
  1. También en pantalla de inicio(si está activado en la configuración) aparecerá un acceso directo de inicio.

En este punto, la instalación del programa está completa y podemos pasar a una descripción general de cómo trabajar con él.

En la captura de pantalla a continuación ves interfaz de software. Aquí se divide en 3 pestañas principales. También hay un ícono de configuración en forma de engranaje. En la pestaña principal “ESCANEAR” hay 4 herramientas principales:

  • Escanear código de barras. Se trata de un escáner QR que funciona a través de una cámara;
  • Entrada manual. Función de entrada manual de datos de códigos;
  • Decodificar desde archivo. Decodificación de un archivo. Desde aquí podrás abrir el código QR previamente descargado y leerlo;
  • Decodificar desde URL. Escanear por enlace.

En la parte inferior hay varios botones que no proporcionan funciones útiles. No deberías prestarles atención.

Veamos la configuración del programa. Hay muchos de ellos aquí. Habrá capturas de pantalla de diferentes áreas de configuración en sus pantallas, pero simplemente expresaremos algunos de los puntos más interesantes.

Por ejemplo, en la primera pantalla puedes habilitar o deshabilitar el sonido del programa. Lo mismo se puede hacer con la respuesta a la vibración. Puede configurar el modo de funcionamiento cuando el programa comienza a ejecutarse inmediatamente desde el escáner, sin pasar por el menú principal. Otra característica importante es la copia automática de datos al portapapeles.

Tan pronto como queramos comenzar a escanear e iniciar el escáner, el programa solicitará acceso a los recursos necesarios del sistema. Naturalmente, es necesario resolverlo. Haga clic en el botón marcado en la captura de pantalla.

A continuación, posicionamos el marco del escáner de manera que la franja horizontal caiga directamente sobre el QR. Trate de no estrecharle la mano y al mismo tiempo vigile su concentración. Sin una nitidez normal, el escaneo no tendrá éxito.

Para permitir que el ESCÁNER DE CÓDIGO DE BARRAS QR funcione en condiciones de poca luz, hay una luz de fondo.

Una vez que se reconozca el código, verá la información que se muestra en la captura de pantalla a continuación.

Además de escanear QR, también puedes crearlos aquí. Para hacer esto, vaya a la tercera pestaña. Lo marcamos en la captura de pantalla. La lista muestra todos los tipos de datos que se pueden cifrar. Se admite lo siguiente:

  • contacto de la guía telefónica;
  • número de teléfono;
  • URL;
  • Correo electrónico;
  • solicitud;
  • ubicación;
  • cualquier texto;
  • marcador;
  • evento del calendario.

Todo se ve así:

Una vez seleccionado y especificado el tipo de datos, todo lo que tenemos que hacer es hacer clic en el botón “Codificar”. En este caso, hemos cifrado el enlace.

Intentemos cifrar también texto arbitrario. Para hacer esto, seleccione el elemento deseado.

Ingrese la frase en el campo designado y presione el botón "Codificar".

El resultado parece genial. Cambiemos también su color. Haga clic en el botón destinado a ello.

Seleccione el tono deseado de la paleta.

Y admiramos el QR recibido.

Pasemos al siguiente programa, que también tiene una funcionalidad impresionante.

Escáner de códigos QR para droides

Otra aplicación que se puede encontrar en Google Play. También puedes descargarlo desde un enlace directo en el sitio web de Google. Por ahora, veremos el programa en sí.

Así es como se ve el acceso directo de inicio del QR Droid Code Scanner: haga clic en él.

Esta aplicación, a diferencia de la anterior, está realizada en ruso y, nada más iniciarse, tendremos que pulsar en el botón que pone: “COMENZAR”.

El escáner es visible inmediatamente, pero primero veamos su configuración. Toque el botón ubicado en la esquina superior derecha.

En el menú principal, se ven 6 mosaicos de botones que redirigen al usuario a la sección deseada. Aquí están:

Entonces, para utilizar el escáner, debes activarlo en el menú principal y, apuntando al código QR, presionar el botón “Leer”.

Aquí selecciona la pantalla de inicio, establece la dirección para Copia de reserva y se configura el idioma de la interfaz del software.

A continuación podemos instalar el mecanismo de escaneo. Se utiliza uno de los algoritmos propietarios: Zapper o ZXing. A continuación puede habilitar o deshabilitar la mira, configurar acción automática después de escanear y habilite la visualización de información sobre herramientas o la copia del enlace al portapapeles.

Esta sección configura acompañamiento sonoro, la vibración se enciende y apaga. El proceso de registrar acciones en el registro y la interacción con reloj inteligente Desgaste de Android.

Entonces podremos exportar o importar. Copia de respaldo o fijar una fecha.

Permita el envío de datos anónimos (es mejor deshabilitarlo), habilite la verificación del enlace de seguridad recibido durante el escaneo o configure el escaneo por lotes. Funciones como hacer zoom o resaltar están disponibles a continuación.

Pero nuestra configuración no termina ahí. Además de las funciones anteriores, tenemos las siguientes:

  • configurar la orientación de la pantalla;
  • trabajar con la cámara frontal;
  • análisis de enlaces;
  • exhibición de tiendas.
  • función de deslizamiento extendida;
  • prohibición de algunos caracteres especiales;
  • activación de vista previa WEB;
  • buscar imágenes guardadas.

La última pantalla de configuración contiene características interesantes como establecer el número máximo de posiciones, configurar CSV personalizados, agitar el reloj inteligente y guardar posiciones duplicadas.

Además de la configuración, en el menú del escáner de códigos QR Droid hay un elemento llamado "Más". Consideremos su funcionalidad.

Aquí están las siguientes posibilidades:

Veamos la última aplicación de nuestra lista, pero no menos funcional.

Escáner de códigos de barras y QR NeoReader

Este programa, como otros, puedes descargarlo e instalarlo a través de Google Play o mediante enlace directo. Una vez hecho esto, puede proceder directamente a trabajar con él.

La primera vez que lo iniciemos, necesitaremos satisfacer la solicitud de acceso. Haga clic en "PERMITIR".

Luego aparecerá una ventana de configuración. Aquí puedes elegir un idioma, indicar tu país, sexo y edad. Las dos casillas de verificación a continuación le permiten habilitar o deshabilitar el acceso del programa a los geodatos.

De hecho, puedes comenzar a escanear. Apunte su cámara al código QR y NeoReader QR & Barcode Scanner reconocerá automáticamente su contenido.

Creemos que estos tres programas son suficientes para cualquier persona. Elige el que más te convenga y úsalo a tu discreción. Hablaremos sobre algunas de las características de los dispositivos chinos.

Funcionalidad estándar

Algunos teléfonos inteligentes y tabletas (según la marca) tienen la función de escaneo de códigos QR de serie y todo se puede hacer sin una aplicación. No los enumeraremos todos, solo tocaremos el modelo de Xiaomi.

resumámoslo

Como resultado, aprendimos cómo escanear un código QR en Android. diferentes caminos. Esperamos que el artículo te haya resultado útil. Si aún tienes preguntas, hazlas en los comentarios. Intentaremos ayudar a todos.

Incluso si esto no sucede, uno de los usuarios del sitio definitivamente le dirá cómo salir de la situación y le dará consejos prácticos. Todo lo que tienes que hacer es darle vida.

Instrucciones en vídeo




Arriba