import pymysql
import datetime
import time
from utilitarios.usuarios import Senha_usuario
from utilitarios.equipamentos import Equipamentos
from utilitarios.ordem_producao import Ordem_producao
from automatico.codigo_barra import Codigo_barras
from automatico.producao_auto import ProducaoAuto
from utilitarios.barcode import ler_codigo_de_barras
def registro_producao_automatico():
while True:
print('Aguardando Leitura')
Codigo_barras.codigo_barras = str(input(''))
ler_codigo_de_barras("caminho_da_imagem.jpg")
if Codigo_barras.codigo_barras == '9999999999999':
print('Produçao Encerrada:')
break
elif len(Codigo_barras.codigo_barras) != 13:
print('Código inválido: deve ter 13 dígitos')
continue
try:
conexao = pymysql.connect(
host='localhost',
user='root',
passwd='',
database='automatizaf'
)
cursor = conexao.cursor()
com1_sql = 'SELECT id_registro_producao FROM tb_registro_producao ORDER BY id_registro_producao DESC LIMIT 1 '
cursor.execute(com1_sql)
resultado1 = cursor.fetchall()
cursor.close()
resultado2 = list(resultado1[0])
resultado3 = int(resultado2[0])
resultadof = resultado3 + 1
id_registro_producao = resultadof
cursor = conexao.cursor()
com2_sql = "SELECT registro_producao_auto FROM tb_registro_producao WHERE ordem_producao = %s ORDER BY id_registro_producao DESC LIMIT 1"
cursor.execute(com2_sql, Ordem_producao.ordem_producao)
resultado4 = cursor.fetchall()
cursor.close()
resultado5 = list(resultado4[0])
resultado6 = int(resultado5[0])
resultadoG = resultado6 + 1
registro_producao_auto = resultadoG
data1 = datetime.date.today()
data2 = datetime.date.today()
hora1 = time.strftime('%H:%M:%S')
hora2 = time.strftime('%H:%M:%S')
cursor = conexao.cursor()
com3_sql = "INSERT INTO tb_registro_producao (id_registro_producao, ordem_producao, codigo_equipamento, senha_usuario, codigo_produto, registro_producao_manual, registro_producao_auto, data_inicio_producao, hora_inicial_producao, data_final_producao, hora_final_producao) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
valor1 = (
id_registro_producao,
Ordem_producao.ordem_producao,
Equipamentos.codigo_equipamento,
Senha_usuario.senha_usuario,
Codigo_barras.codigo_barras,
'',
registro_producao_auto,
data1,
hora1,
data2,
hora2
)
cursor.execute(com3_sql, valor1)
conexao.commit()
print(f'Registro de produção número: {id_registro_producao}')
ProducaoAuto.registro_producao_auto = str(registro_producao_auto)
except Exception as erro:
print(erro)
if __name__ == "__main__":
registro_producao_automatico()
- Remove chamada recursiva
registro_producao_automatico()
dentro do bloco try
, pois isso pode levar a um estouro de pilha (stack overflow). Em vez disso, movi a chamada para fora do bloco try
. - Corrige o erro que você estava enfrentando ao tentar ler o código de barras após a primeira leitura. Agora, após inserir um novo código de barras, o programa continuará sua execução.
- Removi a necessidade de definir
data1
, data2
, hora1
e hora2
globalmente, pois esses valores são obtidos dentro do loop de registro.
Prof.Thaynan Andrey Lucena
Engenheiro
Cientista de Dados
Bom dia a todos na santa e poderosa paz do Senhor Jesus, algum dos irmãos poderia por favor me ajudar a consertar o erro apresentado a seguir.![erro 1.png](https://groups.google.com/group/python-brasil/attach/1ab465b7ef569/erro%201.png?part=0.1&view=1)
Após realizar a primeira leitura e realizar a gravação na BD eu preciso reiniciar o processo de leitura para uma nova gravação, porem após realizar a primeira leitura segue o erro acima.
segue código onde na linha (19) em negrito sublinhada é chamada a função de leitura do código de barras.
Nota: Inserindo o código de barras manualmente o programa funcionar perfeitamente.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
import pymysql
import datetime, time
from utilitarios.usuarios import Senha_usuario
from utilitarios.equipamentos import Equipamentos
from utilitarios.ordem_producao import Ordem_producao
from automatico.codigo_barra import Codigo_barras
from automatico.producao_auto import ProducaoAuto
from utilitarios.barcode import ler_codigo_de_barras
data1 = datetime.date.today()
data2 = datetime.date.today()
hora1 = time.strftime('%H:%M:%S')
hora2 = time.strftime('%H:%M:%S')
def registro_producao_automatico():
print('Aguardando Leitura')
while 1:
Codigo_barras.codigo_barras = str(input(''))
ler_codigo_de_barras("caminho_da_imagem.jpg")
if Codigo_barras.codigo_barras == '9999999999999':
print('Produçao Encerrada:')
break
elif len(Codigo_barras.codigo_barras) != 13:
print('codigo invalido > 0u < 13 digitos')
continue
else:
try:
conexao = pymysql.connect(
host='localhost',
user='root',
passwd='',
database='automatizaf')
cursor = conexao.cursor()
com1_sql = 'SELECT id_registro_producao FROM tb_registro_producao ' \
'ORDER BY id_registro_producao DESC LIMIT 1 '
cursor.execute(com1_sql)
resultado1 = cursor.fetchall()
cursor.close()
resultado2 = list(resultado1[0])
resultado3 = int(resultado2[0])
resultadof = resultado3 + 1
id_registro_producao = resultadof
cursor = conexao.cursor()
com2_sql = "SELECT registro_producao_auto FROM tb_registro_producao" \
" WHERE ordem_producao = %s ORDER BY id_registro_producao DESC LIMIT 1"
cursor.execute(com2_sql, Ordem_producao.ordem_producao)
resultado4 = cursor.fetchall()
cursor.close()
resultado5 = list(resultado4[0])
resultado6 = int(resultado5[0])
resultadoG = resultado6 + 1
registro_producao_auto = resultadoG
cursor = conexao.cursor()
com3_sql = "INSERT INTO tb_registro_producao" \
" (id_registro_producao," \
" ordem_producao," \
" codigo_equipamento," \
" senha_usuario," \
" codigo_produto," \
" registro_producao_manual," \
" registro_producao_auto," \
" data_inicio_producao," \
" hora_inicial_producao," \
" data_final_producao," \
" hora_final_producao)" \
" VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
valor1 = (
id_registro_producao, Ordem_producao.ordem_producao,
Equipamentos.codigo_equipamento, Senha_usuario.senha_usuario, Codigo_barras.codigo_barras,
'', registro_producao_auto, data1, hora1, data2, hora2)
cursor.execute(com3_sql, valor1)
conexao.commit()
print(f'Registro de produção numero: {id_registro_producao}')
ProducaoAuto.registro_producao_auto = str(registro_producao_auto)
registro_producao_automatico()
except Exception as erro:
print(erro)
![visualização do codigo linha 19 chamada a função barcode.png](https://groups.google.com/group/python-brasil/attach/1ab465b7ef569/visualiza%C3%A7%C3%A3o%20do%20codigo%20linha%2019%20chamada%20a%20fun%C3%A7%C3%A3o%20barcode.png?part=0.2&view=1)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
segue código utilizado na leitura código de barras scanner manual.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
from PIL import Image
from pyzbar.pyzbar import decode
def ler_codigo_de_barras(caminho_da_imagem):
imagem = Image.open(caminho_da_imagem)
imagem = imagem.convert("L")
codigos_barras = decode(imagem)
if len(codigos_barras) > 0:
barcod_codigo = codigos_barras[0].data.decode("utf-8")
return barcod_codigo
else:
return
--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para acessar essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/f53a8cd5-7b38-4990-8e33-ad618e97e9dcn%40googlegroups.com.