ImPrinter: la impresora térmica Imp eléctricos inalámbrica, conectados a internet (6 / 7 paso)

Paso 6: endosador: ¿Qué es el código?

Si el código imp y agente parece un poco extraño a ti, no te preocupes! Programación del imp implica algunas ideas nuevas, pero la referencia de la API es de gran ayuda, y la API rica hace la mayoría de las tareas de hardware en frases muy intuitivos. Para realmente entender lo que está sucediendo en el firmware del imp, no puede vencer sólo leer el código y referencia a referencia de la API, pero echemos un vistazo a algunos de los bits realmente interesantes para ayudarle a comenzar. Empezaremos con el firmware de la imp (thermalprinter.device.nut).

El firmware de nuestro dispositivo se inicia con una definición de clase para la clase de "impresora". Las clases son un poco más útiles en situaciones donde desea crear varias instancias de algo, pero esto proporcionar una buena manera de estructurar nuestro código. La mayoría de las cosas que el firmware del dispositivo tiene que hacer aquí se crea como métodos de la clase de impresora. La impresora también realiza un seguimiento de su propia configuración actual.

En el interior de constructor de la clase impresora, vemos una línea cool para configurar el hardware UART (Universal Asynchronous recibir y transmitir) en el imp:

 hardware.uart57.configure(19200, 8, PARITY_NONE, 1, NO_CTSRTS); 

Esto configura el hardware UART en las patillas 5 y 7, configura la velocidad a 19200 (bits por segundo), 8 bits de datos por palabra, ningún bit de paridad, bit de parada y sin control de flujo; sólo de la más simple UART configuración que puede utilizar.

A continuación la definición de clase para la impresora, el dispositivo registra algunas devoluciones de llamada para el agente. Podemos pensar en éstos como ganchos, cada uno dando al agente una manera de decir el dispositivo para hacer algo. Las devoluciones de llamada agente registrados en "agent.on()", que toma dos argumentos: una cadena, que pasará por el agente al dispositivo que devolución de llamada a utilizar; y una función, que será llamada cuando el agente envía la cadena:

 agent.on("print", function(buffer) {<br> server.log("Device: printing new buffer from agent: "+buffer);<br> myPrinter.print(buffer);<br>}); 

Busca en el firmware, vemos que hemos registrado las devoluciones de llamada para todo tipo de cosas; alternar texto negrita o subrayado, diciendo el imp para comenzar a descargar una imagen del agente mediante la devolución de llamada de "pull" (que encontrará como un método de la clase de impresora), la alimentación de un determinado número de líneas, etc..

Cuando las devoluciones de llamada de agente son todos registrados y se definen las clases, crear una instancia de la clase de impresora para crear un objeto de impresora, y estamos listos para ir. El firmware del dispositivo es principalmente impulsada por eventos; pedacitos de ella son llamados a la acción cuando el agente señala que es tiempo de hacer algo.

 // instantiate the printer object at global scope myPrinter <- printer(hardware.uart57, 19200);<br> 

El firmware del agente es lo mismo, pero incluso más corto, con algunas interesantes pedacitos para interacciones HTTP. Echemos un vistazo:

Poner todo en marcha con una definición de la función printLogo - vamos a ver que esta registrado como una devolución de llamada para el evento de "logo" un poco más abajo. Uno muy útil poco aquí está la ilustración de cómo hacer una solicitud HTTP GET de su agente:

 local reqURL = "http://electricimp.com/docs/attachments/images/examples/resources/ei_logo_tinyprinter.bmp";<br>local req = http.get(reqURL);<br>imageData = req.sendsync().body; 

Hacemos un objeto de la petición con "http.get(reqURL), luego enviarlo, que devuelve un objeto de respuesta http. El cuerpo de ese objeto de respuesta contiene los datos de imagen - es tan simple como eso!

Después de hacer un poco de trabajo con los datos de la imagen, vemos al agente envía un evento al dispositivo. Aquí, tenemos que enviar varios parámetros para el dispositivo, así que empacar en una matriz y luego enviar esa matriz con el evento:

 local imageParams = [imageSize, imageWidth, imageHeight]; device.send("downloadImage", imageParams); 

Más abajo, vemos las devoluciones de llamada registrada para los eventos "tire" y "imageDone" desde el dispositivo, luego una devolución de llamada registrada con "http.onrequest". Esto es muy útil agente API: la función aquí registrada será llamada cada vez que se hace una petición HTTP (de cualquier método) a la URL de agente en configuración del dispositivo. Se trata de cómo el agente maneja nuevos datos desde la Web de la versión parcial de programa de impresora:

 http.onrequest(function(request,res){ 

Una muy importante parte aquí, para enviar mensajes al agente: cuando tu navegador envía un mensaje, envía una comprobación Compruebe primero qué métodos soporta receptor. El receptor proporciona esta información con sus cabeceras de respuesta. Si éstos no demuestran que el agente soporta POST, la página no hay que enviar el mensaje, y la petición al agente será vacía! Aquí es donde nos estas cabeceras para permitir nuestra página trabajar:

 res.header("Access-Control-Allow-Origin", "*");<br>res.header("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept"); res.header("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); 

El agente hace otra cosa útil después de ajustan los encabezados, pero antes de enviar una respuesta: determina si se utiliza el texto imagen o mensaje de controlador de mensajes basado en la ruta de la URL a la que realizó la solicitud:

 if (request.path == "/text") { 

Último en el código de agente, vemos la devolución de llamada registrado para el evento de "logo" del dispositivo:

 device.on("logo", function(value) {<br> printLogo();<br>}); 

Eso es todo el encuentro de Disparos! La impresora todo conectado a internet, en menos de 600 líneas.

Artículos Relacionados

ImPower - el (Imp eléctrico accionado) tomacorriente conectado Internet

ImPower - el (Imp eléctrico accionado) tomacorriente conectado Internet

Este Instructable le mostrará cómo conectar un PowerSwitch para cola II hasta un Imp eléctrica y construir una página web simple para controlarlo!El PowerSwitch para permite que cambiar corriente alterna con un circuito de control opto-aislado. Esto
DMX de la Imp eléctrico

DMX de la Imp eléctrico

El diablillo eléctrico es un fantástico poco con Wi-microcontrolador. Básicamente es como tener un Arduino, un escudo de WiFi y un servicio de nube en un solo paquete.No te tanto control de procesador como en el Arduino, aunque, porque el Cortex M3 e
Cableado y programación de la Imp eléctrico con display LCD

Cableado y programación de la Imp eléctrico con display LCD

conectar un LCD a un Imp eléctrico¿Qué es un Electric Imp?Es un procesador de Wifi conectado en un paquete muy pequeño. Sitio web para más información - Electric ImpHe comprado el LCD de Sparkfun Serial activado 16 x 2 - negro sobre verde 3.3V para i
Cómo hacer un taladro eléctrico inalámbrico MODED DIY / Tutorial

Cómo hacer un taladro eléctrico inalámbrico MODED DIY / Tutorial

https://www.youtube.com/watch?v=CBQyrM_kJpw&feature=youtu.bePaso 1: Hacer un taladro eléctrico inalámbrico MODED necesita! Hoy se actualizará un destornillador eléctrico antiguo, fiel e inolvidable que sigue fielmente puede servirle a pesar de su baj
Transferencia de energía inalámbrica zumbador piezoeléctrico

Transferencia de energía inalámbrica zumbador piezoeléctrico

Intro:En este instructable mostraré cómo lograr la transferencia de energía sin hilos con el circuito muy simple.Dispositivo es capaz de transmitir energía sin cables, a gama muy limitada de alrededor de pocos centímetros.Este dispositivo es, constru
Convertir cualquier impresora en una impresora inalámbrica con una Raspberry Pi

Convertir cualquier impresora en una impresora inalámbrica con una Raspberry Pi

Una vez que has comprado una impresora inalámbrica, nunca quiero volver a los oscuros días de tener que conectar todo el tiempo. Pero buena impresoras inalámbricas son caras, y muchos routers que permiten las impresoras de red en USB que no necesaria
Cómo una impresora inalámbrica de red

Cómo una impresora inalámbrica de red

si usted utiliza la vista y tiene una red inalámbrica, entonces te diré que cualquier vieja impresora a una red inalámbrica de la red. debe tener la impresora conectada a un ordenador. Aunque vista chupa tengo 2 ordenadores con vista (degrada la lapt
Cómo imprimir inalámbricamente sin una impresora inalámbrica desde tu iPad, iPod Touch, iPhone

Cómo imprimir inalámbricamente sin una impresora inalámbrica desde tu iPad, iPod Touch, iPhone

esto es donde vas a aprender a imprimir con tu dispositivo iOS sin una impresora inalámbrica.Paso 1: requisitos 1) IOS dispositivo funcionando en iOS 4 o posterior.2) un PC Windows o un Mac.Impresora 3) (con cable)4) la conexión WiFi o conexión de da
Un 140$ RepRap, la impresora 3D inalámbrica - Boltz Megatiete

Un 140$ RepRap, la impresora 3D inalámbrica - Boltz Megatiete

*************************************+ En primer lugar, este Instructables había sido escrito a por 16 un chico de años... No un inglés profesor, así que por favor me informaras de alguna gramatical error antes de hacer diversión de. : p+ Y por favor
Inalámbrica más barata impresora 3D - Boltz Megatiete

Inalámbrica más barata impresora 3D - Boltz Megatiete

*************************************+ En primer lugar, este Instructables había sido escrito a por 16 un chico de años... No un inglés profesor, así que por favor me informaras de alguna gramatical error antes de hacer diversión de. : p+ Y por favor
Abridor de puerta de garaje eléctrica Imp

Abridor de puerta de garaje eléctrica Imp

He perdido la cuenta de la cantidad de veces que hemos fijado en un viaje sólo para tener que volver atrás para comprobar si recordamos cerrar la puerta del garaje. Este ' ible le muestra cómo conectar el diablillo eléctrico a su abridor de puerta de
WiFi CONTROLÓ el café montaña con LED de indicador de temperatura de cambio de COLOR

WiFi CONTROLÓ el café montaña con LED de indicador de temperatura de cambio de COLOR

Saber cuándo beber y disfrutar de su café ha sido explorada en muchas maneras. Uno de ellos es el color del LED cambio de temperatura del práctico de Costa café. LED se ilumina si se alcanza el umbral de temperatura. Mediante la utilización de tres c
Tranquila y relajada interacción: Planta Plus

Tranquila y relajada interacción: Planta Plus

Introducción:"Tranquilo y relajado interacción: planta Plus" es mi investigación en el Institute of Advanced Media Art y Science(IAMAS) en Japón. Mi investigación es un diseño abierto. Me gustaría compartir la idea, resultado de experimentos y a
Impresión 3D de cualquier parte

Impresión 3D de cualquier parte

Esta guía le permite iniciar la impresora 3d de cualquier lugar en el mundo... como tienes acceso a internet. Esto significa que mientras usted está apagado en un viaje de trabajo o a una Convención de fin de semana, la impresora 3d puede trabajando