Anda di halaman 1dari 4

Compartilhar é preciso.

Usando Python para comunicar com a Porta Serial.


ferpinheiro 8 anos ago

E aí galera. Tava meio pobre a categoria sobre python então resolvi trazer uma dica que vale por três (ou não,
rsrsr). Hoje vou demonstrar como utilizar a linguagem Python para comunicar com a porta serial. Já é sabido
de todos que python é uma das linguagens de mais fácil utilização e que prove alto nível, logo o que será
mostrado abaixo poderá ser entendido por todos aqueles que conheçam alguma linguagem de programação e
sua lógica.

Existe um modulo rico em documentação, chamado PySerial escrito para ser usada na comunicação de
programas python com dispositivos que usam portas seriais. Haaaa mas então posso utilizar isso para
comunicar com o Arduino??? Sim, você pode. E tem mais, vou fazer um tutorial especialmente para
demonstrar isso.

Para ver a documentação sobre o modulo CLIQUE AQUI.

Bem, vamos ao que interessa. Primeiramente precisamos instala-lo, acesse um terminal e digite:  apt-get
install python-serial
Se tudo ocorrer bem deverá ser instalado. Vamos ver os métodos básicos para manipulação das portas:

Antes de mais nada devemos dar um import serial para podermos usar os métodos básicos como open(),
write(), read() e close(). Logo após devemos criar um objeto para manipularmos os métodos. No exemplo
acima o objeto é chamado de ser. O objeto ser é criado e recebe o retorno de serial.Serial() nesse método
devemos passar os argumento como: nome da porta e baudrate etc… Podemos usar ainda o método portstr
para listar as portas existentes na maquina e as que realmente estão sendo usadas. Para escrevermos algo na
porta usamos o método write(), mas lembre-se de que ele deve ser acessado pelo objeto ser. Nesse caso foi
escrita a string “hello”. E nalmente precisamos fechar a porta com o método close().

Essa gura demonstra melhor a passagem de parâmetros para o método serial.Serial(). Repare que o método
read() foi usado e o retorno deste foi armazenado em uma variável de nome x. Esse método le apenas 1 byte
da porta. Para podermos ler linhas usamos o metodo readline(). Na gura acima o método foi usado e o
retorno foi armazenado em uma variável chamada line. E então novamente a porta foi fechada.
Agora que já sabemos um pouco sobre os métodos básicos, vejamos um exemplo em código: Obs (O código
foi testado no Linux).

# Autor: Fernando Krein Pinheiro

# Data: 07/09/2011

# Linguagem: Python

# ========= IMPORTANTE ===========

# O codigo esta livre para usar,

# citar e compartilhar desde que

# mantida sua fonte e seu autor.

# Obrigado.

#! /usr/bin/env python

import serial

porta = '/dev/ttyUSB0'

baud_rate = 9600

###################### FUNCAO PARA VERIFICAR PORTAS ATIVAS ###############

def verifica_portas():

portas_ativas = []

for numero in range(10):

try:

objeto_verifica = serial.Serial(numero)

portas_ativas.append((numero, objeto_verifica.portstr))

objeto_verifica.close()

except serial.SerialException:

pass

return portas_ativas

################ FUNCAO PARA ESCREVER NA PORTA ####################

def escrever_porta():

try:

valor = (raw_input("Digite o valor a ser enviado: "))

Obj_porta = serial.Serial(porta, baud_rate)

Obj_porta.write(valor)

Obj_porta.close()

except serial.SerialException:

print"ERRO: Verifique se ha algum dispositivo conectado na porta!"


return valor

########################## FUNCAO PARA LER A PORTA #######################

def ler_porta():

try:

Obj_porta = serial.Serial(porta, baud_rate)

valor = Obj_porta.read()

print"Valor lido da Serial: ",valor

Obj_porta.close()

except serial.SerialException:

print"ERRO: Verifique se ha algum dispositivo conectado na porta!"

################################ MAIN ####################################

if __name__=='__main__':

print"==========================================="

print"===== 1 - Verificar Portas Existentes ====="

print"===== 2 - Ler Valor da Porta Serial ====="

print"===== 3 - Escrever Valor na Porta Serial =="

print"==========================================="

opcao = int (raw_input("Digite a Opcao: "))

if opcao == 1:

print"Numero da porta | Nome da Porta"

for numero,portas_ativas in verifica_portas():

print" %d | %s" % (numero,portas_ativas)

elif opcao == 2:

ler_porta()

elif opcao == 3:

escrever_porta()

else:

print"Entrada Invalida!!"

O código funciona da seguinte maneira:


Possui uma função chamada de veri ca_portas() a qual usa o método portstr() para listar as portas da
maquina. Uma outra função chamada ler_porta() que usa o método read() para ler os dados, lembre-se esse
método le apenas 1 byte. E outra função chamada escrever_porta que faz o uso do método write() para
enviarmos um valor inteiro digitado pelo usuário.

Então temos uma main() onde são chamadas essas funções. Simples não?!!
Bem é isso aí, qualquer coisa é só perguntar ou seguir a documentação da PySerial!!!

Categorias: Python

Deixe um comentário

Compartilhar é preciso.
Voltar ao topo