Posté la dernière fois a terminé un capteur pratique, et après l'avoir utilisé pendant un certain temps, certains points que je voulais améliorer sont ressortis.
En ce qui concerne 1., j'y pensais depuis le début, et le pop-up standard de Windows a l'air moche de toute façon, alors je voulais lui donner un aspect à la mode et moderne.
Concernant 2., le pop-up n'apparaît pas lorsque vous jouez à un jeu en plein écran, donc je l'ai mal vécu à moins que je ne le remarque avec le son.
En 3., j'ai plusieurs PC dans ma chambre, donc je voulais pouvoir utiliser l'un ou l'autre PC.
Après avoir consulté une connaissance, je pense que grogner est bon. J'ai une suggestion J'ai décidé de l'utiliser car il peut être utilisé sous Windows, il peut être facilement utilisé à partir de la ligne de commande, il a l'air moderne et cool, et il produit également du son. Je l'ai fait exécuter à partir d'un fichier batch en me référant à ce site
Tout d'abord, installez growl pour windows et passez-le par le chemin. (J'ai remarqué après avoir terminé, mais j'ai l'impression que si j'écris le chemin complet dans le fichier batch, je n'ai pas à passer le chemin) Après cela, définissez le mot de passe, l'apparence et le son à partir de l'écran de réglage du grognement et terminez (Comme il est conforme à ce site, il est omis)
Créez un fichier de commandes à afficher
popup.bat
growlnotify.exe /t:"Emergency!" /s:False /pass:"password"Veuillez sauvegarder
Si vous définissez / s: True, la fenêtre contextuelle ne disparaîtra pas à moins que vous ne cliquiez dessus, mais c'est gênant si elle vient en continu, donc je la mets sur False
Lorsque j'ai exécuté cela, une fenêtre contextuelle était affichée, mais lorsque j'ai exécuté le fichier de commandes, l'invite de commande était affichée pendant un moment. Après de nombreuses recherches, la méthode d'appeler un fichier batch depuis vbs semble être la voie royale (je ne sais pas vraiment) Donc je ne l'ai pas compris, mais j'ai créé des vbs
popup.vbs
Dim oShell
Dim path
Set oShell = WScript.CreateObject ("WSCript.shell")
path = oShell.CurrentDirectory
path = path & "\PopUp.bat"
oShell.run path,0
Set oShell = Nothing
Cela fonctionne comme souhaité, j'ai donc décidé d'exécuter ce vbs à partir d'un script.
La partie qui affiche la fenêtre contextuelle créée la dernière fois
python
def popup(): #Envoyer un message sur l'écran Windows
user32 = windll.user32
user32.MessageBoxA( 0, "Enemy Will Come Here!!", "Caution!!", 0x00000030)
Changer comme ci-dessous
def growl(): #Exécutez vbs pour montrer le grognement
path = os.path.abspath(os.path.dirname(__file__))
filename = "popup.vbs"
path = os.path.join(path,filename)
os.system(path) h
Dans l'ensemble, c'est devenu comme ça
sencer_server.py
from __future__ import print_function
import socket
import time
import os
from contextlib import closing
from ctypes import *
def main():
while True:
print('listen,start')
recv()
time.sleep(1)
def recv():
host = '192.168.1.xx'
port = 8080
backlog = 10
bufsize = 4096
socket.timeout(1)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
with closing(sock):
sock.bind((host, port))
sock.listen(backlog)
conn, address = sock.accept()
msg = conn.recv(bufsize)
if (msg == 'raspberry'):
print('recieve')
growl()
except socket.timeout:
print('connect,timeout')
except socket.error:
print('connect,error')
def growl():
path = os.path.abspath(os.path.dirname(__file__))
filename = "popup.vbs"
path = os.path.join(path,filename)
os.system(path)
if __name__ == '__main__':
main()
Terminé J'ai pu réaliser le pop-up à la mode que je recherchais
J'ai examiné différentes méthodes et répertorié les candidats
Il semble facile de diffuser 1., et je n'avais pas besoin d'écrire chaque adresse IP dans la source, alors je l'ai essayé, mais j'étais frustré parce que cela ne fonctionnait pas. Je suis frustré, alors je veux me venger dès que je demande à quelqu'un
Concernant 3., il faut du temps pour revoir les spécifications globales, sélectionner le cloud et conclure un contrat, il est donc réservé
Je suis réticent, mais en 2., j'ai décidé de m'en occuper pour le moment
Alors, j'ai changé ce qui suit
sencer_cliant.py
from __future__ import print_function
import socket
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.IN)
from contextlib import closing
import threading
def main():
print('start,waiting')
while True:
inputValue = GPIO.input(25)
host = ['192.168.1.xx','192.168.1.yy']
if (inputValue == True):
print('inputTrue')
for ip in host:
thread = threading.Thread(target=send, args=(ip,))
thread.start()
time.sleep(5)
def send(host):
port = 8080
bufsize = 4096
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
with closing(sock):
try:
sock.connect((host, port))
sock.send('raspberry')
print(host + ' send')
except socket.timeout:
print(host + ' socketTimeout')
except socket.error:
print(host + ' socketError')
return
if __name__ == '__main__':
main()
Terminé
L'insatisfaction pratique dans mon environnement a été presque éliminée et je vis une vie confortable dans ma chambre. Je viens de fabriquer un jouet bizarre avec un motif impur, mais quand j'ai touché du python pour la première fois, la tension est montée et j'étais assez absorbée. Je veux essayer de m'obscurcir pendant les vacances d'hiver De plus, comme c'est presque une copie, le contenu de la source peut être terrible, je ne peux pas l'obtenir à moins de le faire en l'examinant un peu plus, alors j'aimerais me consacrer petit à petit.
Si vous avez des suggestions ou des conseils, n'hésitez pas à nous contacter.
Recommended Posts