Al desarrollar un sistema que consume el plugin para impresoras térmicas en Android es un poco complicado hacer las pruebas porque se necesitaría correr el proyecto en modo desarrollo desde Android para hacer las llamadas a localhost.

Como ya anuncié previamente la API de escritorio y móvil son compatibles así que podemos hacer pasar al plugin Desktop como si fuera el plugin Android haciendo unos ajustes en el código fuente.

Los pasos son simples:

  1. Definimos el nuevo tipo para las impresoras
  2. Usamos un archivo plano para ahorrar papel (opcional)
  3. Devolvemos una lista de impresoras estáticas en handlerHttpObtenerImpresoras
  4. Devolvemos Android para Plataforma en handlerHttpVersion

Veámoslo con más detalles. Todo esto se debe hacer en el archivo servidor.go

Impresora con mac, name y type

Definimos un nuevo tipo para las impresoras, mismo que usa el plugin Android y que estamos intentando copiar:

type ImpresoraAndroid struct {
	Name string `json:"name"`
	Type string `json:"type"`
	Mac  string `json:"mac"`
}

Usamos archivo de texto plano

Dentro de handlerHttpImprimir en ese mismo archivo usamos un archivo de texto plano, ya que no queremos que se imprima realmente.

Esto es opcional porque si quieres puedes enviar la MAC como el nombre de una impresora válida, pero yo lo dejo en un archivo para ahorrar papel.

	destino, err := archivoPlano(i.NombreImpresora)

Devolver impresoras usando nuevo tipo

También modificamos el handlerHttpObtenerImpresoras para devolver una lista estática de impresoras:

	func handlerHttpObtenerImpresoras(w http.ResponseWriter, r *http.Request) {
	var impresorasAndroid []ImpresoraAndroid
	impresorasAndroid = append(impresorasAndroid,
		ImpresoraAndroid{
			Name: "MTP-II",
			Mac:  "ImpTer",
			Type: "Dual",
		},
		ImpresoraAndroid{
			Name: "Otra",
			Mac:  "Otra",
			Type: "BLE",
		})
	responderHttp(impresorasAndroid, w, r)
}

Si quisieras imprimir en una impresora física entonces coloca el nombre de tu impresora compartida en Mac.

Devolver Android como plataforma

Finalmente hay que devolver “Android” en la plataforma:


func handlerHttpVersion(w http.ResponseWriter, r *http.Request) {
	responderHttp(VersionDelPlugin{
		Version:          Version,
		Plataforma:       "Android",
		SistemaOperativo: runtime.GOOS,
	}, w, r)
}

Y así ya podrás hacer las pruebas como si estuvieras en Android sin realmente estarlo. Cuando termines y lo pongas en producción también va a funcionar con el plugin Bluetooth.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto