Using Ethernet Interface to send temperature/humidity info to client
Dependencies: EthernetInterface SDFileSystem SHTx mbed-rtos mbed
main.cpp@0:e26dfd507000, 2013-10-17 (annotated)
- Committer:
- airaylee
- Date:
- Thu Oct 17 23:59:17 2013 +0000
- Revision:
- 0:e26dfd507000
- Child:
- 1:788d545c9cd1
Original Version;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
airaylee | 0:e26dfd507000 | 1 | |
airaylee | 0:e26dfd507000 | 2 | #include "mbed.h" |
airaylee | 0:e26dfd507000 | 3 | #include "SHTx/sht15.hpp" |
airaylee | 0:e26dfd507000 | 4 | #include "SDFileSystem.h" |
airaylee | 0:e26dfd507000 | 5 | #include "EthernetInterface.h" |
airaylee | 0:e26dfd507000 | 6 | |
airaylee | 0:e26dfd507000 | 7 | //SPI-mosi,miso,sclk,DigitalOut-cs, name used to access the filesystem |
airaylee | 0:e26dfd507000 | 8 | SDFileSystem sd(p5, p6, p7, p8, "sd1"); |
airaylee | 0:e26dfd507000 | 9 | |
airaylee | 0:e26dfd507000 | 10 | //Terminal Port to display the file back |
airaylee | 0:e26dfd507000 | 11 | Serial pc(USBTX, USBRX); |
airaylee | 0:e26dfd507000 | 12 | DigitalOut busy(LED1); |
airaylee | 0:e26dfd507000 | 13 | |
airaylee | 0:e26dfd507000 | 14 | // Use p28-sda--data,p27-scl--sck |
airaylee | 0:e26dfd507000 | 15 | SHTx::SHT15 sensor(p28, p27); |
airaylee | 0:e26dfd507000 | 16 | |
airaylee | 0:e26dfd507000 | 17 | EthernetInterface eth; |
airaylee | 0:e26dfd507000 | 18 | #define ECHO_SERVER_PORT 7 |
airaylee | 0:e26dfd507000 | 19 | |
airaylee | 0:e26dfd507000 | 20 | int main() { |
airaylee | 0:e26dfd507000 | 21 | |
airaylee | 0:e26dfd507000 | 22 | /*FILE *fw = fopen("/sd1/mydir/sdtest.txt", "w"); |
airaylee | 0:e26dfd507000 | 23 | if(fw == NULL) { |
airaylee | 0:e26dfd507000 | 24 | pc.printf("Could not open file for write\n"); |
airaylee | 0:e26dfd507000 | 25 | } |
airaylee | 0:e26dfd507000 | 26 | else{ |
airaylee | 0:e26dfd507000 | 27 | fprintf(fw, "Hello SD file World!LOLOLOL\n"); |
airaylee | 0:e26dfd507000 | 28 | fclose(fw); |
airaylee | 0:e26dfd507000 | 29 | } |
airaylee | 0:e26dfd507000 | 30 | //Begin reading from the SD file |
airaylee | 0:e26dfd507000 | 31 | pc.printf("Begin reading from the SD file\n"); |
airaylee | 0:e26dfd507000 | 32 | FILE *fr = fopen("/sd1/mydir/sdtest.txt", "r"); |
airaylee | 0:e26dfd507000 | 33 | if(fr== NULL) { |
airaylee | 0:e26dfd507000 | 34 | pc.printf("Could not open file for read\n"); |
airaylee | 0:e26dfd507000 | 35 | } |
airaylee | 0:e26dfd507000 | 36 | else{ |
airaylee | 0:e26dfd507000 | 37 | while(!feof(fr)){ |
airaylee | 0:e26dfd507000 | 38 | pc.putc(fgetc(fr)); |
airaylee | 0:e26dfd507000 | 39 | } |
airaylee | 0:e26dfd507000 | 40 | fclose(fr); |
airaylee | 0:e26dfd507000 | 41 | } |
airaylee | 0:e26dfd507000 | 42 | */ |
airaylee | 0:e26dfd507000 | 43 | |
airaylee | 0:e26dfd507000 | 44 | // Speed things up a bit. |
airaylee | 0:e26dfd507000 | 45 | sensor.setOTPReload(false); |
airaylee | 0:e26dfd507000 | 46 | sensor.setResolution(true); |
airaylee | 0:e26dfd507000 | 47 | |
airaylee | 0:e26dfd507000 | 48 | eth.init(); //Use DHCP |
airaylee | 0:e26dfd507000 | 49 | eth.connect(7000);//Longer timeout here |
airaylee | 0:e26dfd507000 | 50 | //print out the MAC address first |
airaylee | 0:e26dfd507000 | 51 | printf("MAC Address is %s\r\n", eth.getMACAddress()); |
airaylee | 0:e26dfd507000 | 52 | printf("IP Address is %s\r\n", eth.getIPAddress()); |
airaylee | 0:e26dfd507000 | 53 | //IP address is 130.207.234.205 |
airaylee | 0:e26dfd507000 | 54 | |
airaylee | 0:e26dfd507000 | 55 | |
airaylee | 0:e26dfd507000 | 56 | TCPSocketServer server; |
airaylee | 0:e26dfd507000 | 57 | server.bind(ECHO_SERVER_PORT); |
airaylee | 0:e26dfd507000 | 58 | server.listen(); |
airaylee | 0:e26dfd507000 | 59 | |
airaylee | 0:e26dfd507000 | 60 | while(1) { |
airaylee | 0:e26dfd507000 | 61 | printf("\nWait for new connection...\r\n"); |
airaylee | 0:e26dfd507000 | 62 | TCPSocketConnection client; |
airaylee | 0:e26dfd507000 | 63 | server.accept(client); |
airaylee | 0:e26dfd507000 | 64 | client.set_blocking(false); // Timeout after (5)s |
airaylee | 0:e26dfd507000 | 65 | |
airaylee | 0:e26dfd507000 | 66 | printf("Connection from: %s\r\n", client.get_address()); |
airaylee | 0:e26dfd507000 | 67 | |
airaylee | 0:e26dfd507000 | 68 | busy = true; |
airaylee | 0:e26dfd507000 | 69 | sensor.update(); |
airaylee | 0:e26dfd507000 | 70 | busy = false; |
airaylee | 0:e26dfd507000 | 71 | char buffer[256]={0}; |
airaylee | 0:e26dfd507000 | 72 | |
airaylee | 0:e26dfd507000 | 73 | // Temperature in celcius |
airaylee | 0:e26dfd507000 | 74 | sensor.setScale(false); |
airaylee | 0:e26dfd507000 | 75 | sprintf(buffer,"Temperature [ %3.2f C ]\r\nHumdity [ %3.2f %% ]\r\n\n", sensor.getTemperature(), sensor.getHumidity()); |
airaylee | 0:e26dfd507000 | 76 | |
airaylee | 0:e26dfd507000 | 77 | int n = sizeof(buffer); |
airaylee | 0:e26dfd507000 | 78 | client.send_all(buffer, n); |
airaylee | 0:e26dfd507000 | 79 | |
airaylee | 0:e26dfd507000 | 80 | client.close(); |
airaylee | 0:e26dfd507000 | 81 | printf(" Connection over\r\n"); |
airaylee | 0:e26dfd507000 | 82 | |
airaylee | 0:e26dfd507000 | 83 | } |
airaylee | 0:e26dfd507000 | 84 | } |