![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
asas
Dependencies: mbed WebSocketClient
main.cpp@0:7e9e4d5000cd, 2018-12-03 (annotated)
- Committer:
- JioLessard
- Date:
- Mon Dec 03 19:13:18 2018 +0000
- Revision:
- 0:7e9e4d5000cd
aaa
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JioLessard | 0:7e9e4d5000cd | 1 | #include "mbed.h" |
JioLessard | 0:7e9e4d5000cd | 2 | #include "EthernetInterface.h" |
JioLessard | 0:7e9e4d5000cd | 3 | #include "Websocket.h" |
JioLessard | 0:7e9e4d5000cd | 4 | |
JioLessard | 0:7e9e4d5000cd | 5 | //Variable global |
JioLessard | 0:7e9e4d5000cd | 6 | DigitalOut led1(LED1); |
JioLessard | 0:7e9e4d5000cd | 7 | DigitalOut led2(LED1); |
JioLessard | 0:7e9e4d5000cd | 8 | |
JioLessard | 0:7e9e4d5000cd | 9 | //xbee pin |
JioLessard | 0:7e9e4d5000cd | 10 | DigitalOut reset(p8); |
JioLessard | 0:7e9e4d5000cd | 11 | Serial serial_connection(p13, p14); |
JioLessard | 0:7e9e4d5000cd | 12 | |
JioLessard | 0:7e9e4d5000cd | 13 | //pour lecture fichier local |
JioLessard | 0:7e9e4d5000cd | 14 | LocalFileSystem local("local"); |
JioLessard | 0:7e9e4d5000cd | 15 | int panChar; |
JioLessard | 0:7e9e4d5000cd | 16 | char url; |
JioLessard | 0:7e9e4d5000cd | 17 | |
JioLessard | 0:7e9e4d5000cd | 18 | //Configuration PAN pour Xbee |
JioLessard | 0:7e9e4d5000cd | 19 | void set_PAN(){ |
JioLessard | 0:7e9e4d5000cd | 20 | int panLSB = (uint8_t)panChar; |
JioLessard | 0:7e9e4d5000cd | 21 | int panMSB = (uint8_t)(panChar >> 8); |
JioLessard | 0:7e9e4d5000cd | 22 | |
JioLessard | 0:7e9e4d5000cd | 23 | serial_connection.putc(0x7E); |
JioLessard | 0:7e9e4d5000cd | 24 | serial_connection.putc(0x00); |
JioLessard | 0:7e9e4d5000cd | 25 | serial_connection.putc(0x06); |
JioLessard | 0:7e9e4d5000cd | 26 | serial_connection.putc(0x09); |
JioLessard | 0:7e9e4d5000cd | 27 | serial_connection.putc(0x01); |
JioLessard | 0:7e9e4d5000cd | 28 | serial_connection.putc(0x49); //I |
JioLessard | 0:7e9e4d5000cd | 29 | serial_connection.putc(0x44); //D |
JioLessard | 0:7e9e4d5000cd | 30 | //serial_connection.putc(0x0A); // PAN ID, TODO |
JioLessard | 0:7e9e4d5000cd | 31 | //serial_connection.putc(0xBD); // PAN ID, TODO |
JioLessard | 0:7e9e4d5000cd | 32 | serial_connection.putc(panMSB); // PAN ID, TODO |
JioLessard | 0:7e9e4d5000cd | 33 | serial_connection.putc(panLSB); // PAN ID, TODO |
JioLessard | 0:7e9e4d5000cd | 34 | serial_connection.putc(0x00); // CheckSum |
JioLessard | 0:7e9e4d5000cd | 35 | |
JioLessard | 0:7e9e4d5000cd | 36 | serial_connection.putc(0x7E); |
JioLessard | 0:7e9e4d5000cd | 37 | serial_connection.putc(0x00); |
JioLessard | 0:7e9e4d5000cd | 38 | serial_connection.putc(0x04); |
JioLessard | 0:7e9e4d5000cd | 39 | serial_connection.putc(0x09); |
JioLessard | 0:7e9e4d5000cd | 40 | serial_connection.putc(0x01); |
JioLessard | 0:7e9e4d5000cd | 41 | serial_connection.putc(0x57); |
JioLessard | 0:7e9e4d5000cd | 42 | serial_connection.putc(0x52); |
JioLessard | 0:7e9e4d5000cd | 43 | serial_connection.putc(0x4C); |
JioLessard | 0:7e9e4d5000cd | 44 | |
JioLessard | 0:7e9e4d5000cd | 45 | serial_connection.putc(0x7E); |
JioLessard | 0:7e9e4d5000cd | 46 | serial_connection.putc(0x00); |
JioLessard | 0:7e9e4d5000cd | 47 | serial_connection.putc(0x04); |
JioLessard | 0:7e9e4d5000cd | 48 | serial_connection.putc(0x09); |
JioLessard | 0:7e9e4d5000cd | 49 | serial_connection.putc(0x01); |
JioLessard | 0:7e9e4d5000cd | 50 | serial_connection.putc(0x41); |
JioLessard | 0:7e9e4d5000cd | 51 | serial_connection.putc(0x43); |
JioLessard | 0:7e9e4d5000cd | 52 | serial_connection.putc(0x71); |
JioLessard | 0:7e9e4d5000cd | 53 | } |
JioLessard | 0:7e9e4d5000cd | 54 | |
JioLessard | 0:7e9e4d5000cd | 55 | |
JioLessard | 0:7e9e4d5000cd | 56 | //Permet la lecture du PAN et de l'Url dans un fichier local |
JioLessard | 0:7e9e4d5000cd | 57 | //Entré: aucune |
JioLessard | 0:7e9e4d5000cd | 58 | //Sortie: Sotcké dans variable globales |
JioLessard | 0:7e9e4d5000cd | 59 | void Read_FileChar() { |
JioLessard | 0:7e9e4d5000cd | 60 | printf("Debut readfile \n\r"); |
JioLessard | 0:7e9e4d5000cd | 61 | |
JioLessard | 0:7e9e4d5000cd | 62 | FILE *fp ; |
JioLessard | 0:7e9e4d5000cd | 63 | fp = fopen("/local/char2.txt", "r"); |
JioLessard | 0:7e9e4d5000cd | 64 | |
JioLessard | 0:7e9e4d5000cd | 65 | //Si file non trouvé |
JioLessard | 0:7e9e4d5000cd | 66 | if (fp == NULL) { |
JioLessard | 0:7e9e4d5000cd | 67 | printf("Can't open input file in.list!\n\r"); |
JioLessard | 0:7e9e4d5000cd | 68 | exit(1); |
JioLessard | 0:7e9e4d5000cd | 69 | } |
JioLessard | 0:7e9e4d5000cd | 70 | |
JioLessard | 0:7e9e4d5000cd | 71 | //lecture ligne par ligne |
JioLessard | 0:7e9e4d5000cd | 72 | fscanf(fp, "%X", &panChar); |
JioLessard | 0:7e9e4d5000cd | 73 | fscanf(fp, "%s", &url); |
JioLessard | 0:7e9e4d5000cd | 74 | /* |
JioLessard | 0:7e9e4d5000cd | 75 | printf("%X \n\r" , panChar); |
JioLessard | 0:7e9e4d5000cd | 76 | printf("%s \n\r" , &url);*/ |
JioLessard | 0:7e9e4d5000cd | 77 | |
JioLessard | 0:7e9e4d5000cd | 78 | //Fermeture fichier |
JioLessard | 0:7e9e4d5000cd | 79 | fclose (fp); |
JioLessard | 0:7e9e4d5000cd | 80 | fp = NULL; |
JioLessard | 0:7e9e4d5000cd | 81 | printf("Fin readfile\n\r"); |
JioLessard | 0:7e9e4d5000cd | 82 | } |
JioLessard | 0:7e9e4d5000cd | 83 | |
JioLessard | 0:7e9e4d5000cd | 84 | int main() { |
JioLessard | 0:7e9e4d5000cd | 85 | char message[1000]; |
JioLessard | 0:7e9e4d5000cd | 86 | Read_FileChar(); |
JioLessard | 0:7e9e4d5000cd | 87 | |
JioLessard | 0:7e9e4d5000cd | 88 | int cpt_frame = 0; |
JioLessard | 0:7e9e4d5000cd | 89 | int length_msb = 0; |
JioLessard | 0:7e9e4d5000cd | 90 | int length_lsb = 0; |
JioLessard | 0:7e9e4d5000cd | 91 | |
JioLessard | 0:7e9e4d5000cd | 92 | reset = 0; |
JioLessard | 0:7e9e4d5000cd | 93 | led1 = 0; |
JioLessard | 0:7e9e4d5000cd | 94 | wait_ms(1); |
JioLessard | 0:7e9e4d5000cd | 95 | reset = 1; |
JioLessard | 0:7e9e4d5000cd | 96 | wait_ms(1); |
JioLessard | 0:7e9e4d5000cd | 97 | |
JioLessard | 0:7e9e4d5000cd | 98 | set_PAN(); |
JioLessard | 0:7e9e4d5000cd | 99 | |
JioLessard | 0:7e9e4d5000cd | 100 | // Début programme |
JioLessard | 0:7e9e4d5000cd | 101 | printf("\r\n Websocket Example v1.0.0\r\n"); |
JioLessard | 0:7e9e4d5000cd | 102 | |
JioLessard | 0:7e9e4d5000cd | 103 | //Lecture du fichier de configuration |
JioLessard | 0:7e9e4d5000cd | 104 | |
JioLessard | 0:7e9e4d5000cd | 105 | char *realurl; |
JioLessard | 0:7e9e4d5000cd | 106 | asprintf(&realurl, "%s%s%s", "ws://", &url, "/"); |
JioLessard | 0:7e9e4d5000cd | 107 | printf("Real url for socket: %s\n\r", realurl); |
JioLessard | 0:7e9e4d5000cd | 108 | |
JioLessard | 0:7e9e4d5000cd | 109 | //network interface création |
JioLessard | 0:7e9e4d5000cd | 110 | EthernetInterface eth; |
JioLessard | 0:7e9e4d5000cd | 111 | eth.connect(); |
JioLessard | 0:7e9e4d5000cd | 112 | printf("IP Address is %s\n\r", eth.get_ip_address()); |
JioLessard | 0:7e9e4d5000cd | 113 | |
JioLessard | 0:7e9e4d5000cd | 114 | // Websocket création |
JioLessard | 0:7e9e4d5000cd | 115 | //Websocket ws("ws://example.com:8080/", ð); |
JioLessard | 0:7e9e4d5000cd | 116 | //Websocket ws("ws://192.168.137.1:8000/", ð); |
JioLessard | 0:7e9e4d5000cd | 117 | Websocket ws(realurl, ð); |
JioLessard | 0:7e9e4d5000cd | 118 | int connect_error = ws.connect(); |
JioLessard | 0:7e9e4d5000cd | 119 | |
JioLessard | 0:7e9e4d5000cd | 120 | //Bouce principale |
JioLessard | 0:7e9e4d5000cd | 121 | while (true){ |
JioLessard | 0:7e9e4d5000cd | 122 | if (serial_connection.readable()){ |
JioLessard | 0:7e9e4d5000cd | 123 | char hex_value = serial_connection.getc(); |
JioLessard | 0:7e9e4d5000cd | 124 | //printf("%X\n\r", hex_value); |
JioLessard | 0:7e9e4d5000cd | 125 | if (hex_value == 0x7E){ // Détecte une nouvelle trame |
JioLessard | 0:7e9e4d5000cd | 126 | cpt_frame = 0; |
JioLessard | 0:7e9e4d5000cd | 127 | } |
JioLessard | 0:7e9e4d5000cd | 128 | else if(cpt_frame == 1){ // Lecture du length MSB |
JioLessard | 0:7e9e4d5000cd | 129 | length_msb = hex_value; |
JioLessard | 0:7e9e4d5000cd | 130 | } |
JioLessard | 0:7e9e4d5000cd | 131 | else if(cpt_frame == 2){ // Lecture du length LSB |
JioLessard | 0:7e9e4d5000cd | 132 | length_lsb = hex_value; |
JioLessard | 0:7e9e4d5000cd | 133 | if (length_lsb == 0x0E){ |
JioLessard | 0:7e9e4d5000cd | 134 | printf("\n\r Pressed"); |
JioLessard | 0:7e9e4d5000cd | 135 | } |
JioLessard | 0:7e9e4d5000cd | 136 | } |
JioLessard | 0:7e9e4d5000cd | 137 | else if (cpt_frame >= 0x0F && cpt_frame < (length_lsb + 0x03)){ //Permet d'aller chercher le data dynamiquement selon la longueur de la trame |
JioLessard | 0:7e9e4d5000cd | 138 | //printf("%X\n\r", hex_value); |
JioLessard | 0:7e9e4d5000cd | 139 | } |
JioLessard | 0:7e9e4d5000cd | 140 | cpt_frame++; |
JioLessard | 0:7e9e4d5000cd | 141 | } |
JioLessard | 0:7e9e4d5000cd | 142 | /* |
JioLessard | 0:7e9e4d5000cd | 143 | int error_c = ws.send("Hello World\r\n"); |
JioLessard | 0:7e9e4d5000cd | 144 | |
JioLessard | 0:7e9e4d5000cd | 145 | if(error_c == 1) |
JioLessard | 0:7e9e4d5000cd | 146 | printf("Error send message"); |
JioLessard | 0:7e9e4d5000cd | 147 | else{ |
JioLessard | 0:7e9e4d5000cd | 148 | printf("Message send\r\n"); |
JioLessard | 0:7e9e4d5000cd | 149 | wait_ms(100); |
JioLessard | 0:7e9e4d5000cd | 150 | ws.read(message); |
JioLessard | 0:7e9e4d5000cd | 151 | printf("The message read is: %s \r\n", message); |
JioLessard | 0:7e9e4d5000cd | 152 | }*/ |
JioLessard | 0:7e9e4d5000cd | 153 | } |
JioLessard | 0:7e9e4d5000cd | 154 | } |