Skip to content

Commit

Permalink
v1.3.2
Browse files Browse the repository at this point in the history
  • Loading branch information
corentindrd committed Jun 29, 2022
1 parent 9e14839 commit 9f72f40
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 24 deletions.
43 changes: 26 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,21 @@ Ce programme est un client TCP de réception de trame venant d'un serveur.
***

## Prérequis
- Raspberry PI 4 (2,4,8G) ([Raspberry](https://www.kubii.fr/cartes-raspberry-pi/2772-nouveau-raspberry-pi-4-modele-b-4gb-kubii-0765756931182.html))
- (optionnel) PiFace digital 2 ([PiFace](https://shop.mchobby.be/fr/pi-hats/221-piface-digital-2-pour-raspberry-pi-3232100002210.html))
- Carte SD ([Carte SD](https://www.amazon.fr/SanDisk-M%C3%A9moire-microSDHC-Adaptateur-homologu%C3%A9e/dp/B08GY9NYRM/ref=sr_1_7?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=3GQ2WS313G7WF&keywords=carte%2Bsd%2Bmicro%2B32&qid=1655934994&sprefix=carte%2Bsd%2Bmicro%2B32%2Caps%2C73&sr=8-7&th=1))
- Alimentation Raspberry ([Alimentation](https://www.kubii.fr/alimentations/2678-alimentation-officielle-usb-type-c-raspberry-pi-3272496300002.html))
- Ecran 16:9 avec entrée HDMI
- Cable micro HDMI vers HDMI
- Raspberry Imager ([Téléchargement](https://www.raspberrypi.com/software/))
- FileZilla pour l'envoi de fichier par FTP ([Téléchargement](https://filezilla-project.org/download.php?type=client))
- Un clavier et une souris pour la première configuration du RPI
- Raspberry PI 4 (2,4,8G) ([Raspberry](https://www.kubii.fr/cartes-raspberry-pi/2772-nouveau-raspberry-pi-4-modele-b-4gb-kubii-0765756931182.html)).
- (optionnel) PiFace digital 2 ([PiFace](https://shop.mchobby.be/fr/pi-hats/221-piface-digital-2-pour-raspberry-pi-3232100002210.html)).
- Carte SD ([Carte SD](https://www.amazon.fr/SanDisk-M%C3%A9moire-microSDHC-Adaptateur-homologu%C3%A9e/dp/B08GY9NYRM/ref=sr_1_7?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=3GQ2WS313G7WF&keywords=carte%2Bsd%2Bmicro%2B32&qid=1655934994&sprefix=carte%2Bsd%2Bmicro%2B32%2Caps%2C73&sr=8-7&th=1)).
- Alimentation Raspberry ([Alimentation](https://www.kubii.fr/alimentations/2678-alimentation-officielle-usb-type-c-raspberry-pi-3272496300002.html)).
- Ecran 16:9 avec entrée HDMI.
- Cable micro HDMI vers HDMI.
- Raspberry Imager ([Téléchargement](https://www.raspberrypi.com/software/)).
- FileZilla pour l'envoi de fichier par FTP ([Téléchargement](https://filezilla-project.org/download.php?type=client)).
- Un clavier et une souris pour la première configuration du RPI.
***
## MISE EN PLACE DU PROGRAMME
Pour une bonne utilisation du programme en fonction de votre installation il suffit de changer l'adresse IP et le port à la ligne 123 et 148
avec les informations correspondantes de votre serveur TCP.
## INSTALLATION RPI
## MISE EN PLACE DU PROGRAMME MANUELLEMENT
- Télécharger la version du programme souhaitée.
- Changer l'adresse IP par l'adresse de votre serveur dans la variable "ipaddress".
- Changer le numéro de port par celui souhaitée dans la variable "port".
## INSTALLATION RPI MANUELLEMENT

- Flasher Raspbian Desktop sur la carte SD avec Raspberry Imager.
- Prendre la version Raspberry pi OS 64bits avec Bureau.
Expand Down Expand Up @@ -56,16 +57,23 @@ Rajouter en bas du fichier `@sudo python3 main.py`
- Le fichier main.py n'est pas dans le bon répertoire, le fichier autostart est défini de base dans le répertoire `/home/pi/`
Si le programme est dans un autre répertoire il faut l'indiquer dans le fichier autostart EXEMPLE : `@sudo python3 /home/pi/radio/main.py`
- "No PiFace Digital board detected":
- Enlever et remettre bien la carte sur le RPI puis relancer le programme
- Refaire la procédure d'installation des librairies
- Enlever et remettre bien la carte sur le RPI puis relancer le programme.
- Refaire la procédure d'installation des librairies.

***
## CHANGELOG
### V1.3.2
#### **Améliorations et divers :**
- Ajout de la variable "ipaddress" qui permet de changer l'adresse IP du serveur plus facilement.
- Ajout de la variable "port" qui permet de changer le port de connexion au serveur plus facilement.
- Le chrono ne s'affiche plus au lancement du programme tant que le serveur n'a pas envoyé l'information ON AIR.
- Nettoyage du code au niveau des importations.
- Nettoyage du code au niveau des commentaires.
### V1.3.1
#### **Améliorations et divers :**
- Diminution du lag des secondes entre l'heure et les points jaunes.
- La fonction des heures a été déplacée dans la fonction trigonométrie pour éviter la latence.
- La fonction "second" a été suprrimée pour éviter la latence.
- La fonction "second" a été supprimée pour éviter la latence.
### V1.3
#### **Principaux ajouts :**
- L'heure du milieu ne disparait plus à certains moments lors du changement de seconde.
Expand All @@ -82,7 +90,8 @@ Rajouter en bas du fichier `@sudo python3 main.py`
- Changement de la taille des secondes et des heures qui était trop grande.
### V1.2.0
#### **Principaux ajouts :**
- L'interface graphique fonctionne même sans la carte électronique PiFace installée
- L'interface graphique fonctionne même sans la carte électronique PiFace installée.
- Ajout d'un système d'exception lors de l'utilisation des librairies PiFace.

### V1.1
#### **Principaux ajouts :**
Expand Down
34 changes: 27 additions & 7 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
import socket
import threading
import time
from datetime import datetime
from tkinter import *

try:
import pifacedigitalio as p
except:
pass

from datetime import datetime
from tkinter import *

# fonction start chrono

def start_chronometer(h=0, m=0, s=0):
global process
try:
Expand Down Expand Up @@ -44,6 +44,7 @@ def start_chronometer(h=0, m=0, s=0):
process = chrono.after(1000, start_chronometer, h, m, (s + 1))

# fonction stop chrono

def stop_chronometer():
try:
global process
Expand All @@ -52,6 +53,7 @@ def stop_chronometer():
pass

# fonction pause chrono

def resume_chronometer():
try:
global process
Expand All @@ -64,6 +66,7 @@ def resume_chronometer():
pass

# fonction création secondes

def trigo():
while True:
second = int(datetime.now().strftime("%S"))
Expand All @@ -85,7 +88,8 @@ def trigo():
C.place(relx=0.5, rely=0.5, anchor=CENTER)
hour.config(text=datetime.now().strftime("%H:%M:%S"))

# fonctio input piface raspberry
# fonction input piface raspberry

def piface_read():
while True:
if p.digital_read(0) == 1:
Expand All @@ -102,14 +106,15 @@ def piface_read():
time.sleep(0.3)

# fonction serveur tcp

def onair():
global connected
global sock
global title
while True:
try:
if connected is False:
sock.connect(('192.168.1.86', 65432))
sock.connect((ipaddress, port))
print("Connexion au serveur réussie")
message = sock.recv(1024).decode("UTF-8")
if message.find("10,1") != -1:
Expand All @@ -120,6 +125,7 @@ def onair():
except:
pass
title.config(text="ON AIR", font=("Avenir-Black", title_size), bg='#ff0000', fg='white')
chrono.place(relx=0.5, rely=0.9, anchor=CENTER)
elif message.find("10,0") != -1:
stop_chronometer()
try:
Expand All @@ -134,14 +140,15 @@ def onair():
print("Connexion perdue... reconnexion")
while not connected:
try:
sock.connect(('192.168.1.86', 65432))
sock.connect((ipaddress, port))
connected = True
print("Re-connexion réussie")
except socket.error:
time.sleep(0.5)
sock.close()

# init

try:
p.init()
except:
Expand All @@ -150,11 +157,13 @@ def onair():
root = Tk()

# récupère les informations de l'écran pour mettre à niveau

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
screen_resolution = str(screen_width) + 'x' + str(screen_height)

#initialisation des variables écran 1920x1080

initial_screen = 1920
title_size = int(172 * screen_width / initial_screen)
chrono_size = int(142 * screen_width / initial_screen)
Expand All @@ -163,37 +172,46 @@ def onair():
width = int(515 * screen_width / initial_screen)

#initialisation des variables générales

ipaddress = '192.168.1.86'
port = 65432
rayon = width / 2
process = 0
connected = True

#création de l'interface tkinter

root.title("On Air interface")
root.geometry(screen_resolution)
root.config(background='#000000000')
root.attributes("-fullscreen", True)

#création du ONAIR

title = Label(root, text="ON AIR", font=("Avenir-Black", title_size), bg='#4D0000', fg='black')
title.place(relx=0.5, rely=0.12, anchor=CENTER)

#création du canvas

C = Canvas(root, bg="black", height=canvas_size, width=canvas_size, highlightthickness=0)

#création du chrono

chrono = Label(root, fg='white', bg='black', font=("Avenir-Black", chrono_size))
chrono['text'] = "00:00:00"
chrono.place(relx=0.5, rely=0.9, anchor=CENTER)

#création des threads

th1 = threading.Thread(target=onair, daemon=True)
th2 = threading.Thread(target=trigo, daemon=True)
th3 = threading.Thread(target=piface_read, daemon=True)

#initialisation du client TCP

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#fonction trigo heures

for angle in range(0, 12):
angle = ((angle * 30) * math.pi) / 180
x = rayon + ((rayon * 0.90) * math.cos(angle))
Expand All @@ -206,9 +224,11 @@ def onair():
C.place(relx=0.5, rely=0.5, anchor=CENTER)

#création de la première seconde

#C.create_oval(145, 25, 155, 35, fill='#FFAA00', tags="first")

#création de l'heure

hour = Label(root, text="",fg='#0003FF', bg='black', font=("ds-digital", clock_size))
hour.place(relx=0.5, rely=0.5, anchor=CENTER)

Expand Down

0 comments on commit 9f72f40

Please sign in to comment.