Bus alarm system with WIZwiki-W7500 for WIZnet Academy
Dependencies: Adafruit_GFX WIZnetInterface mbed
Fork of Bus_Alarm_System_Helloworld_WIZwiki-W7500 by
main.cpp@0:6b8e3f9fafbd, 2015-10-15 (annotated)
- Committer:
- joon874
- Date:
- Thu Oct 15 00:17:32 2015 +0000
- Revision:
- 0:6b8e3f9fafbd
Bus alarm system with WIZwiki-W7500 for WIZnet Academy
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| joon874 | 0:6b8e3f9fafbd | 1 | #include "mbed.h" |
| joon874 | 0:6b8e3f9fafbd | 2 | #include "EthernetInterface.h" |
| joon874 | 0:6b8e3f9fafbd | 3 | #include "Adafruit_SSD1306.h" |
| joon874 | 0:6b8e3f9fafbd | 4 | |
| joon874 | 0:6b8e3f9fafbd | 5 | class I2CPreInit : public I2C |
| joon874 | 0:6b8e3f9fafbd | 6 | { |
| joon874 | 0:6b8e3f9fafbd | 7 | public: |
| joon874 | 0:6b8e3f9fafbd | 8 | I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl) |
| joon874 | 0:6b8e3f9fafbd | 9 | { |
| joon874 | 0:6b8e3f9fafbd | 10 | frequency(100000); |
| joon874 | 0:6b8e3f9fafbd | 11 | start(); |
| joon874 | 0:6b8e3f9fafbd | 12 | }; |
| joon874 | 0:6b8e3f9fafbd | 13 | }; |
| joon874 | 0:6b8e3f9fafbd | 14 | |
| joon874 | 0:6b8e3f9fafbd | 15 | I2CPreInit gI2C(PA_10,PA_9); |
| joon874 | 0:6b8e3f9fafbd | 16 | Adafruit_SSD1306_I2c gOled(gI2C,NC,0x78,64,128); |
| joon874 | 0:6b8e3f9fafbd | 17 | |
| joon874 | 0:6b8e3f9fafbd | 18 | //internal led |
| joon874 | 0:6b8e3f9fafbd | 19 | DigitalOut red_led(LED1,1); |
| joon874 | 0:6b8e3f9fafbd | 20 | DigitalOut blue_led(LED3,1); |
| joon874 | 0:6b8e3f9fafbd | 21 | |
| joon874 | 0:6b8e3f9fafbd | 22 | int main() |
| joon874 | 0:6b8e3f9fafbd | 23 | { |
| joon874 | 0:6b8e3f9fafbd | 24 | int phy_link; |
| joon874 | 0:6b8e3f9fafbd | 25 | printf("Wait a second...\r\n"); |
| joon874 | 0:6b8e3f9fafbd | 26 | uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x09}; |
| joon874 | 0:6b8e3f9fafbd | 27 | |
| joon874 | 0:6b8e3f9fafbd | 28 | EthernetInterface eth; |
| joon874 | 0:6b8e3f9fafbd | 29 | eth.init(mac_addr); //Use DHCP |
| joon874 | 0:6b8e3f9fafbd | 30 | |
| joon874 | 0:6b8e3f9fafbd | 31 | eth.connect(); |
| joon874 | 0:6b8e3f9fafbd | 32 | |
| joon874 | 0:6b8e3f9fafbd | 33 | //phy link |
| joon874 | 0:6b8e3f9fafbd | 34 | do{ |
| joon874 | 0:6b8e3f9fafbd | 35 | phy_link = eth.ethernet_link(); |
| joon874 | 0:6b8e3f9fafbd | 36 | printf("..."); |
| joon874 | 0:6b8e3f9fafbd | 37 | wait(2); |
| joon874 | 0:6b8e3f9fafbd | 38 | }while(!phy_link); |
| joon874 | 0:6b8e3f9fafbd | 39 | printf("IP Address is %s\r\n\r\n", eth.getIPAddress()); |
| joon874 | 0:6b8e3f9fafbd | 40 | |
| joon874 | 0:6b8e3f9fafbd | 41 | char buffer[1024]; |
| joon874 | 0:6b8e3f9fafbd | 42 | int ret; |
| joon874 | 0:6b8e3f9fafbd | 43 | |
| joon874 | 0:6b8e3f9fafbd | 44 | //BUS "GET /ws/rest/busarrivalservice?serviceKey=??&routeId=??&stationId=?? \n\n" |
| joon874 | 0:6b8e3f9fafbd | 45 | char http_cmd[] = "GET /ws/rest/busarrivalservice?serviceKey=1234567890&routeId=234000878&stationId=206000082 \n\n"; // 8100 |
| joon874 | 0:6b8e3f9fafbd | 46 | |
| joon874 | 0:6b8e3f9fafbd | 47 | while(1) |
| joon874 | 0:6b8e3f9fafbd | 48 | { |
| joon874 | 0:6b8e3f9fafbd | 49 | //TCP socket connect |
| joon874 | 0:6b8e3f9fafbd | 50 | TCPSocketConnection sock; |
| joon874 | 0:6b8e3f9fafbd | 51 | sock.connect("openapi.gbis.go.kr", 80); |
| joon874 | 0:6b8e3f9fafbd | 52 | |
| joon874 | 0:6b8e3f9fafbd | 53 | sock.send_all(http_cmd, sizeof(http_cmd)-1); |
| joon874 | 0:6b8e3f9fafbd | 54 | |
| joon874 | 0:6b8e3f9fafbd | 55 | while (true) |
| joon874 | 0:6b8e3f9fafbd | 56 | { |
| joon874 | 0:6b8e3f9fafbd | 57 | ret = sock.receive(buffer, sizeof(buffer)-1); |
| joon874 | 0:6b8e3f9fafbd | 58 | |
| joon874 | 0:6b8e3f9fafbd | 59 | if (ret <= 0) |
| joon874 | 0:6b8e3f9fafbd | 60 | printf("fail\r\n"); |
| joon874 | 0:6b8e3f9fafbd | 61 | //break; |
| joon874 | 0:6b8e3f9fafbd | 62 | else{ |
| joon874 | 0:6b8e3f9fafbd | 63 | buffer[ret] = '\0'; |
| joon874 | 0:6b8e3f9fafbd | 64 | printf("Received %d chars from server: %s\r\n", ret, buffer); |
| joon874 | 0:6b8e3f9fafbd | 65 | break; |
| joon874 | 0:6b8e3f9fafbd | 66 | } |
| joon874 | 0:6b8e3f9fafbd | 67 | } |
| joon874 | 0:6b8e3f9fafbd | 68 | printf("\r\n\r\n"); |
| joon874 | 0:6b8e3f9fafbd | 69 | |
| joon874 | 0:6b8e3f9fafbd | 70 | |
| joon874 | 0:6b8e3f9fafbd | 71 | // parsing data |
| joon874 | 0:6b8e3f9fafbd | 72 | char *date; |
| joon874 | 0:6b8e3f9fafbd | 73 | char *bus_1st; |
| joon874 | 0:6b8e3f9fafbd | 74 | char *bus_2nd; |
| joon874 | 0:6b8e3f9fafbd | 75 | |
| joon874 | 0:6b8e3f9fafbd | 76 | char current_date[11] = {0}; |
| joon874 | 0:6b8e3f9fafbd | 77 | char arrive_bus1[2] = {0}; |
| joon874 | 0:6b8e3f9fafbd | 78 | char arrive_bus2[2] = {0}; |
| joon874 | 0:6b8e3f9fafbd | 79 | |
| joon874 | 0:6b8e3f9fafbd | 80 | date = strstr(buffer, "<queryTime>"); |
| joon874 | 0:6b8e3f9fafbd | 81 | for(int i=0;i<10;i++){ |
| joon874 | 0:6b8e3f9fafbd | 82 | current_date[i] = date[i+11]; |
| joon874 | 0:6b8e3f9fafbd | 83 | } |
| joon874 | 0:6b8e3f9fafbd | 84 | |
| joon874 | 0:6b8e3f9fafbd | 85 | bus_1st = strstr(buffer, "<predictTime1>"); |
| joon874 | 0:6b8e3f9fafbd | 86 | for(int i=0; i<2;i++){ |
| joon874 | 0:6b8e3f9fafbd | 87 | arrive_bus1[i] = bus_1st[i+14]; |
| joon874 | 0:6b8e3f9fafbd | 88 | if(arrive_bus1[i] == '<'){ |
| joon874 | 0:6b8e3f9fafbd | 89 | arrive_bus1[i] = 0; |
| joon874 | 0:6b8e3f9fafbd | 90 | break; |
| joon874 | 0:6b8e3f9fafbd | 91 | } |
| joon874 | 0:6b8e3f9fafbd | 92 | } |
| joon874 | 0:6b8e3f9fafbd | 93 | |
| joon874 | 0:6b8e3f9fafbd | 94 | bus_2nd = strstr(buffer, "<predictTime2>"); |
| joon874 | 0:6b8e3f9fafbd | 95 | for(int i=0; i<2;i++){ |
| joon874 | 0:6b8e3f9fafbd | 96 | arrive_bus2[i] = bus_2nd[i+14]; |
| joon874 | 0:6b8e3f9fafbd | 97 | if(arrive_bus2[i] == '<'){ |
| joon874 | 0:6b8e3f9fafbd | 98 | arrive_bus2[i] = 0; |
| joon874 | 0:6b8e3f9fafbd | 99 | break; |
| joon874 | 0:6b8e3f9fafbd | 100 | } |
| joon874 | 0:6b8e3f9fafbd | 101 | } |
| joon874 | 0:6b8e3f9fafbd | 102 | |
| joon874 | 0:6b8e3f9fafbd | 103 | printf("current date : %s\r\n", current_date); |
| joon874 | 0:6b8e3f9fafbd | 104 | printf("arrival bus1 : %s\r\n", arrive_bus1); |
| joon874 | 0:6b8e3f9fafbd | 105 | printf("arrival bus2 : %s\r\n", arrive_bus2); |
| joon874 | 0:6b8e3f9fafbd | 106 | |
| joon874 | 0:6b8e3f9fafbd | 107 | |
| joon874 | 0:6b8e3f9fafbd | 108 | // OLED Display |
| joon874 | 0:6b8e3f9fafbd | 109 | gOled.begin(); |
| joon874 | 0:6b8e3f9fafbd | 110 | gOled.clearDisplay(); |
| joon874 | 0:6b8e3f9fafbd | 111 | |
| joon874 | 0:6b8e3f9fafbd | 112 | gOled.printf("%s\n\n", current_date); |
| joon874 | 0:6b8e3f9fafbd | 113 | gOled.printf("No.8100\n\n"); |
| joon874 | 0:6b8e3f9fafbd | 114 | gOled.printf("You have %s mins\n\n", arrive_bus1); |
| joon874 | 0:6b8e3f9fafbd | 115 | gOled.printf("Next Bus %s mins\n", arrive_bus2); |
| joon874 | 0:6b8e3f9fafbd | 116 | gOled.display(); |
| joon874 | 0:6b8e3f9fafbd | 117 | gOled.setTextCursor(0,0); |
| joon874 | 0:6b8e3f9fafbd | 118 | |
| joon874 | 0:6b8e3f9fafbd | 119 | wait(12); |
| joon874 | 0:6b8e3f9fafbd | 120 | }; |
| joon874 | 0:6b8e3f9fafbd | 121 | |
| joon874 | 0:6b8e3f9fafbd | 122 | } |
IOP
