test
Dependencies: EthernetNetIf mbed
Fork of HTTPServer by
main.c@8:2b1867fdf78f, 2013-02-10 (annotated)
- Committer:
- y_notsu
- Date:
- Sun Feb 10 14:13:10 2013 +0000
- Revision:
- 8:2b1867fdf78f
- Parent:
- 7:4e8f5ce9c0f3
HTTP server test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
y_notsu | 7:4e8f5ce9c0f3 | 1 | #include "mbed.h" |
y_notsu | 7:4e8f5ce9c0f3 | 2 | #include "EthernetNetIf.h" |
y_notsu | 7:4e8f5ce9c0f3 | 3 | #include "HTTPServer.h" |
y_notsu | 8:2b1867fdf78f | 4 | |
y_notsu | 7:4e8f5ce9c0f3 | 5 | |
y_notsu | 8:2b1867fdf78f | 6 | EthernetNetIf eth( |
y_notsu | 8:2b1867fdf78f | 7 | IpAddr(192,168,1,8), //IP address |
y_notsu | 8:2b1867fdf78f | 8 | IpAddr(255,255,255,0), //Subnet mask |
y_notsu | 8:2b1867fdf78f | 9 | IpAddr(192,168,1,1), //Gateway |
y_notsu | 8:2b1867fdf78f | 10 | IpAddr(192,168,1,1) //DNS |
y_notsu | 8:2b1867fdf78f | 11 | ); |
y_notsu | 7:4e8f5ce9c0f3 | 12 | HTTPServer svr; |
y_notsu | 7:4e8f5ce9c0f3 | 13 | |
y_notsu | 7:4e8f5ce9c0f3 | 14 | DigitalOut led1(LED1); |
y_notsu | 8:2b1867fdf78f | 15 | DigitalOut led2(LED2,"led2"); |
y_notsu | 8:2b1867fdf78f | 16 | LocalFileSystem fs("webfs"); |
y_notsu | 8:2b1867fdf78f | 17 | SPI spi(p5, p6, p7); // mosi, miso, sclk |
y_notsu | 8:2b1867fdf78f | 18 | DigitalOut cs(p8); |
y_notsu | 8:2b1867fdf78f | 19 | float Intempareture,Outtempareture; |
y_notsu | 7:4e8f5ce9c0f3 | 20 | |
y_notsu | 7:4e8f5ce9c0f3 | 21 | int main() { |
y_notsu | 7:4e8f5ce9c0f3 | 22 | printf("Setting up...\n"); |
y_notsu | 7:4e8f5ce9c0f3 | 23 | EthernetErr ethErr = eth.setup(); |
y_notsu | 7:4e8f5ce9c0f3 | 24 | if(ethErr) |
y_notsu | 7:4e8f5ce9c0f3 | 25 | { |
y_notsu | 7:4e8f5ce9c0f3 | 26 | printf("Error %d in setup.\n", ethErr); |
y_notsu | 7:4e8f5ce9c0f3 | 27 | return -1; |
y_notsu | 7:4e8f5ce9c0f3 | 28 | } |
y_notsu | 7:4e8f5ce9c0f3 | 29 | printf("Setup OK\n"); |
y_notsu | 7:4e8f5ce9c0f3 | 30 | |
y_notsu | 8:2b1867fdf78f | 31 | FSHandler::mount("/webfs","/"); |
y_notsu | 8:2b1867fdf78f | 32 | svr.addHandler<RPCHandler>("/rpc"); |
y_notsu | 8:2b1867fdf78f | 33 | svr.addHandler<FSHandler>("/"); |
y_notsu | 8:2b1867fdf78f | 34 | //svr.addHandler<SimpleHandler>("/"); //Default handler |
y_notsu | 7:4e8f5ce9c0f3 | 35 | svr.bind(80); |
y_notsu | 7:4e8f5ce9c0f3 | 36 | |
y_notsu | 7:4e8f5ce9c0f3 | 37 | printf("Listening...\n"); |
y_notsu | 7:4e8f5ce9c0f3 | 38 | |
y_notsu | 7:4e8f5ce9c0f3 | 39 | Timer tm; |
y_notsu | 7:4e8f5ce9c0f3 | 40 | tm.start(); |
y_notsu | 7:4e8f5ce9c0f3 | 41 | //Listen indefinitely |
y_notsu | 8:2b1867fdf78f | 42 | |
y_notsu | 8:2b1867fdf78f | 43 | // Setup the spi for 8 bit data, high steady state clock, |
y_notsu | 8:2b1867fdf78f | 44 | // second edge capture, with a 1MHz clock rate |
y_notsu | 8:2b1867fdf78f | 45 | spi.format(16,3); |
y_notsu | 8:2b1867fdf78f | 46 | spi.frequency(1000000); |
y_notsu | 8:2b1867fdf78f | 47 | |
y_notsu | 7:4e8f5ce9c0f3 | 48 | while(true) |
y_notsu | 7:4e8f5ce9c0f3 | 49 | { |
y_notsu | 7:4e8f5ce9c0f3 | 50 | Net::poll(); |
y_notsu | 7:4e8f5ce9c0f3 | 51 | if(tm.read()>.5) |
y_notsu | 7:4e8f5ce9c0f3 | 52 | { |
y_notsu | 7:4e8f5ce9c0f3 | 53 | led1=!led1; //Show that we are alive |
y_notsu | 7:4e8f5ce9c0f3 | 54 | tm.start(); |
y_notsu | 7:4e8f5ce9c0f3 | 55 | } |
y_notsu | 8:2b1867fdf78f | 56 | // Select the device by seting chip select low |
y_notsu | 8:2b1867fdf78f | 57 | cs = 0; |
y_notsu | 8:2b1867fdf78f | 58 | |
y_notsu | 8:2b1867fdf78f | 59 | // Send 0x8f, the command to read the WHOAMI register |
y_notsu | 8:2b1867fdf78f | 60 | //spi.write(0x0000); |
y_notsu | 8:2b1867fdf78f | 61 | |
y_notsu | 8:2b1867fdf78f | 62 | // Send a dummy byte to receive the contents of the WHOAMI register |
y_notsu | 8:2b1867fdf78f | 63 | int outtemp = spi.write(0x0000); |
y_notsu | 8:2b1867fdf78f | 64 | int intemp = spi.write(0x0000); |
y_notsu | 8:2b1867fdf78f | 65 | //printf("outtemp = 0x%X\n", outtemp); |
y_notsu | 8:2b1867fdf78f | 66 | //lcd.locate(0,0); |
y_notsu | 8:2b1867fdf78f | 67 | //lcd.printf("Out:0x%X\n",outtemp); |
y_notsu | 8:2b1867fdf78f | 68 | //printf("intemp = 0x%X\n", intemp); |
y_notsu | 8:2b1867fdf78f | 69 | //lcd.locate(0,1); |
y_notsu | 8:2b1867fdf78f | 70 | //lcd.printf("In :0x%X",intemp); |
y_notsu | 8:2b1867fdf78f | 71 | // Deselect the device |
y_notsu | 8:2b1867fdf78f | 72 | cs = 1; |
y_notsu | 8:2b1867fdf78f | 73 | float disp; |
y_notsu | 8:2b1867fdf78f | 74 | if((outtemp& 0x8000) == 0){ // 0℃以上 |
y_notsu | 8:2b1867fdf78f | 75 | disp = (outtemp >> 4) * 0.0625; |
y_notsu | 8:2b1867fdf78f | 76 | } else { // 0℃未満 |
y_notsu | 8:2b1867fdf78f | 77 | disp = (((0xffff - outtemp) >> 4) + 1) * -0.0625; |
y_notsu | 8:2b1867fdf78f | 78 | } |
y_notsu | 8:2b1867fdf78f | 79 | Outtempareture=disp; |
y_notsu | 8:2b1867fdf78f | 80 | printf("Out:%4.2f[deg]\n",disp); |
y_notsu | 8:2b1867fdf78f | 81 | |
y_notsu | 8:2b1867fdf78f | 82 | if((intemp& 0x8000) == 0){ // 0℃以上 |
y_notsu | 8:2b1867fdf78f | 83 | disp = (intemp>> 4) * 0.0625; |
y_notsu | 8:2b1867fdf78f | 84 | } else { // 0℃未満 |
y_notsu | 8:2b1867fdf78f | 85 | disp = (((0xffff - intemp) >> 4) + 1) * -0.0625; |
y_notsu | 8:2b1867fdf78f | 86 | } |
y_notsu | 8:2b1867fdf78f | 87 | Intempareture=disp; |
y_notsu | 8:2b1867fdf78f | 88 | printf("In:%4.2f[deg]\n",disp); |
y_notsu | 8:2b1867fdf78f | 89 | //HTML File output |
y_notsu | 8:2b1867fdf78f | 90 | FILE *fp=fopen("/webfs/my.htm","w"); |
y_notsu | 8:2b1867fdf78f | 91 | fprintf(fp,"<html>\r\n"); |
y_notsu | 8:2b1867fdf78f | 92 | fprintf(fp, "<head>\r\n"); |
y_notsu | 8:2b1867fdf78f | 93 | fprintf(fp, "<title>\r\n"); |
y_notsu | 8:2b1867fdf78f | 94 | fprintf(fp, "LED2 ON/OF\r\n"); |
y_notsu | 8:2b1867fdf78f | 95 | fprintf(fp, "</title>\r\n"); |
y_notsu | 8:2b1867fdf78f | 96 | fprintf(fp, "</head>\r\n"); |
y_notsu | 8:2b1867fdf78f | 97 | fprintf(fp, "<body>\r\n"); |
y_notsu | 8:2b1867fdf78f | 98 | /* |
y_notsu | 8:2b1867fdf78f | 99 | fprintf(fp, "<script language=\"javascript\">\n"); |
y_notsu | 8:2b1867fdf78f | 100 | fprintf(fp, "var Button=0; \n"); |
y_notsu | 8:2b1867fdf78f | 101 | fprintf(fp, "function button_push(flug){\n"); |
y_notsu | 8:2b1867fdf78f | 102 | fprintf(fp, "if(Button==0){ Button=1;document.Form.FormButton.value=\"Off\";}\n"); |
y_notsu | 8:2b1867fdf78f | 103 | fprintf(fp, "else{ Button=0; document.Form.FormButton.value=\"On\"; } \n"); |
y_notsu | 8:2b1867fdf78f | 104 | fprintf(fp, "var req=new XMLHttpRequest()\n"); |
y_notsu | 8:2b1867fdf78f | 105 | fprintf(fp, "req.open(\"GET\", \"http://\"+location.host+\"/rpc/led2/write+\"+Button. true); \n"); |
y_notsu | 8:2b1867fdf78f | 106 | fprintf(fp, "req.send(\"\"); \n"); |
y_notsu | 8:2b1867fdf78f | 107 | fprintf(fp, "function tick(){ \n"); |
y_notsu | 8:2b1867fdf78f | 108 | fprintf(fp, "var value=%f;\n",Outtempareture); |
y_notsu | 8:2b1867fdf78f | 109 | fprintf(fp, "document.Form.textbox.value=value;\n"); |
y_notsu | 8:2b1867fdf78f | 110 | fprintf(fp, "var value2=%f;\n",Intempareture); |
y_notsu | 8:2b1867fdf78f | 111 | fprintf(fp, "document.Form.textbox2.value=value2;\n"); |
y_notsu | 8:2b1867fdf78f | 112 | fprintf(fp, "}\n"); |
y_notsu | 8:2b1867fdf78f | 113 | fprintf(fp, "setInterval(\"tick()\",1000);\n"); |
y_notsu | 8:2b1867fdf78f | 114 | fprintf(fp, "</script>\n"); |
y_notsu | 8:2b1867fdf78f | 115 | */ |
y_notsu | 8:2b1867fdf78f | 116 | |
y_notsu | 8:2b1867fdf78f | 117 | //fprintf(fp, "<form name=\"Form\" action=\"#\"> \n"); |
y_notsu | 8:2b1867fdf78f | 118 | fprintf(fp, "<font size=5>\n"); |
y_notsu | 8:2b1867fdf78f | 119 | fprintf(fp, "My room Tempareture\n"); |
y_notsu | 8:2b1867fdf78f | 120 | //fprintf(fp, "<input type=\"button\" value=\"On\" name=\"FormButton\" onclick=\"button_push(0)\">\n"); |
y_notsu | 8:2b1867fdf78f | 121 | fprintf(fp, "<br>\n"); |
y_notsu | 8:2b1867fdf78f | 122 | fprintf(fp, "Out temp:\n"); |
y_notsu | 8:2b1867fdf78f | 123 | fprintf(fp, "<font size=8><b>\n"); |
y_notsu | 8:2b1867fdf78f | 124 | fprintf(fp, "%5.2f\n",Outtempareture); |
y_notsu | 8:2b1867fdf78f | 125 | fprintf(fp, "</b></font>\n"); |
y_notsu | 8:2b1867fdf78f | 126 | fprintf(fp, "<br>\n"); |
y_notsu | 8:2b1867fdf78f | 127 | fprintf(fp, "In temp:\n"); |
y_notsu | 8:2b1867fdf78f | 128 | fprintf(fp, "<font size=8><b>\n"); |
y_notsu | 8:2b1867fdf78f | 129 | fprintf(fp, "%5.2f\n",Intempareture); |
y_notsu | 8:2b1867fdf78f | 130 | fprintf(fp, "</b></font>\n"); |
y_notsu | 8:2b1867fdf78f | 131 | fprintf(fp, "<br>\n"); |
y_notsu | 8:2b1867fdf78f | 132 | fprintf(fp, "<hr>\n"); |
y_notsu | 8:2b1867fdf78f | 133 | fprintf(fp, "</font>\n"); |
y_notsu | 8:2b1867fdf78f | 134 | fprintf(fp, " Twitter: <a href=\"https://twitter.com/ynotsu\">@ynotsu</a>"); |
y_notsu | 8:2b1867fdf78f | 135 | fprintf(fp, "</body>\n"); |
y_notsu | 8:2b1867fdf78f | 136 | fprintf(fp, "</html>\n"); |
y_notsu | 8:2b1867fdf78f | 137 | fclose(fp); |
y_notsu | 8:2b1867fdf78f | 138 | |
y_notsu | 8:2b1867fdf78f | 139 | //wait(10); |
y_notsu | 8:2b1867fdf78f | 140 | |
y_notsu | 7:4e8f5ce9c0f3 | 141 | } |
y_notsu | 7:4e8f5ce9c0f3 | 142 | |
y_notsu | 7:4e8f5ce9c0f3 | 143 | return 0; |
y_notsu | 7:4e8f5ce9c0f3 | 144 | } |