bus
Dependencies: Servo WIZnetInterface mbed-src
Fork of My_Weatherforecast_WIZwiki-W7500 by
Diff: main.cpp
- Revision:
- 19:420c2480c2a6
- Parent:
- 18:a02a73acd3c8
--- a/main.cpp Mon Jun 29 07:41:31 2015 +0000
+++ b/main.cpp Mon Oct 05 06:20:55 2015 +0000
@@ -2,131 +2,412 @@
#include "EthernetInterface.h"
#include "Servo.h"
-DigitalOut bled(D6);
-DigitalOut gled(D5);
-DigitalOut rled(D4);
+//internal led
+DigitalOut rled(LED1,1);
+DigitalOut gled(LED2,1);
+DigitalOut bled(LED3,1);
-Servo myservo(D15);
+//gpio
+DigitalOut wealed(D2);
+DigitalOut busled_00(D15);
+DigitalOut busled_01(D14);
+DigitalOut busled_02(D13);
+DigitalOut busled_03(D12);
+DigitalOut busled_10(D11);
+DigitalOut busled_11(D10);
+DigitalOut busled_12(D9);
+DigitalOut busled_13(D8);
+DigitalOut busled_20(D7);
+DigitalOut busled_21(D6);
+DigitalOut busled_22(D5);
+DigitalOut busled_23(D4);
-int main() {
-
+int main()
+{
int phy_link;
printf("Wait a second...\r\n");
- uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
+ uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x09};
EthernetInterface eth;
eth.init(mac_addr); //Use DHCP
- while(1){
-
eth.connect();
- /* phy link */
+ //phy link
do{
phy_link = eth.ethernet_link();
printf("...");
wait(2);
}while(!phy_link);
- printf("\r\n");
+ printf("PHY_LINK_OK\n");
+ printf("IP Address is %s\r\n", eth.getIPAddress());
- printf("IP Address is %s\r\n", eth.getIPAddress());
+ //get info
+ char buffer_wea[1000];
+ char buffer_0[1000];
+ char buffer_1[1000];
+ char buffer_2[1000];
+ int ret_wea;
+ int ret_0;
+ int ret_1;
+ int ret_2;
- /* TCP socket connect */
- TCPSocketConnection sock;
- sock.connect("api.openweathermap.org", 80);
+ //weather
+ char http_cmd_wea[] = "GET /data/2.5/weather?q=Seongnam,kr HTTP/1.0\n\n";
+
+
+ //BUS
+ //char http_cmd[] = "GET /ws/rest/busarrivalservice/station?serviceKey=test&stationId=206000606 \n\n";
+ char http_cmd_0[] = "GET /ws/rest/busarrivalservice?serviceKey=test&routeId=204000039&stationId=206000606 \n\n"; //330
+ char http_cmd_1[] = "GET /ws/rest/busarrivalservice?serviceKey=test&routeId=204000044&stationId=206000606 \n\n"; //350
+ char http_cmd_2[] = "GET /ws/rest/busarrivalservice?serviceKey=test&routeId=204000079&stationId=206000606 \n\n"; //380
- /* weather */
- char http_cmd[] = "GET /data/2.5/weather?q=Seoul,kr HTTP/1.0\n\n";
- //char http_cmd[] = "GET /data/2.5/weather?q=London,uk HTTP/1.0\n\n";
- //char http_cmd[] = "GET /data/2.5/weather?q=Berlin,de HTTP/1.0\n\n";
- sock.send_all(http_cmd, sizeof(http_cmd)-1);
+
+ while(1)
+ {
+ //TCP socket[weather] connect
+ TCPSocketConnection sock_wea;
+ sock_wea.connect("api.openweathermap.org", 80);
+ printf("Socket[weather] connected\n");
+
+ sock_wea.send_all(http_cmd_wea, sizeof(http_cmd_wea)-1);
+
+ while (true)
+ {
+ ret_wea = sock_wea.receive(buffer_wea, sizeof(buffer_wea)-1);
+ if (ret_wea <= 0)
+ printf("fail\n");
+ break;
+
+ buffer_wea[ret_wea] = '\0';
+ }
+
+ //TCP socket0 connect
+ TCPSocketConnection sock_0;
+ sock_0.connect("openapi.gbis.go.kr", 80);
+ printf("Socket0 connected\n");
- /* get info */
- char buffer[420];
- int ret;
- while (true) {
- ret = sock.receive(buffer, sizeof(buffer)-1);
- if (ret <= 0)
- break;
- buffer[ret] = '\0';
- printf("Received %d chars from server: %s\n", ret, buffer);
+ sock_0.send_all(http_cmd_0, sizeof(http_cmd_0)-1);
+
+ while (true)
+ {
+ ret_0 = sock_0.receive(buffer_0, sizeof(buffer_0)-1);
+ if (ret_0 <= 0)
+ printf("fail\n");
+ break;
+
+ buffer_0[ret_0] = '\0';
}
- /* get weather, city, tempurature */
+
+ //TCP socket1 connect
+ TCPSocketConnection sock_1;
+ sock_1.connect("openapi.gbis.go.kr", 80);
+ printf("Socket1 connected\n");
+
+ sock_1.send_all(http_cmd_1, sizeof(http_cmd_1)-1);
+ while (true)
+ {
+ ret_1 = sock_1.receive(buffer_1, sizeof(buffer_1)-1);
+ if (ret_1 <= 0)
+ printf("fail\n");
+ break;
+
+ buffer_1[ret_1] = '\0';
+ }
+
+
+ //TCP socket2 connect
+ TCPSocketConnection sock_2;
+ sock_2.connect("openapi.gbis.go.kr", 80);
+ printf("Socket2 connected\n");
+
+ sock_2.send_all(http_cmd_2, sizeof(http_cmd_2)-1);
+
+ while (true)
+ {
+ ret_2 = sock_2.receive(buffer_2, sizeof(buffer_2)-1);
+ if (ret_2 <= 0)
+ printf("fail\n");
+ break;
+
+ buffer_2[ret_0] = '\0';
+ }
+
+
+ //print
+ //printf("\nWeather\n\n Received %d chars from server=> \n%s\n\n", ret_wea, buffer_wea);
+ //wait(2);
+ //printf("\n330\n\n Received %d chars from server=> \n%s\n\n", ret_0, buffer_0);
+ //wait(2);
+ //printf("\n350\n\n Received %d chars from server=> \n%s\n\n", ret_1, buffer_1);
+ //wait(2);
+ //printf("\n380\n\n Received %d chars from server=> \n%s\n\n", ret_2, buffer_2);
+ //wait(2);
+
+
+ //get weather, city, tempurature
char *weather;
char *city;
char *tempure;
-
+
char weather_stu[3];
- char city_name[6];
char tempure_data[6];
+
+ int weather_id;
+ int weather_id_[3];
+
+ int tempure_d;
+ int tempure_[3];
+
+ weather = strstr(buffer_wea, "id");
+ printf("\nWeather ID=> %.3s\n", weather+4);
+ for(int i=0; i<3; i++)
+ {
+ weather_stu[i] = (weather[i+4]);
+ weather_id_[i] = weather_stu[i]-'0';
+ //printf("%c", weather_stu[i]);
+ }
+ weather_id = weather_id_[0]*100+weather_id_[1]*10*weather_id_[2];
+ //printf("%d\n", weather_id);
+
+ city = strstr(buffer_wea, "name");
+ printf("City Name=> %.8s\n", city + 7);
+
+ tempure = strstr(buffer_wea, "temp");
+ printf("Tempurature=> %.3sK\n", tempure + 6);
+ for(int i=0; i<3; i++)
+ {
+ tempure_data[i] = (tempure[i+6]);
+ tempure_[i] = tempure_data[i]-'0';
+ //printf("%c", tempure_data[i]);
+ }
+ tempure_d = tempure_[0]*100+tempure_[1]*10+tempure_[2];
+
+ printf("Tempurature=> %dC\n\n", (tempure_d - 273));
+
+
+ //weather display
+ if((weather_id>=200)&&(weather_id<300))
+ {
+ printf("<<< Thunderstom >>>\n");
+ printf("<<< You need an umbrella >>>\n");
+ //rled = 1;gled = 0;bled = 0;
+ wealed = 1;
+ }
+ else if((weather_id>=300)&&(weather_id<400))
+ {
+ printf("<<< Drizzle >>>\n");
+ printf("<<< You need an umbrella >>>\n");
+ //rled = 1;gled = 0;bled = 0;
+ wealed = 1;
+ }
+ else if((weather_id>=500)&&(weather_id<600))
+ {
+ printf("<<< Rain >>>\n");
+ printf("<<< You need an umbrella >>>\n");
+ //rled = 1;gled = 0;bled = 0;
+ wealed = 1;
+ }
+ else if((weather_id>=600)&&(weather_id<700))
+ {
+ printf("<<< Snow >>>\n");
+ printf("<<< You need an umbrella >>>\n");
+ //rled = 1;gled = 0;bled = 0;
+ wealed = 1;
+ }
+ else
+ {
+ printf("<<< You don't need an umbrella >>>\n");
+ //rled = 0;gled = 1;bled = 0;
+ wealed = 0;
+ }
+
+
+ //get location
+ char *location_0;
+ char *location_1;
+ char *location_2;
- weather = strstr(buffer, "main");
- printf("%.4s\n", weather + 7);
- for(int i=0; i<3;i++){
- weather_stu[i] = weather[i+7];
- printf("%c",weather_stu[i]);
- }
-
- city = strstr(buffer, "name");
- printf("%.6s\n", city + 7);
- for(int k=0; k<6;k++){
- city_name[k] = city[k+7];
- printf("%c",city_name[k]);
- }
-
- tempure = strstr(buffer, "temp");
- printf("%.3s\n", tempure + 6);
- for(int j=0; j<6;j++){
- tempure_data[j] = tempure[j+6];
- printf("%c",tempure_data[j]);
- }
-
- /*tempurature display */
- float data[2]={0};
- data[0] = tempure_data[1]-'7';
- data[1] = tempure_data[2]-'3';
-
- myservo = (data[0]*10+data[1])/40;
+ char loca_0[2];
+ char loca_1[2];
+ char loca_2[2];
+
+ int INT_location_0[2];
+ int INT_location_1[2];
+ int INT_location_2[2];
+
+ int S_location_0;
+ int S_location_1;
+ int S_location_2;
+
+ printf("\n<<< locationNo1 >>>\n");
+
+ location_0 = strstr(buffer_0, "<locationNo1>");
+ printf("330 => %.2s\n", location_0+13);
+
+ location_1 = strstr(buffer_1, "<locationNo1>");
+ printf("350 => %.2s\n", location_1+13);
+
+ location_2 = strstr(buffer_2, "<locationNo1>");
+ printf("380 => %.2s\n", location_1+13);
+
- printf("%f",(data[0]*10+data[1])/40);
-
- /* weather display */
- if(strcmp(weather_stu,"Clo")==0) {
- rled = 1;
- gled = 1;
- bled = 1;
- }else if(strcmp(weather_stu,"Rai")==0) {
- rled = 0;
- gled = 0;
- bled = 1;
- }else if(strcmp(weather_stu,"Cle")==0){
- rled = 1;
- gled = 1;
- bled = 0;
- }else if(strcmp(weather_stu,"Mis")==0){
- rled = 1;
- gled = 0;
- bled = 1;
- }else if(strcmp(weather_stu,"Haz")==0) {
- rled = 1;
- gled = 1;
- bled = 1;
- }else if(strcmp(weather_stu,"Fog")==0){
- rled = 1;
- gled = 0;
- bled = 1;
- }else {
- rled = 0;
- gled = 0;
- bled = 0;
+ //330 display
+ for(int i=0; i<2; i++)
+ {
+ loca_0[i] = (location_0[i+13]);
+ INT_location_0[i] = loca_0[i]-'0';
+ }
+
+ printf("\n<<< Remaining station >>>\n");
+
+ if(INT_location_0[1]==12)
+ {
+ printf("330 => %d\n",INT_location_0[0]);
+ S_location_0 = INT_location_0[0];
+ }
+ else
+ {
+ printf("330 => %d\n",INT_location_0[0]*10+INT_location_0[1]);
+ S_location_0 = INT_location_0[0]*10+INT_location_0[1];
+ }
+
+ //330 position sign
+ //if(S_location_0>=5)
+ //{
+ // rled=0;bled=1;gled=1;
+ //}
+ //else if (S_location_0==4)
+ //{
+ // rled=1;bled=0;gled=0;
+ //}
+ //else if (S_location_0==3)
+ if (S_location_0>=4)
+ {
+ //rled=1;bled=1;gled=0;
+ busled_00=0;busled_01=0;busled_02=0;busled_03=1;
+ }
+ else if (S_location_0==3)
+ {
+ //rled=1;bled=0;gled=1;
+ busled_00=0;busled_01=0;busled_02=1;busled_03=0;
+ }
+ else if (S_location_0==2)
+ {
+ //rled=0;bled=0;gled=0;
+ busled_00=0;busled_01=1;busled_02=0;busled_03=0;
+ }
+ else if (S_location_0==1)
+ {
+ //rled=1;bled=1;gled=1;
+ busled_00=1;busled_01=0;busled_02=0;busled_03=0;
+ }
+ else
+ {
+ busled_00=0;busled_01=0;busled_02=0;busled_03=0;
+ }
+
+
+ //350 display
+ for(int i=0; i<2; i++)
+ {
+ loca_1[i] = (location_1[i+13]);
+ INT_location_1[i] = loca_1[i]-'0';
+ }
+
+ if(INT_location_1[1]==12)
+ {
+ printf("350 => %d\n",INT_location_1[0]);
+ S_location_1 = INT_location_1[0];
+ }
+ else
+ {
+ printf("350 => %d\n",INT_location_1[0]*10+INT_location_1[1]);
+ S_location_1 = INT_location_1[0]*10+INT_location_1[1];
}
-
- sock.close();
+
+ //350 position sign
+ if (S_location_1>=4)
+ {
+ //rled=1;bled=1;gled=0;
+ busled_10=0;busled_11=0;busled_12=0;busled_13=1;
+ }
+ else if (S_location_1==3)
+ {
+ //rled=1;bled=0;gled=1;
+ busled_10=0;busled_11=0;busled_12=1;busled_13=0;
+ }
+ else if (S_location_1==2)
+ {
+ //rled=0;bled=0;gled=0;
+ busled_10=0;busled_11=1;busled_12=0;busled_13=0;
+ }
+ else if (S_location_1==1)
+ {
+ //rled=1;bled=1;gled=1;
+ busled_10=1;busled_11=0;busled_12=0;busled_13=0;
+ }
+ else
+ {
+ busled_10=0;busled_11=0;busled_12=0;busled_13=0;
+ }
+
+
+ //380 display
+ for(int i=0; i<2; i++)
+ {
+ loca_2[i] = (location_2[i+13]);
+ INT_location_2[i] = loca_2[i]-'0';
+ }
- eth.disconnect();
+ if(INT_location_2[1]==12)
+ {
+ printf("380 => %d\n",INT_location_2[0]);
+ S_location_2 = INT_location_2[0];
+ }
+ else
+ {
+ printf("380 => %d\n",INT_location_2[0]*10+INT_location_2[1]);
+ S_location_2 = INT_location_2[0]*10+INT_location_2[1];
+ }
- wait(60.0);
+ //380 position sign
+ if (S_location_2>=4)
+ {
+ //rled=1;bled=1;gled=0;
+ busled_20=0;busled_21=0;busled_22=0;busled_23=1;
+ }
+ else if (S_location_2==3)
+ {
+ //rled=1;bled=0;gled=1;
+ busled_20=0;busled_21=0;busled_22=1;busled_23=0;
+ }
+ else if (S_location_2==2)
+ {
+ //rled=0;bled=0;gled=0;
+ busled_20=0;busled_21=1;busled_22=0;busled_23=0;
+ }
+ else if (S_location_2==1)
+ {
+ //rled=1;bled=1;gled=1;
+ busled_20=1;busled_21=0;busled_22=0;busled_23=0;
+ }
+ else
+ {
+ busled_20=0;busled_21=0;busled_22=0;busled_23=0;
+ }
+
+
+ sock_wea.close();
+ sock_0.close();
+ sock_1.close();
+ sock_2.close();
+
+ eth.disconnect();
+ printf("\nSocket disconnected\n\n");
+
+ wait(12);
};
}
\ No newline at end of file
