Recption série

Dependencies:   mbed

Committer:
POTLESS_2
Date:
Mon Jul 10 06:33:41 2017 +0000
Revision:
0:966038e2c2e3
Reception message s?rie...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
POTLESS_2 0:966038e2c2e3 1 #include "mbed.h"
POTLESS_2 0:966038e2c2e3 2
POTLESS_2 0:966038e2c2e3 3 Serial pc(USBTX, USBRX);
POTLESS_2 0:966038e2c2e3 4 Serial Light_serial_port(PC_10, PC_11);//pinout 476RG
POTLESS_2 0:966038e2c2e3 5
POTLESS_2 0:966038e2c2e3 6 /*
POTLESS_2 0:966038e2c2e3 7 Différent montage en réception en fonction du choix de l'emission du signal :
POTLESS_2 0:966038e2c2e3 8
POTLESS_2 0:966038e2c2e3 9 Dans tous les cas le code reste le même, sauf pinout si tu changes de carte.
POTLESS_2 0:966038e2c2e3 10 Le code est aussi l'exemple de la nouvelle façon de réceptionner le signal d'un port série, lumière ou pas...
POTLESS_2 0:966038e2c2e3 11
POTLESS_2 0:966038e2c2e3 12 Pour Solution 1 ==> Récepteur IR à 3 pattes
POTLESS_2 0:966038e2c2e3 13
POTLESS_2 0:966038e2c2e3 14 PC_11 / RX ------------- Recpteur IR de face -------------- 3,3v ou 5v..mettre une R
POTLESS_2 0:966038e2c2e3 15 |
POTLESS_2 0:966038e2c2e3 16 |
POTLESS_2 0:966038e2c2e3 17 |
POTLESS_2 0:966038e2c2e3 18 |
POTLESS_2 0:966038e2c2e3 19 |
POTLESS_2 0:966038e2c2e3 20 GND
POTLESS_2 0:966038e2c2e3 21
POTLESS_2 0:966038e2c2e3 22
POTLESS_2 0:966038e2c2e3 23 Pour Solution 2 et 3 ==> Récepteur photodiodes IR ou spectre complet, il faut fabriquer une 3 ème patte à la photodiode...
POTLESS_2 0:966038e2c2e3 24
POTLESS_2 0:966038e2c2e3 25 3,3v -----------------Photodiode-----------------------PC_11 / RX
POTLESS_2 0:966038e2c2e3 26 |
POTLESS_2 0:966038e2c2e3 27 |
POTLESS_2 0:966038e2c2e3 28 |
POTLESS_2 0:966038e2c2e3 29 R = 1 kΩ
POTLESS_2 0:966038e2c2e3 30 |
POTLESS_2 0:966038e2c2e3 31 |
POTLESS_2 0:966038e2c2e3 32 |
POTLESS_2 0:966038e2c2e3 33 GND
POTLESS_2 0:966038e2c2e3 34
POTLESS_2 0:966038e2c2e3 35 */
POTLESS_2 0:966038e2c2e3 36 const int Buffer_size = 25;//a adapter au message reçu de préférence (ici pour le Cozir H, T, Z finissant par \n)
POTLESS_2 0:966038e2c2e3 37 char Light_message[Buffer_size];
POTLESS_2 0:966038e2c2e3 38 int bytes_Recieved;
POTLESS_2 0:966038e2c2e3 39 bool newMessageFlag = false;
POTLESS_2 0:966038e2c2e3 40
POTLESS_2 0:966038e2c2e3 41 void callback_Light_Message()
POTLESS_2 0:966038e2c2e3 42 {
POTLESS_2 0:966038e2c2e3 43 while(Light_serial_port.readable()) {
POTLESS_2 0:966038e2c2e3 44 if ((bytes_Recieved == Buffer_size) || newMessageFlag) //éviter la saturation du buffer
POTLESS_2 0:966038e2c2e3 45 Light_serial_port.getc();
POTLESS_2 0:966038e2c2e3 46 else
POTLESS_2 0:966038e2c2e3 47 Light_message [bytes_Recieved++] = Light_serial_port.getc();//chargement du buffer dans le message
POTLESS_2 0:966038e2c2e3 48 if ((bytes_Recieved == Buffer_size) || (Light_message[bytes_Recieved-1] == '\n')) {//le message est complet ou nouvelle ligne ou autre si on veut...
POTLESS_2 0:966038e2c2e3 49 Light_message[bytes_Recieved] = 0;
POTLESS_2 0:966038e2c2e3 50 newMessageFlag = true;
POTLESS_2 0:966038e2c2e3 51 }
POTLESS_2 0:966038e2c2e3 52 }
POTLESS_2 0:966038e2c2e3 53 }
POTLESS_2 0:966038e2c2e3 54
POTLESS_2 0:966038e2c2e3 55 void decoding_Message(char message [])
POTLESS_2 0:966038e2c2e3 56 {
POTLESS_2 0:966038e2c2e3 57 //Ici je décode pas, mais on ferait le décodage du message si ion voulait...
POTLESS_2 0:966038e2c2e3 58 pc.printf("Light message = %s", Light_message);
POTLESS_2 0:966038e2c2e3 59 }
POTLESS_2 0:966038e2c2e3 60
POTLESS_2 0:966038e2c2e3 61 int main()
POTLESS_2 0:966038e2c2e3 62 {
POTLESS_2 0:966038e2c2e3 63
POTLESS_2 0:966038e2c2e3 64 Light_serial_port.attach(&callback_Light_Message, Serial::RxIrq);
POTLESS_2 0:966038e2c2e3 65 pc.printf("Start Listening light port....\r\n");
POTLESS_2 0:966038e2c2e3 66
POTLESS_2 0:966038e2c2e3 67 //Attention, a mettre en adéquation avec la partie emission
POTLESS_2 0:966038e2c2e3 68 Light_serial_port.baud(9600);
POTLESS_2 0:966038e2c2e3 69
POTLESS_2 0:966038e2c2e3 70 while(1) {
POTLESS_2 0:966038e2c2e3 71
POTLESS_2 0:966038e2c2e3 72 if (newMessageFlag) {
POTLESS_2 0:966038e2c2e3 73 decoding_Message(Light_message);
POTLESS_2 0:966038e2c2e3 74 strcpy(Light_message," ");
POTLESS_2 0:966038e2c2e3 75 bytes_Recieved = 0;
POTLESS_2 0:966038e2c2e3 76 newMessageFlag = false;
POTLESS_2 0:966038e2c2e3 77 }
POTLESS_2 0:966038e2c2e3 78
POTLESS_2 0:966038e2c2e3 79 }
POTLESS_2 0:966038e2c2e3 80 }