Retomando un poco la practica con python, en mi caso siempre enfocado al hardware, para graficar la data de los sensores, hacer comunicaciones entre dispositivos, entre otras cosas… Este es un tutorial básico para aquellos que están decidos adoptar a python como lenguaje, porque no se puede ir por hay adoptando lenguajes como loco, de seguro no aprenderemos nada. Aqui encontraras uno que otro ejemplo para que te vayas fogueando.

Comenzamos con un tema básico de Python, resulta que he instalado Openbox en mi laptop, entonces había leído que este escritorio trabajaba con python y no se que. Siempre es bueno documentarse un tanto para luego no meter la pata.

Antes que nada quiero enlazar mi primera entrada relacionada con python, porque no quiero repetir cosas en este tutorial.  https://ronaldl337.wordpress.com/2016/10/29/comenzando-a-programar-en-python/#more-4038

Lo primero que consulte fue la versión de python y eso lo hacemos con el siguiente comando

$ python -V

Y bueno tengo la versión 3.6.0, y todo muy bien porque ya había comenzado a trabajar con esta version, estaba pensando que tal que tenga la version 2…

Bueno, aprendi algo trabajando con python, parece que todas las distribucciones GNU-Linux tienen una version de python micro, le llaman micropython, tu puedes instalar librerias y hacer lo que quieras, pero este micropython no lo tiene todo, quiero decir hay librerias llamadas estandar y bueno yo no las pude instalar porque son standar, entonce a pesar que podia ver la version de python y todo esto, lo que tenia era un micro python. Entonces abri la terminal e intente instalar python y si efectivamente no lo tenia instalado, debes chequear eso, ya que si vas a trabajar con python es mejor que lo instales.

$ sudo pacman -S python

 

Como de costumbre comienzo a instalar las librerías que mas uso en python, pero antes de eso procedo a instalar el instalador de librerias de python, se los recomiendo, eso de estar usando pacman

$ pacman -S python.pip

Aqui dejos los atributos del instalador pip

ronal@Ronal ~]$ pip --help

Usage:   
  pip  [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING,
                              ERROR, and CRITICAL logging levels).
  --log                 Path to a verbose appending log.
  --proxy              Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries          Maximum number of retries each connection should attempt (default 5 times).
  --timeout              Set the socket timeout (default 15 seconds).
  --exists-action     Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
  --trusted-host    Mark this host as trusted, even though it does not have valid or any HTTPS.
  --cert                Path to alternate CA bundle.
  --client-cert         Path to SSL client certificate, a single file containing the private key and the certificate in PEM
                              format.
  --cache-dir

Para saber la version del instalador pip,  typeamos el siguiente comando

$ pip --version
$ python -c 'import setuptools; print setuptools.__version__'

Para saber como se llama una libreria, ya que una cosa es el nombre de la libreria y otra la que uno escribe cuando la llama,  algunas veces si es igual, pero eso depende de la libreria, entonces es necesario saber el nombre real de la libreria, para tipeamos el siguiente comando.

$ pip search nombre_de_la_libreria

 

Las Libreria de python que mas uso, son para graficar, para hacer comunicación serial, para el tiempo, para hacer comunicacion ssh, para hacer operaciones matematicas entre otras…

Instalamos las librerias

Yo uso estas librerías, esto no quiere decir que uds las deban instalar, les recomiendo que instalen numpy y pyserial, las demás no son necesarias para este tutorial.

$ pip install numpy
$ pip install sympy
$ pip install subprocess32
$ pip install subprocess
$ pip install owncloud
$ pip install pexpect
$ pip install matplotlib
$ pip install pyserial
$ pip install PyUserInput

Como actualizar  instalador pip

$ pip install --upgrade pip

Error al instalar las librerias

Aqui dejo el error que me salio  http://www.heypasteit.com/clip/0BOIXB

Este error se debe al internet,  como vivo en Venezuela, aveces el internet no esta muy bien, pero tenemos la solución, gracias a un amigo de la comunidad de Python venezuela.

Otro Error

Could not find a version that satisfies the requirement pykeyboard (from versions: )
No matching distribution found for pykeyboard

Este error se debe a que el nombre de la libreria que se quiere instalar no esta bien escrito o es erroneo.

 

Instalamos el IDE

Luego instalo de IDE (Entorno de Desarrollo Integrado) preferido, en mi caso es ATOM.

$ pacman -S atom

Como saber el npmbre del puerto  de nuestro hardware conectador por USB

Abrimos la terminal y tipeamos dmesg, tal como se muestra en la figura.

$ dmesg | grep -i  tty

gscreenshot_2017-04-23-180525

Entonces podemos notar que tenemos conectado un dispositivo UART  (Transmision-Receptor Asicrono Universal) que se encuentra conectado en el puerto serial ttyUSB0. Saber esto es fundamental para hacer comunicacion. Siempre que hago comunicacion miro en que puerto esta trabajando y lo pego en el programa que estoy haciendo, hoy se me ocurre crear una rutina para que el mismo programa busque y verifique en cual puerto trabaja.

Nota : toda esta información es para sistemas operativos GNU/Linux.

Ejemplo #1

Abrimos un editor de texto o un IDE para python, tipeamos  nuestro codigo y luego guardamos el archivo con la extencion  “.py”.

import subprocess
puerto=subprocess.check_output( "dmesg | grep -i  tty", stderr=subprocess.STDOUT, shell=True)
print (puerto)

Ya con esto tenemos que nuestra salida de terminal este en una variable, pero es que la salida de la terminal dice muchas cosas que no me interesan. Esta es la salida de la terminalal ejecutar el codigo que hice.

gscreenshot_2017-04-23-210122

Lo que necesitamos es el nombre del puerto que en mi caso es ttyUSB0. Vamos entonces a un segundo ejemplo donde vamos a extraer ese nombre y lo guardaremos en una variable.

Ejemplo #2

Antes que nada quiero saber que tipo de variable es, a pesar que me puedo dar cuenta ya que en la salida aparece la letra b’……    esto me quiere decir que se trata de una variable tipo bytes, pero bueno lo quiero hacer en python y si al codigo anterior le agrego esta ultima linea podre saber que tipo de variable es, es como otra forma de saberlo y no esta de mas.

print (type(puerto))

Y si efectivamente la salida de la terminal es <class ‘bytes’>.  Resulta que para hacer busquedas dentro de una variable tipo bites, no se puede y digo que no se puede porque dentro de mi ignorancia no encontre como hacerlo por eso procedi a convertir la salida en una variable string y lo hice de esta forma

puerto.decode("utf-8")

Muy bien,  luego de intentar varias cosas pude hacer la conversión, pero quiero ahora es encontrar donde sale la ruta del puerto, lo demás no me interesa, entonces voy hacerlo como lo hago en Matlab. Lo que hago es buscar la posicion de la palabra e imprimir la ruta. La ruta de los puertos en GNU-Linux puede ser /dev/ttyUSB# o  tambien /dev/ttyACM#, pero vemos que la salida de la terminal solo arroja tty***  entonces buscaremos tty imprimimos las tres lestras e imprimimos las 4 letras siguientes y asi tendremos el nombre completo del puerto serial.

prueba1= prueba.rindex("tty")
print (prueba[prueba1])

Ya encontre imprimir la posicion donde esta tty, ahora me queda imprimir esa posicion y las 6 posiciones restantes, porque lo que busco es imprimir esto tty***#.

Bueno de algo me sirvio el curso basico de python que hice en codigo facilito, me he dado cuenta que la posicion de tty es la 99, entonces queria imprimir 6 letras mas, para conseguir la ruta completa. Para poner imprimir la ruta completa puse la posicion de tty que 99:106, eso significa que tengo las posicion 99 100 101 102 103 104 105 106, parece que python me da una posicion anterior a la que estoy buscando. Bueno asi obtuve la posicion de tty

print (prueba[prueba1])

Y asi obtuve la ruta completa

print (prueba[prueba1:106])

Si unimos los dos ejemplos tenemos como resultado un codigo que hice para encontrar la ruta del puerto serial, esto se puede hacer de muchas formas, pero asi yo lo hice. Espero que intenten hacerlo de otra forma y sigan aprendiendo.

import subprocess
puerto= subprocess.check_output( "dmesg | grep -i  tty", stderr=subprocess.STDOUT, shell=True)
prueba= puerto.decode("utf-8")
prueba1= prueba.rindex("tty")
ruta= prueba[prueba1:106]

Bueno esto es todo por hoy, en el proximo tutorial estare explicando otras cosas, siempre enfocada en el hardware. Si tienes una duda, opinion o critica haz tu comentario.

 

Python Venezuela

Buscando en internet me encontre con el grupo de telegram de la comunidad de Python VE y buenisimo tener un grupo en Telegram y que esten trabajando con python. Asi que deseas ayudar o tienes alguna duda unete al grupo.

Aqui dejo el enlace del grupo https://t.me/python_venezuela

Fuentes:

http://stackoverflow.com/questions/27413544/python-how-to-print-position-and-value-of-list-element

http://stackoverflow.com/questions/606191/convert-bytes-to-a-python-string

https://www.tutorialspoint.com/python/string_rindex.htm

Anuncios