Commit 713b4147969da5710adb6bb3ee4f7102a07fe708
1 parent
35887fe7
Commit Fin de projet
Showing
6 changed files
with
287 additions
and
10 deletions
Show diff stats
exec.php
1 | <?php | 1 | <?php |
2 | echo "<html><body><p>"; | 2 | echo "<html><body><p>"; |
3 | - if (isset($_POST["button"]) { | ||
4 | - $resultat = system("sudo python /var/www/cgi-bin/main.py"); | 3 | + if (isset($_POST["button"])) { |
4 | + $resultat = system("sudo python /var/www/cgi-bin/thread_dd.py"); | ||
5 | } | 5 | } |
6 | - if (isset($_POST["live"]) { | 6 | + if (isset($_POST["live"])) { |
7 | $resultat = system("sudo python /var/www/cgi-bin/live.py"); | 7 | $resultat = system("sudo python /var/www/cgi-bin/live.py"); |
8 | } | 8 | } |
9 | + if (isset($_POST["modem"])) { | ||
10 | + $resultat = system("sudo ../cgi-bin/test_modem.sh"); | ||
11 | + } | ||
9 | echo "</p></body></html>"; | 12 | echo "</p></body></html>"; |
10 | ?> | 13 | ?> |
index.html
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | <head> | 3 | <head> |
4 | <meta charset="UTF-8"> | 4 | <meta charset="UTF-8"> |
5 | <link rel="stylesheet" href="css/style_index.css"> | 5 | <link rel="stylesheet" href="css/style_index.css"> |
6 | - <title>P45 Orchestre Electronique - Page de test</title> | 6 | + <title>P45 Orchestre Electronique</title> |
7 | </head> | 7 | </head> |
8 | <body> | 8 | <body> |
9 | <h1> IMA4 Projets S8 - P45 Orchestre Electronique </h1> | 9 | <h1> IMA4 Projets S8 - P45 Orchestre Electronique </h1> |
@@ -11,20 +11,32 @@ | @@ -11,20 +11,32 @@ | ||
11 | <p class="p1"> ROJ Thomas - IMA4SC</p> | 11 | <p class="p1"> ROJ Thomas - IMA4SC</p> |
12 | <p class="p2"> LETELLIER Joshua - IMA4SA</p> | 12 | <p class="p2"> LETELLIER Joshua - IMA4SA</p> |
13 | </div> | 13 | </div> |
14 | - <h3 class="desc"> Prototype d'interface WEB</h3> | ||
15 | - <p class="part1"> Premier programme : La marche impériale | ||
16 | - sur 2 FDD </p> | ||
17 | - | 14 | + <h3 class="desc"> Interface de commande des instruments</h3> |
15 | + <div class="bouton"> | ||
18 | <form action="exec.php" method="POST"> | 16 | <form action="exec.php" method="POST"> |
19 | <div class="play"> | 17 | <div class="play"> |
20 | - <input type="submit" name="button" value="Play Imperial March"> | 18 | + <input type="submit" name="button" value="Activate 2 FDD"> |
21 | </div> | 19 | </div> |
22 | </form> | 20 | </form> |
23 | 21 | ||
24 | - <form action="exec.php method="POST"> | 22 | + <form action="exec.php" method="POST"> |
23 | + <div class="play_dd"> | ||
24 | + <input type="submit" name="button" value="Activate HDD"> | ||
25 | + </div> | ||
26 | + </form> | ||
27 | + | ||
28 | + <form action="exec.php" method="POST"> | ||
25 | <div class="live"> | 29 | <div class="live"> |
26 | <input type="submit" name="live" value="Play in live with computer input"> | 30 | <input type="submit" name="live" value="Play in live with computer input"> |
27 | </div> | 31 | </div> |
28 | </form> | 32 | </form> |
33 | + | ||
34 | + <form action="exec.php" method="POST"> | ||
35 | + <div class="modem"> | ||
36 | + <input type="submit" name="modem" value="Activate Modem"> | ||
37 | + </div> | ||
38 | + </form> | ||
39 | + </div> | ||
40 | + | ||
29 | </body> | 41 | </body> |
30 | </html> | 42 | </html> |
@@ -0,0 +1,136 @@ | @@ -0,0 +1,136 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <unistd.h> | ||
4 | +#include <termios.h> | ||
5 | +#include <sys/types.h> | ||
6 | +#include <sys/stat.h> | ||
7 | +#include <fcntl.h> | ||
8 | +#include <strings.h> | ||
9 | + | ||
10 | +struct termios saveterm; | ||
11 | + | ||
12 | +int init_serial(char *device,int speed) { // Fonction pour initialiser le port Serie | ||
13 | + struct termios new; | ||
14 | + int fd=open(device,O_RDWR|O_NOCTTY);// On ouvre un descripteur de fichier en mode lecture et ecriture, ici ça sera notre port série | ||
15 | + if(fd<0){perror(device); exit(-1);} | ||
16 | + tcgetattr(fd,&saveterm); // save current port settings | ||
17 | + bzero(&new,sizeof(new)); | ||
18 | + new.c_cflag=CLOCAL|CREAD|speed|CS8; | ||
19 | + new.c_iflag=0; | ||
20 | + new.c_oflag=0; | ||
21 | + new.c_lflag=0; // set input mode (non-canonical, no echo,...) | ||
22 | + new.c_cc[VTIME]=0; // inter-character timer unused | ||
23 | + new.c_cc[VMIN]=1; // blocking read until 1 char received | ||
24 | + tcflush(fd, TCIFLUSH); | ||
25 | + tcsetattr(fd,TCSANOW,&new); | ||
26 | + return fd; | ||
27 | +} | ||
28 | + | ||
29 | +void close_serial(int fd) { // fermeture du Port Série | ||
30 | + tcsetattr(fd,TCSANOW,&saveterm); | ||
31 | + close(fd); | ||
32 | +} | ||
33 | + | ||
34 | +int main(void) { | ||
35 | + int fd = init_serial("/dev/usb/lp0", 9600); | ||
36 | + int cpt_data = 0; | ||
37 | + printf("Debut de contrôle imprimante\n"); | ||
38 | + unsigned char c=0x1B; //ESC | ||
39 | + //unsigned char d = 0x40; //@ | ||
40 | + unsigned char e = 0x0D; //CR | ||
41 | + unsigned char f = 0x0A; //LF | ||
42 | + unsigned char g = 0x28; // ( | ||
43 | + unsigned char h = 0x47; // G | ||
44 | + unsigned char i = 0x01; //1 | ||
45 | + unsigned char j = 0x00; //0 | ||
46 | + unsigned char de = 0x02; //2 | ||
47 | + unsigned char s = 0x7F; //127 | ||
48 | + unsigned char v = 0x40; //64 | ||
49 | + unsigned char ae = 0x56; //V | ||
50 | + unsigned char af = 0x55; //U | ||
51 | + unsigned char p = 0x2E; //. | ||
52 | + unsigned char hu = 0x08; | ||
53 | + unsigned char full_data = 0xFF; | ||
54 | + unsigned char empty_data = 0x00; | ||
55 | + unsigned char semi_data = 0x55; | ||
56 | + unsigned char data = 0x0F; | ||
57 | + unsigned char data_t = 0xF0; | ||
58 | + unsigned char data_o = 0xA1; | ||
59 | + unsigned char data_a = 0x22; | ||
60 | + unsigned char data_p = 0xB7; | ||
61 | + unsigned char fin = 0x0C; //FF | ||
62 | + unsigned char nh = 0xC8; | ||
63 | + write(fd, &c, 1); //ESC | ||
64 | + //write(fd, &d, 1); //@ : ESC @ permet d'initialiser l'imprimante | ||
65 | + //write(fd,&e, 1);//CR | ||
66 | + //write(fd, &f, 1); | ||
67 | + write(fd, &g, 1); // ( | ||
68 | + write(fd, &h, 1); | ||
69 | + write(fd, &i, 1); | ||
70 | + write(fd, &j, 1); | ||
71 | + write(fd, &i, 1); //ESC ( G 1 0 1 pour passer en mode graphique | ||
72 | + write (fd, &c,1); | ||
73 | + write(fd, &g, 1); | ||
74 | + write(fd, &af, 1); | ||
75 | + write(fd, &i, 1); | ||
76 | + write(fd, &j, 1); | ||
77 | + write(fd, &i, 1); | ||
78 | + write(fd, &j, 1); //ESC ( U 10 10 dot density | ||
79 | + write(fd, &c, 1); | ||
80 | + write(fd, &g,1); | ||
81 | + write(fd, &ae, 1); | ||
82 | + write(fd, &de, 1); | ||
83 | + write(fd, &i, 1); | ||
84 | + write(fd, &s,1); | ||
85 | + write(fd, &v, 1); //ESC ( V 2 0 127 64 position de depart | ||
86 | + write(fd, &c, 1); | ||
87 | + write(fd, &p, 1); | ||
88 | + write(fd, &j, 1); | ||
89 | + write(fd, &i, 1); | ||
90 | + write(fd, &j, 1); | ||
91 | + write(fd, &i, 1); | ||
92 | + write(fd, &j, 1); | ||
93 | + write(fd, &hu, 1); | ||
94 | + write(fd, &i, 1); | ||
95 | + write(fd, &j, 1); | ||
96 | + | ||
97 | + write(fd, &c, 1); | ||
98 | + write(fd, &p, 1); | ||
99 | + write(fd, &j, 1); | ||
100 | + write(fd, &i, 1); | ||
101 | + write(fd, &j, 1); | ||
102 | + write(fd, &i, 1); | ||
103 | + write(fd, &j, 1); | ||
104 | + write(fd, &hu, 1); | ||
105 | + write(fd, &i, 1); | ||
106 | + write(fd, &nh, 1); | ||
107 | + while (cpt_data < 200) { | ||
108 | + write(fd, &(full_data), 1); | ||
109 | + write(fd, &(data_o), 1); | ||
110 | + write(fd, &(data), 1); | ||
111 | + cpt_data++; | ||
112 | + } | ||
113 | + cpt_data = 0; | ||
114 | + while(cpt_data < 200) { | ||
115 | + write(fd, &(semi_data), 1); | ||
116 | + write(fd, &(data_o), 1); | ||
117 | + write(fd, &(full_data), 1); | ||
118 | + cpt_data++; | ||
119 | + } | ||
120 | + cpt_data = 0; | ||
121 | + while (cpt_data < 200) { | ||
122 | + write(fd, &(data), 1); | ||
123 | + write(fd, &(data_p), 1); | ||
124 | + write(fd, &(data_t), 1); | ||
125 | + cpt_data++; | ||
126 | + } | ||
127 | + cpt_data = 0; | ||
128 | + while(cpt_data < 200) { | ||
129 | + write(fd, &(data_p), 1); | ||
130 | + write(fd, &(full_data), 1); | ||
131 | + write(fd, &(semi_data), 1); | ||
132 | + cpt_data++; | ||
133 | + } | ||
134 | + close_serial(fd); | ||
135 | + return 0; | ||
136 | +} |
@@ -0,0 +1,113 @@ | @@ -0,0 +1,113 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <string.h> | ||
4 | +#include <unistd.h> | ||
5 | +#include <termios.h> | ||
6 | +#include <netdb.h> | ||
7 | +#include <netinet/in.h> | ||
8 | +#include <sys/types.h> | ||
9 | +#include <sys/stat.h> | ||
10 | +#include <fcntl.h> | ||
11 | + | ||
12 | +/** Constantes **/ | ||
13 | + | ||
14 | +#define SERIALDEV "/dev/ttyUSB0" | ||
15 | +#define BAUDRATE B9600 | ||
16 | +#define TAILLE_TAMPON 3 | ||
17 | + | ||
18 | +void Reponse(int ds) | ||
19 | +{ | ||
20 | + register int i; | ||
21 | + char d[TAILLE_TAMPON]; | ||
22 | + sync(); | ||
23 | + for(i=0;i<TAILLE_TAMPON;i++){ | ||
24 | + if(read(ds,d+i,1)!=1){ perror("xbeeReponse.read"); exit(-1); } | ||
25 | + if(d[i]==0x0d) break; | ||
26 | + } | ||
27 | + int size=i; | ||
28 | + for(i=0;i<size;i++) | ||
29 | + if(d[i]!=0x0d) fprintf(stdout,"%c",d[i]); | ||
30 | + if(size>0) fprintf(stdout," ("); | ||
31 | + for(i=0;i<size;i++){ | ||
32 | + fprintf(stdout,"%.2x",d[i]); | ||
33 | + if(i<size-1) fprintf(stdout," "); | ||
34 | + } | ||
35 | + if(size>0) fprintf(stdout,")\n"); | ||
36 | +} | ||
37 | + | ||
38 | +void ModeCommande(int ds) | ||
39 | +{ | ||
40 | + #ifdef DEBUG | ||
41 | + printf("{xbeeModeCommande}\n"); | ||
42 | + #endif | ||
43 | + char *cmd="+++++++++++++++++"; | ||
44 | + sleep(1); | ||
45 | + sync(); | ||
46 | + write(ds,cmd,strlen(cmd)); | ||
47 | + Reponse(ds); | ||
48 | +} | ||
49 | + | ||
50 | +void Answer(int ds) | ||
51 | +{ | ||
52 | + #ifdef DEBUG | ||
53 | + printf("{xbeeRecupereVitesse}\n"); | ||
54 | + #endif | ||
55 | + char *cmd="TAATAATAATAATAATA\r"; | ||
56 | + write(ds,cmd,strlen(cmd)); | ||
57 | + Reponse(ds); | ||
58 | +} | ||
59 | + | ||
60 | +static struct termios sauvegarde; | ||
61 | + | ||
62 | +/** Ouverture d'un port serie **/ | ||
63 | + | ||
64 | +int ouvertureSerie(char *periph,int vitesse) | ||
65 | +{ | ||
66 | + struct termios nouveau; | ||
67 | + int df=open(periph,O_RDWR|O_NOCTTY); | ||
68 | + if(df<0) return -1; | ||
69 | + | ||
70 | + tcgetattr(df,&sauvegarde); /* save current port settings */ | ||
71 | + bzero(&nouveau,sizeof(nouveau)); | ||
72 | + nouveau.c_cflag=CLOCAL|CREAD|vitesse|CS8; | ||
73 | + nouveau.c_iflag=0; | ||
74 | + nouveau.c_oflag=0; | ||
75 | + nouveau.c_lflag=0; | ||
76 | + nouveau.c_cc[VTIME]=0; | ||
77 | + nouveau.c_cc[VMIN]=1; | ||
78 | + tcflush(df, TCIFLUSH); | ||
79 | + tcsetattr(df,TCSANOW,&nouveau); | ||
80 | + | ||
81 | + return df; | ||
82 | +} | ||
83 | + | ||
84 | +/** Fermeture d'un port serie **/ | ||
85 | + | ||
86 | +void fermetureSerie(int df) | ||
87 | +{ | ||
88 | + tcsetattr(df,TCSANOW,&sauvegarde); | ||
89 | + close(df); | ||
90 | +} | ||
91 | + | ||
92 | +/** Programme principal **/ | ||
93 | + | ||
94 | +int main(void) { | ||
95 | + int ds; | ||
96 | + ds=ouvertureSerie(SERIALDEV,BAUDRATE); | ||
97 | + if(ds<0){ | ||
98 | + fprintf(stderr,"Erreur sur la connexion série.\n"); | ||
99 | + exit(-1); | ||
100 | + } | ||
101 | + char enter = '\r'; | ||
102 | + ModeCommande(ds); | ||
103 | + write(ds, &enter, 1); | ||
104 | + write(ds, &enter, 1); | ||
105 | + write(ds, &enter,1); | ||
106 | + write(ds,&enter,1); | ||
107 | + write(ds,&enter,1); | ||
108 | + Answer(ds); | ||
109 | + sleep(15); | ||
110 | + write(ds,&enter,1); | ||
111 | + fermetureSerie(ds); | ||
112 | + return 0; | ||
113 | +} |