>>> import subprocess
Traceback (most recent call last):
File "", line 1, in
import subprocess
File "", line 988, in _find_and_load
File "", line 148, in __enter__
File "", line 174, in _get_module_lock
File "", line 59, in __init__
File "", line 59, in __init__
File "C:\Users\Hercu\AppData\Local\Programs\Python\Python38\lib\bdb.py", line 88, in trace_dispatch
return self.dispatch_line(frame)
File "C:\Users\Hercu\AppData\Local\Programs\Python\Python38\lib\bdb.py", line 112, in dispatch_line
self.user_line(frame)
File "C:\Users\Hercu\AppData\Local\Programs\Python\Python38\lib\idlelib\debugger.py", line 24, in user_line
self.gui.interaction(message, frame)
AttributeError: '_ModuleLock' object has no attribute 'name'
[DEBUG ON]
>>>
=====Wokwi2GtkWave=====
Wokwi2GtkWave permet d'automatiser l'affichage des captures de chronogrammes réalisés par l'analyseur logique intégré de Wokwi. Si vous désirez plus d'informations sur l'outil: https://github.com/bvandepo/wokwi2gtkwave
=====Pour Windows=====
====Installation de Wokwi2GtkWave pour Windows====
Créer un dossier wokwi dans votre dossier utilisateur, C:\Users\"votrelogin", pour avoir C:\Users\"votrelogin"\wokwi en respectant les minuscules!
===Téléchargement des fichiers===
Si vous n'avez pas Python >=3.8.6 avec PIP, le télécharger et l'installer. TRES IMPORTANT, à l'installation, cocher "add to PATH": https://bvdp.inetdoc.net/files/cesi/gtkwave/python-3.8.6-amd64.exe
Télécharger dans C:\Users\"votrelogin"\wokwi: https://raw.githubusercontent.com/bvandepo/wokwi2gtkwave/main/wokwi2gtkwave.py
===En cas de problème===
En cas de problème, télécharger cette ancienne version: https://bvdp.inetdoc.net/files/cesi/gtkwave/versionwindows/wokwi2gtkwave.py
Télécharger et dézipper ce fichier dans C:\Users\"votrelogin"\wokwi: https://bvdp.inetdoc.net/files/cesi/gtkwave/gtkwave-3.3.100-bin-win32.zip
====Configuration du navigateur WEB ====
===Configuration du navigateur WEB Chromium pour la sauvegarde automatique des fichiers dans le dossier de téléchargement===
C'est le navigateur conseillé! Vous devez juste régler le dossier de Téléchargement dans Parameters->advanced parameters->location et désactiver l'option "always ask where to save the file"
===Configuration du navigateur WEB Firefox pour la sauvegarde automatique des fichiers dans le dossier de téléchargement===
Saisir l'url suivante dans Firefox: about:config
Cliquer sur "accepter les risques et poursuivre"
Dans la zone recherche un nom de préférence, copier:
browser.helperApps.neverAsk.saveToDisk
Cliquer sur le petit stylo (ou faire clic droit sur la ligne puis Modifier), puis coller dans la zone de texte:
application/octet-stream
Et cliquer sur le V bleu pour valider, puis fermer cet onglet
===Lancement de Wokwi-GtkWave pour Windows===
A chaque séance, vous devrez lancer une fois l'application soit en double cliquant sur le fichier wokwi2gtkwave.py dans le dossier wokwi, soit en l'exécutant depuis une console en faisant:
presser touche Windows +R, puis taper cmd et "entrée", puis copier coller les lignes suivantes:
echo commence
cd C:\Users\%username%\wokwi
python wokwi2gtkwave.py
echo fini
Vous devrez laisser ouverte la fenêtre de commande pendant tout le TP !
====Test avec un fichier .vcd====
Faire un clic molette sur le lien suivant pour télécharger le fichier. Gtkwave devrait afficher les chronogrammes automatiquement: https://bvdp.inetdoc.net/files/cesi/gtkwave/test1/wokwi-logic-iut.vcd
=====Pour Linux=====
====Installation de Wokwi2GtkWave pour Linux Debian====
Ouvrir un terminal en tapant sur CTRL+ALT+T puis copier la ligne suivante et saisir votre mot de passe
sudo apt install python3 gtkwave wget python3-pip
Puis copier les lignes suivantes:
mkdir -p ~/wokwi
cd ~/wokwi
rm wokwi2gtkwave.py
wget https://raw.githubusercontent.com/bvandepo/wokwi2gtkwave/main/wokwi2gtkwave.py
chmod a+x wokwi2gtkwave.py
====Configuration du navigateur WEB ====
Faire comme indiqué pour Windows
===Lancement de Wokwi-GtkWave pour Linux===
A chaque séance, vous devrez lancer une fois l'application soit en double cliquant sur le fichier wokwi2gtkwave.py dans le dossier wokwi, soit en l'exécutant depuis une console en faisant:
Presser les touches CTRL+ALT+T, puis copier coller les lignes suivantes:
echo commence
cd ~/wokwi
python3 ./wokwi2gtkwave.py
echo fini
Vous devrez laisser ouverte la fenêtre de commande pendant tout le TP !
====Test avec un fichier .vcd====
Faire un clic molette sur le lien suivant pour télécharger le fichier. Gtkwave devrait afficher les chronogrammes automatiquement: https://bvdp.inetdoc.net/files/cesi/gtkwave/test1/wokwi-logic-iut.vcd
----------------------------------------------------------------------------
=====Ajout download gtkwave=====
debug=True
import os
import sys
import math
import shutil
from sys import platform
########################################
#https://stackoverflow.com/questions/1051254/check-if-python-package-is-installed
#install automatically watchdog if not already installed
import subprocess
import sys
reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'])
installed_packages = [r.decode().split('==')[0] for r in reqs.split()]
if 'watchdog' in installed_packages:
if debug: print('watchdog pip package already installed')
else:
if debug: print('watchdog pip package missing, lets install it')
import pip
pip.main(['install','watchdog'])
if 'wget' in installed_packages:
if debug: print('wget pip package already installed')
else:
if debug: print('wget pip package missing, lets install it')
import pip
pip.main(['install','wget'])
#inspiré de http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/
#sudo pip3 install watchdog
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
#doc dans : https://pythonhosted.org/watchdog/api.html#watchdog.observers.Observer
import time
#to get gtkwave from the web
import wget
#to unzip file
import shutil
##########################################################
#----téléchargement de fichier, récupéré sur https://www.programcreek.com/python/example/83386/wget.download
def download_file(local_path, link, checksum_reference=None):
"""Checks if a local file is present and downloads it from the specified path otherwise.
If checksum_reference is specified, the file's md5 checksum is compared against the
expected value.
Keyword arguments:
local_path -- path of the file whose checksum shall be generated
link -- link where the file shall be downloaded from if it is not found locally
checksum_reference -- expected MD5 checksum of the file
"""
if not os.path.exists(local_path):
print('Downloading from %s, this may take a while...' % link)
wget.download(link, local_path)
print()
if checksum_reference is not None:
checksum = generate_md5_checksum(local_path)
if checksum != checksum_reference:
raise ValueError(
'The MD5 checksum of local file %s differs from %s, please manually remove \
the file and try again.' %
(local_path, checksum_reference))
return local_path
##########################################################
path_to_zip_file="gtkwave-3.3.100-bin-win32.zip"
#download the zip file only if it does not exist
if not os.path.exists(path_to_zip_file):
print("downloading gtkwave")
download_file(path_to_zip_file,"https://bvdp.inetdoc.net/files/cesi/gtkwave/gtkwave-3.3.100-bin-win32.zip", checksum_reference=None)
directory_to_extract_to="./"
print("unzipping gtkwave")
shutil.unpack_archive(path_to_zip_file, directory_to_extract_to)
=====generation d'un .exe=====
https://www.askpython.com/python/pyinstaller-executable-files
a l'iut le paquet pip s'est mis dans:
C:\Users\bertrand.vandeportae\AppData\Roaming\Python\Python39\Scripts
C:\Users\bertrand.vandeportae\AppData\Roaming\Python\Python39\Scripts\pyinstaller testdownunzip.py
cd dist\testdownzip
testdownzip.exe
NE MARCHE PAS!
https://datatofish.com/executable-pyinstaller/#:~:text=%20Steps%20to%20Create%20an%20Executable%20using%20PyInstaller,PyInstaller.%20Now%20you%E2%80%99ll%20be%20able%20to...%20More%20
=====Tentative MACOS=====
installer gtkwave avec port: https://ports.macports.org/port/gtkwave/