Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.

Nombre de usuario/Email:
  

Contraseña
  





Buscar en los foros

(Búsqueda avanzada)

Últimos temas
Como detectar cuando se i...
Foro: General
Último mensaje por: JoAnCa
17-09-2020, 11:38 AM
» Respuestas: 5
» Vistas: 120
Hola!
Foro: Inicio
Último mensaje por: Francisco
12-09-2020, 10:23 PM
» Respuestas: 1
» Vistas: 55
PyQt5, pasar variable a u...
Foro: Aplicaciones de escritorio
Último mensaje por: Francisco
07-09-2020, 07:01 PM
» Respuestas: 3
» Vistas: 93
Me presento! Gracias por ...
Foro: Inicio
Último mensaje por: Francisco
07-09-2020, 01:15 AM
» Respuestas: 1
» Vistas: 183
Acceder a una variable de...
Foro: General
Último mensaje por: Francisco
07-09-2020, 01:14 AM
» Respuestas: 1
» Vistas: 261
Entrada conversacional en...
Foro: General
Último mensaje por: vicrogo
06-09-2020, 09:24 PM
» Respuestas: 0
» Vistas: 388
Problemas con método .gri...
Foro: Aplicaciones de escritorio
Último mensaje por: hernanperez
04-09-2020, 04:09 PM
» Respuestas: 7
» Vistas: 1.865
matriz de distancia Manha...
Foro: Visualización y análisis de datos
Último mensaje por: andres Ramirez
04-09-2020, 01:25 AM
» Respuestas: 0
» Vistas: 58
PyQt5, llamar a QLineEdit...
Foro: Aplicaciones de escritorio
Último mensaje por: Kali
03-09-2020, 05:04 AM
» Respuestas: 2
» Vistas: 83
Saludos a todos.
Foro: Inicio
Último mensaje por: Francisco
02-09-2020, 02:07 PM
» Respuestas: 1
» Vistas: 113

 
  Como detectar cuando se inserta una memoria USB
Enviado por: JoAnCa - 13-09-2020, 10:34 PM - Foro: General - Respuestas (5)

Hola a todos

Pues me estoy iniciando en python, y quiero migrar algunas aplicaciones que tengo en delphi para python, pero no se como se hacen algunas cosas, entre ellas el titulo del post

Necesito detectar cuando se inserta una memoria usb, y obtener su numero de serie (id unico), nombre, capacidad y letra de unidad, para despues guardar esos datos en una base de datos mysql

¿ Como podré hacer esto en python 3.8?

Imprimir

Wink Hola!
Enviado por: mariaoholeguy - 12-09-2020, 10:44 AM - Foro: Inicio - Respuestas (1)

Hola!, desde Montevideo!

Imprimir

  Me presento! Gracias por la bienvenida
Enviado por: pedrogarcia - 06-09-2020, 10:27 PM - Foro: Inicio - Respuestas (1)

Hola amigos! soy pedro, y me dedico al mundo de la ciberseguridad, y me encanta desarrollar herramientas en python, es el lenguaje que mejor se me da, actualmente estoy haciendo prácticas en Cybermindsec y estoy estupendo, os iré contando mi aventura y echando un cable a todos los que tengáis dudas con python!.


Un saludo! pedro. Big Grin

Imprimir

  Entrada conversacional en Pyaudio (cómo hacer entradas de tiempo desigual)
Enviado por: vicrogo - 06-09-2020, 09:24 PM - Foro: General - Sin respuestas

Estoy realizando un programa conversacional, que ya tengo bastante avanzado, de modo que actualmente acepta una entrada por teclado, en lenguaje natural, y el "robot" contesta tanto en pantalla como por los altavoces, es decir, "lee" la entrada del usuario y le contesta "hablando".

El siguiente paso es ir a un sistema por el que el usuario pueda dar su entrada de viva voz, no por teclado, y el "robot" le conteste; para ello, debo hacer que por micrófono se acepte una entrada, y se convierta a texto. Esto lo tengo ya resuelto mediante esta pequeña rutina
import pyaudio
import wave
import speech_recognition as sr
 
FORMAT=pyaudio.paInt16
CHANNELS=2
RATE=44100
CHUNK=1024
duracion=5
archivo="grabacion.wav"
audio=pyaudio.PyAudio()
stream=audio.open(format=FORMAT,channels=CHANNELS,rate=RATE,
                  input=True,frames_per_buffer=CHUNK)
print("grabando...")
frames=[]
for i in range(0,int(RATE/CHUNK*duracion)):
    data=stream.read(CHUNK)
    frames.append(data)
print("grabación terminada")
stream.stop_stream()
stream.close()
audio.terminate()
waveFile=wave.open(archivo,"wb")
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
 
re = sr.Recognizer()
 
with sr.Microphone() as source:
    audio="grabacion.wav"
 
with sr.AudioFile(audio) as source:
    info_audio=re.record(source)
    texto=re.recognize_google(info_audio,language='es')
    print(texto)
print("fin")


Funciona perfectamente, pero se basa en grabar X segundos y transcribirlos (en este caso 5 segundos, aunque puedo poner los que quiera). Transcurrido este tiempo, el sistema hace la transcripción a texto, y como digo, funciona. Ahora bien, ¿no sería posible hacer que la entrada no tuviera un tiempo marcado, sino que esperase hasta que hubiera un silencio, y entonces se generara el fichero wav que se transcribe?

Agradecería cualquier ayuda.

Imprimir

  Acceder a una variable desde una función
Enviado por: Aaron - 06-09-2020, 03:08 PM - Foro: General - Respuestas (1)

Hola, yo tengo esta función que la quiero utilizar por medio de modulo, pero la variable "nombre" de la funcion la tengo definida con anterioridad en el codigo en el que estoy utilizando la funcion... Hay una forma de hacer que la variable "nombre" sea la misma tanto para mi codigo como para la funcion? y si no se puede ¿Hay otra alternativa?

Código:
def f_mensasaje(mensaje):
    continuar = True
    while continuar:
        es_mensaje = str(input("¿Quieres seguir escribiendo mensajes? (S/N)"))
        if es_mensaje == "S" or es_mensaje == "s" or es_mensaje == "":
            mensaje_n = print("Publica tu mensaje")
            mensaje = input()
            print("----------------------------------------------------------------------------------")
            print(nombre, ": ", mensaje)
            print("----------------------------------------------------------------------------------")
            return f_mensasaje(mensaje)
        elif es_mensaje == "N" or es_mensaje == "n":
            print("Gracias por usar REDOS ^^")
            continuar = False
            return continuar
        elif es_mensaje != "N" or es_mensaje != "n" or es_mensaje != "s" or es_mensaje != "S":
            return f_mensasaje(mensaje)
        else:
            continuar = False
            return continuar

Imprimir

  PyQt5, pasar variable a una def desde button
Enviado por: Kali - 06-09-2020, 12:04 PM - Foro: Aplicaciones de escritorio - Respuestas (3)

Hola cracks,
Sé que tiene que ser algo básico que se me escapa pero soy incapaz de pasar una variable n a una función que está relacionada con un QButton...

  1. import sys
  2. import pyodbc
  3. from PyQt5 import uic
  4. from PyQt5.QtWidgets import QMainWindow, QApplication
  5.  
  6. class GUI_tareas(QMainWindow):
  7.     def __init__(self):
  8.         super().__init__()
  9.         uic.loadUi("GUI_tareas.ui", self)
  10.         self.boton_actualizar_1.clicked.connect(self.fn_actualizar)#QUIERO PASAR n=1
  11.         self.boton_actualizar_2.clicked.connect(self.fn_actualizar)#QUIERO PASAR n=2
  12.  
  13.     def fn_actualizar(self):
  14.   
  15.         print(n)
  16.  
  17. if __name__ == '__main__':
  18.     app = QApplication(sys.argv)
  19.     GUI = GUI_tareas()
  20.     GUI.show()
  21.     sys.exit(app.exec_())


He probado con fn_actualizar(self, n) y etc pero con diferentes combinaciones siempre me da error...

Gracias de antemano!!!

Imprimir

  matriz de distancia Manhattan python
Enviado por: andres Ramirez - 04-09-2020, 01:25 AM - Foro: Visualización y análisis de datos - Sin respuestas

Hola, Soy bastante nuevo en el tema de Python, Estoy tratando de programar la matriz de Mannhatan sin ninguna librería (Debo realizarla así), al ejecutar el código genera la matriz (Ver al final), pero lo que sucede es que no he podido acomodar las variables x,y,z y o en una matriz, como ven en el código quiero hacerlo con matrix[] y que me genere un orden especifico, que pasa? .... que desarrolle este ejemplo pero si necesito más vectores en la matriz me toca a mano colocarla, como podría automatizarla?   Gracias por su ayuda... Smile Smile
#### DistManhattan
x=[1,2,3,4,5]
y=[2,2.5,3.2,2,2]
z=[2,5,3,2.1548,1]
o=[-2.2,-2.5,-5.3,2.1548,1]
matrix=[[x,y,z,o],[y,z,o,x],[z,o,x,y],[o,x,y,z]]
m=4
Salida=[[None for _ in range(m)] for _ in range(m)]
n=len(matrix)
for i in range(0,n):
    for j in range(0,n):
        dist=0
        a=matrix[i][0]
        b=matrix[0][j]
        for k in range(0,len(a)):
            dif=a[k]-b[k]
            if dif<0:
                dif=dif*-1
                dist=dist+dif
                Salida[i][j]=dist
            else:
                dist=dist+dif
                Salida[i][j]=dist
            #print (dist)
for i in range(n):
    print(Salida[i][:])
#Resultado matriz en diagonal
[0, 6.7, 9.8452, 21.8452] 
[6.7, 0.0, 3.8548, 18.854799999999997] 
[9.8452, 3.8548, 0.0, 20.0]
[21.8452, 18.854799999999997, 20.0, 0.0]

Imprimir

  Saludos a todos.
Enviado por: cheroky - 02-09-2020, 06:57 AM - Foro: Inicio - Respuestas (1)

Saludos pythonistas.

Llevo programando en C y C++ algo más de 20 años y estoy dando los primeros pasos en python. Espero participar y chupar conocimientos de la comunidad  Big Grin  

No leemos en algún hilo.

Suerte, salud y buen código!!

Imprimir

  PyQt5, llamar a QLineEdit desde un string
Enviado por: Kali - 01-09-2020, 04:19 PM - Foro: Aplicaciones de escritorio - Respuestas (2)

Hola a todos,
Llevo meses dándole a Python y uso PyQt5 desde Qt Designer para visualizar datos de un Microsoft Server.

Lo que me está costando es poder acceder a objetos tipo QLineEdit en base a un string.

Es decir, tengo un Objeto (creado en Qt Designer) llamados linea_1, linea_2, linea_3, etc y quiero escribir dentro valores  tipo Hola_1, Hola_2, Hola_3, etc, pero NO PUEDO Angry Angry 

y por eso estoy haciendo un código largo de narices:

kk= "Hola" + n
if n==1:
       self.linea_1.setText(str(kk))
elif n==2:
       self.linea_2.setText(str(kk))
elif n==3:
       self.linea_3.setText(str(kk))

............

No hay ninguna forma de usando algo tipo "linea_"+n, hacer:
kk= "Hola" + n
self.("linea_"+n).setText(str(kk))

THNKS

Imprimir

  Registar ambos valores
Enviado por: 9acca9 - 22-08-2020, 01:24 AM - Foro: General - Sin respuestas

Hola a todos.
Tengo este codigo es una grilla de 3x3 con switches reed. Tengo un magneto en la primera columna a1,a2,a3 (estos estan programados para estar cerrados al comienzo).
Lo que quiero es que al levantar un iman y llevarlo a la otra posicion. se imprima en pantalla de donde lo tome y donde lo puse.

Actualmente solo dice la posicion donde fue cerrado o la posicion donde fue abierto. Dos veces, asi:


square 8 reed switch Close
B 3 B 3
square 8 reed switch Open
B 3 B 3
square 9 reed switch Close
C 3 C 3.

Me gustaria que dijera, por ejemplo b3c3

Gracias a todos

Este es el codigo:


Código:
# lights LED when reed switch closes

import smbus
import time
import math
from Adafruit_LED_Backpack import Matrix8x8
import I2C_LCD_driver

#Display and Keypad setup

# Initialize the LCD using the pins
lcd = I2C_LCD_driver.lcd()

lcd.lcd_clear()

# create some custom characters
lcd.lcd_display_string('Test',1)

#LED setup
# Create display instance on default I2C address (0x70) and bus number.
display = Matrix8x8.Matrix8x8(address=0x70, busnum=1)

# Initialize the display. Must be called once before using the display.
display.begin()
display.clear()
display.write_display()

# MCP23017  setup
# this program scans both registers one device, giving 2 x 8 = 16 inputs, only 9 of these are used.
bus = smbus.SMBus(1) # Rev 2 Pi uses 1
# this program scans both the A and B registers of one MCP23017 port exapander and returns changes
mbrd = [0xB6,0xFF]
chcol =["A","B","C"]  # column labels
i2cadd=0x21 # the I2c Device address of the MCP23017s (A0-A2)
GPIOn = [0x12, 0x13]
IODIRA = 0x00 # APin direction register for first 8 ie 1 = input or 2= output
IODIRB = 0x01 # B Pin direction register
GPIOA  = 0x12 # Register for inputs
GPIOB  = 0x13 # B Register for inputs
GPPUA= 0x0C  # Register for Pull ups A
GPPUB= 0x0D  # Register for Pull ups B

# Set all A 8 GPA pins as  input. ie set them to 1 oXFF = 11111111
bus.write_byte_data(i2cadd,IODIRA,0xFF)
# Set pull up on GPA pins .ie from default of 0 to 11111111
bus.write_byte_data(i2cadd,GPPUA,0xFF)
# Set all B 8 GPB pins as  input. ie set them to 1 oXFF = 11111111
bus.write_byte_data(i2cadd,IODIRB,0xFF)
# Set pull up on GPB pins .ie from default of 0 to 11111111
bus.write_byte_data(i2cadd,GPPUB,0xFF)

print "starting"
# now look for a change

# Loop until user presses CTRL-C
while True:
  # read the 8 registers

  for l in range(2):  #loops round both registers of MCP23017
    a = bus.read_byte_data(i2cadd,GPIOn[l])
    if a != mbrd[l]: # there has been a change
      c = a ^ mbrd[l]  # bitwise operation copies the bit if it is set in one operand but not both.
      dirx = "Close"
      y = math.frexp(c)[1]  # calculates integer part of log base 2, which is binary bit position
      m=y+l*8
      x =int((m-1)/3)+1   # anodes numbers starts 1
      y =  (2+m)%3   # cathodes number start 0
      if a > mbrd[l] : dirx = "Open"  # if the number gets bigger a 0 has changed to a 1
      y = math.frexp(c)[1]  # calculates integer part of log base 2, which is binary bit position
      w=y+l*8
      x =int((w-1)/3)+1   # anodes numbers starts 1
      y =  (2+w)%3   # cathodes number start 0

      if dirx == "Close":
        display.set_pixel(x, y, 1)  # switch on the LED
        lcd.lcd_clear()
        #lcd.message('Hello\nworld!')
        lcd.lcd_display_string('Square: ',2,)
        lcd.lcd_display_string(str(w),2,8)


      if dirx == "Open":
        display.set_pixel(x, y, 0)  # switch off the LED
        lcd.lcd_clear()

      display.write_display()
      print "square", w, " Reed Switch " , dirx    # chcol[(w+2)%3], (int((w-1)/3))+1
      print chcol[(m+2)%3], (int((m-1)/3))+1,chcol[(w+2)%3], (int((w-1)/3))+1

      mbrd[l]=a  # update the current state of the board
      time.sleep(0.1)

Imprimir