Fx0とLCDを使用するサンプルです。Ethernet用です。

Dependencies:   EthernetNetIf HTTPServer RPCInterface2 TextLCD mbed

Fork of ethernet_test_http_2 by Yasushi TAUCHI

Committer:
komoritan
Date:
Sat Feb 14 00:17:45 2015 +0000
Revision:
2:c9f57eeaee5a
Parent:
1:e20fecacd8f6
Fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
komoritan 1:e20fecacd8f6 1 /* (c) KDDI Technology
komoritan 1:e20fecacd8f6 2 *
komoritan 1:e20fecacd8f6 3 * This Source Code Form is subject to the terms of the Mozilla Public
komoritan 1:e20fecacd8f6 4 * License, v. 2.0. If a copy of the MPL was not distributed with this
komoritan 1:e20fecacd8f6 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
komoritan 1:e20fecacd8f6 6
yueee_yt 0:c14da41d70ea 7 #include "mbed.h"
yueee_yt 0:c14da41d70ea 8 #include "EthernetNetIf.h"
yueee_yt 0:c14da41d70ea 9 #include "HTTPServer.h"
yueee_yt 0:c14da41d70ea 10 #include "RPCFunction.h"
komoritan 1:e20fecacd8f6 11 #include "TextLCD.h"
komoritan 1:e20fecacd8f6 12 #define TEXTLCD_LEN 16
yueee_yt 0:c14da41d70ea 13 #if 1
yueee_yt 0:c14da41d70ea 14 /*
yueee_yt 0:c14da41d70ea 15 * Use DHCP
yueee_yt 0:c14da41d70ea 16 */
yueee_yt 0:c14da41d70ea 17 EthernetNetIf ethif;
yueee_yt 0:c14da41d70ea 18 #else
yueee_yt 0:c14da41d70ea 19 /*
yueee_yt 0:c14da41d70ea 20 * Use "static IP address" (Parameters:IP, Subnet mask, Gateway, DNS)
yueee_yt 0:c14da41d70ea 21 */
yueee_yt 0:c14da41d70ea 22 EthernetNetIf ethif(IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx));
yueee_yt 0:c14da41d70ea 23 #endif
komoritan 1:e20fecacd8f6 24
komoritan 1:e20fecacd8f6 25 TextLCD lcd(p24, p26, p27, p28, p29, p30); //LCD
yueee_yt 0:c14da41d70ea 26
yueee_yt 0:c14da41d70ea 27 HTTPServer server;
yueee_yt 0:c14da41d70ea 28 LocalFileSystem local("local");
komoritan 1:e20fecacd8f6 29
komoritan 1:e20fecacd8f6 30 // LCDディスプレイに文字列を表示させる
komoritan 1:e20fecacd8f6 31 void doSetLcd(char* input, char* output);
komoritan 1:e20fecacd8f6 32 // RPC Interfaceを宣言(setLcd:外部IF公開名、doSetLcd:外部からのコール後、処理する関数名)
komoritan 1:e20fecacd8f6 33 RPCFunction test(&doSetLcd, "setLcd");
yueee_yt 0:c14da41d70ea 34
yueee_yt 0:c14da41d70ea 35 int main(void) {
yueee_yt 0:c14da41d70ea 36
yueee_yt 0:c14da41d70ea 37 lcd.locate(0,0);
komoritan 1:e20fecacd8f6 38 // LCD上段に以下を記載する
komoritan 1:e20fecacd8f6 39 lcd.printf("Program start..");
yueee_yt 0:c14da41d70ea 40
yueee_yt 0:c14da41d70ea 41 if (ethif.setup()) {
yueee_yt 0:c14da41d70ea 42 error("Ethernet setup failed.");
yueee_yt 0:c14da41d70ea 43 return 1;
yueee_yt 0:c14da41d70ea 44 }
komoritan 1:e20fecacd8f6 45
komoritan 1:e20fecacd8f6 46 // IPアドレスを取得
yueee_yt 0:c14da41d70ea 47 IpAddr ethIp=ethif.getIp();
komoritan 1:e20fecacd8f6 48 // デフォルトはLCD下段にIPアドレスを表示
yueee_yt 0:c14da41d70ea 49 lcd.locate(0,1);
yueee_yt 0:c14da41d70ea 50 lcd.printf("%d.%d.%d.%d", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
komoritan 1:e20fecacd8f6 51
yueee_yt 0:c14da41d70ea 52 wait(1);
yueee_yt 0:c14da41d70ea 53 server.addHandler<RPCHandler>("/rpc");
yueee_yt 0:c14da41d70ea 54 FSHandler::mount("/local", "/");
yueee_yt 0:c14da41d70ea 55 server.addHandler<FSHandler>("/");
yueee_yt 0:c14da41d70ea 56 server.bind(80);
yueee_yt 0:c14da41d70ea 57 while (1) {
yueee_yt 0:c14da41d70ea 58 Net::poll();
yueee_yt 0:c14da41d70ea 59 }
yueee_yt 0:c14da41d70ea 60 }
komoritan 1:e20fecacd8f6 61
komoritan 1:e20fecacd8f6 62 // LCDの下段にinputされた文字列を表示する
komoritan 1:e20fecacd8f6 63 void doSetLcd(char* input, char* output) {
komoritan 1:e20fecacd8f6 64
komoritan 1:e20fecacd8f6 65 lcd.locate(0,1);
komoritan 1:e20fecacd8f6 66 // 2行目を全て空白表示とする
komoritan 1:e20fecacd8f6 67 for (int i = 0; i < TEXTLCD_LEN; i++){
komoritan 1:e20fecacd8f6 68 lcd.printf(" ");
komoritan 1:e20fecacd8f6 69 }
komoritan 1:e20fecacd8f6 70
komoritan 1:e20fecacd8f6 71 if (TEXTLCD_LEN < strlen(input)) {
komoritan 1:e20fecacd8f6 72 // inputデータが16文字を越える場合には、
komoritan 1:e20fecacd8f6 73 // LCD下段に一律"bad data"表示し、クライアント側に"fail"を返却する
komoritan 1:e20fecacd8f6 74 lcd.locate(0,1);
komoritan 1:e20fecacd8f6 75 lcd.printf("bad data");
komoritan 1:e20fecacd8f6 76 sprintf(output, "fail");
komoritan 1:e20fecacd8f6 77 } else {
komoritan 1:e20fecacd8f6 78 // inputデータが16文字以下の場合には、
komoritan 1:e20fecacd8f6 79 // LCD下段に表示し、クライアント側に"success"を返却する
yueee_yt 0:c14da41d70ea 80 lcd.locate(0,1);
yueee_yt 0:c14da41d70ea 81 lcd.printf("%s",input);
komoritan 1:e20fecacd8f6 82 sprintf(output, "success");
komoritan 1:e20fecacd8f6 83 }
yueee_yt 0:c14da41d70ea 84 }