Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of eth_v13 by
main.cpp@2:8f5bacfef390, 2014-03-18 (annotated)
- Committer:
- hggerdd
- Date:
- Tue Mar 18 22:51:18 2014 +0000
- Revision:
- 2:8f5bacfef390
- Parent:
- 1:f45d6c8ec0a9
- Child:
- 3:79dc3337d9da
tcp geht auf einfache art und weise
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hggerdd | 0:f7caac9b804e | 1 | #include "mbed.h" |
hggerdd | 0:f7caac9b804e | 2 | #include "w5100.h" |
hggerdd | 0:f7caac9b804e | 3 | #include "ipaddr.h" |
hggerdd | 2:8f5bacfef390 | 4 | #include "TCPSocket.h" |
hggerdd | 2:8f5bacfef390 | 5 | #include "html.h" |
hggerdd | 2:8f5bacfef390 | 6 | #include "sstream" |
hggerdd | 0:f7caac9b804e | 7 | |
hggerdd | 0:f7caac9b804e | 8 | extern W5100Class W5100; |
hggerdd | 0:f7caac9b804e | 9 | Serial pc(D1, D0); |
hggerdd | 0:f7caac9b804e | 10 | Timer sendStatusTimer; |
hggerdd | 0:f7caac9b804e | 11 | Timer pollUDPTimer; |
hggerdd | 2:8f5bacfef390 | 12 | Ticker tickTCP; |
hggerdd | 2:8f5bacfef390 | 13 | |
hggerdd | 2:8f5bacfef390 | 14 | int globalCounter = 0; |
hggerdd | 0:f7caac9b804e | 15 | |
hggerdd | 1:f45d6c8ec0a9 | 16 | DigitalOut myled(LED1); |
hggerdd | 1:f45d6c8ec0a9 | 17 | |
hggerdd | 2:8f5bacfef390 | 18 | TCPSocket tcpTest(0); |
hggerdd | 2:8f5bacfef390 | 19 | |
hggerdd | 2:8f5bacfef390 | 20 | void handler(void) |
hggerdd | 0:f7caac9b804e | 21 | { |
hggerdd | 0:f7caac9b804e | 22 | char buf[1000]; |
hggerdd | 2:8f5bacfef390 | 23 | int size; |
hggerdd | 2:8f5bacfef390 | 24 | |
hggerdd | 2:8f5bacfef390 | 25 | size = tcpTest.recv(buf, sizeof(buf)); |
hggerdd | 2:8f5bacfef390 | 26 | buf[size] = 0; |
hggerdd | 2:8f5bacfef390 | 27 | //pc.printf("\n%s\n\n", buf); |
hggerdd | 0:f7caac9b804e | 28 | |
hggerdd | 2:8f5bacfef390 | 29 | tcpTest.send(html_head, sizeof(html_head)); |
hggerdd | 2:8f5bacfef390 | 30 | tcpTest.send(buf, 100); |
hggerdd | 2:8f5bacfef390 | 31 | tcpTest.send(html_foot, sizeof(html_foot)); |
hggerdd | 2:8f5bacfef390 | 32 | |
hggerdd | 2:8f5bacfef390 | 33 | tcpTest.close(); |
hggerdd | 2:8f5bacfef390 | 34 | wait_ms(10); |
hggerdd | 2:8f5bacfef390 | 35 | tcpTest.listen(); |
hggerdd | 0:f7caac9b804e | 36 | |
hggerdd | 0:f7caac9b804e | 37 | } |
hggerdd | 0:f7caac9b804e | 38 | |
hggerdd | 0:f7caac9b804e | 39 | int main() |
hggerdd | 0:f7caac9b804e | 40 | { |
hggerdd | 2:8f5bacfef390 | 41 | int _socket = 0; |
hggerdd | 1:f45d6c8ec0a9 | 42 | |
hggerdd | 0:f7caac9b804e | 43 | IpAddr localhost(192,168,1,68); |
hggerdd | 0:f7caac9b804e | 44 | IpAddr netmask(255,255,255,0); |
hggerdd | 0:f7caac9b804e | 45 | IpAddr gateway(192,168,1,1); |
hggerdd | 0:f7caac9b804e | 46 | |
hggerdd | 1:f45d6c8ec0a9 | 47 | wait(5); |
hggerdd | 1:f45d6c8ec0a9 | 48 | |
hggerdd | 0:f7caac9b804e | 49 | // Serielle Schnittstelle initialisieren |
hggerdd | 0:f7caac9b804e | 50 | pc.baud(115200); |
hggerdd | 0:f7caac9b804e | 51 | |
hggerdd | 0:f7caac9b804e | 52 | // Initialisieren des Ethernetinterfaces |
hggerdd | 0:f7caac9b804e | 53 | pc.printf("Etbernet initialisieren.\n"); |
hggerdd | 0:f7caac9b804e | 54 | W5100.hardware_reset(); |
hggerdd | 0:f7caac9b804e | 55 | W5100.init(); |
hggerdd | 0:f7caac9b804e | 56 | |
hggerdd | 0:f7caac9b804e | 57 | uint8_t mac[6] = {0x00,0x00,0x5e,0x00,0x01,0x01}; |
hggerdd | 0:f7caac9b804e | 58 | W5100.setMACAddress(mac); |
hggerdd | 0:f7caac9b804e | 59 | |
hggerdd | 0:f7caac9b804e | 60 | uint8_t u[4]; |
hggerdd | 0:f7caac9b804e | 61 | localhost.getIP(u); |
hggerdd | 0:f7caac9b804e | 62 | W5100.setIPAddress(u); |
hggerdd | 0:f7caac9b804e | 63 | |
hggerdd | 0:f7caac9b804e | 64 | netmask.getIP(u); |
hggerdd | 0:f7caac9b804e | 65 | W5100.setSubnetMask(u); |
hggerdd | 0:f7caac9b804e | 66 | |
hggerdd | 0:f7caac9b804e | 67 | gateway.getIP(u); |
hggerdd | 0:f7caac9b804e | 68 | W5100.setGatewayIp(u); |
hggerdd | 0:f7caac9b804e | 69 | |
hggerdd | 0:f7caac9b804e | 70 | // Sendetimer starten (und anschließend per Polling abfragen) |
hggerdd | 0:f7caac9b804e | 71 | pc.printf("Sendetimer starten.\n"); |
hggerdd | 0:f7caac9b804e | 72 | sendStatusTimer.start(); |
hggerdd | 2:8f5bacfef390 | 73 | |
hggerdd | 2:8f5bacfef390 | 74 | |
hggerdd | 2:8f5bacfef390 | 75 | // TCP starten |
hggerdd | 2:8f5bacfef390 | 76 | tcpTest.setOnEvent(handler); |
hggerdd | 2:8f5bacfef390 | 77 | tcpTest.bind(80); |
hggerdd | 2:8f5bacfef390 | 78 | tcpTest.listen(); |
hggerdd | 2:8f5bacfef390 | 79 | tickTCP.attach(&tcpTest, &TCPSocket::poll, 0.1); |
hggerdd | 2:8f5bacfef390 | 80 | |
hggerdd | 0:f7caac9b804e | 81 | |
hggerdd | 0:f7caac9b804e | 82 | while(1) { |
hggerdd | 0:f7caac9b804e | 83 | |
hggerdd | 0:f7caac9b804e | 84 | // nach Ablauf der Wartezeit die STatusinformationen per Serieller Schnittstelle senden |
hggerdd | 0:f7caac9b804e | 85 | if (sendStatusTimer.read_ms() >= 2000) { |
hggerdd | 2:8f5bacfef390 | 86 | sendStatusTimer.reset(); |
hggerdd | 2:8f5bacfef390 | 87 | pc.printf("SnSR = %x\n",W5100.readSnSR(_socket)); |
hggerdd | 0:f7caac9b804e | 88 | } |
hggerdd | 0:f7caac9b804e | 89 | } |
hggerdd | 0:f7caac9b804e | 90 | } |