![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ハイパー・マイコン mbedでインターネット 電子工作 4章 リスト4-2 IP_Phoneのプログラム
Dependencies: EthernetInterface TextLCD mbed-rtos mbed
Diff: main.cpp
- Revision:
- 0:4e33b86642bd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jul 11 14:34:23 2014 +0000 @@ -0,0 +1,72 @@ +#include "mbed.h" +#include "EthernetInterface.h" +#include "TextLCD.h" + +TextLCD lcd(p24, p26, p27, p28, p29, p30); +DigitalIn sw(p21); +AnalogOut out(p18); +AnalogIn in(p20); + +// DES_ADDRESS(Static IP) +const char* DES_ADDRESS = "192.168.0.21"; +//const char* DES_ADDRESS = "192.168.0.26"; + +const int PORT = 50505; +const int DSIZE = 1024; + +UDPSocket server; +Endpoint client; +unsigned short rtmp,wtmp; +unsigned char rbuf[DSIZE], wbuf[DSIZE]; + +void read(void) { + int i; + for ( i = 0 ; i < DSIZE ; i=i+2 ){ + rtmp = in.read_u16(); + rbuf[i] = (unsigned char)(rtmp & 0x00FF); + rbuf[i+1] = (unsigned char)((rtmp>>8)&0x00FF) ; + wait(0.0001); + } + server.sendTo(client, (char*)rbuf, sizeof(rbuf)); +} + +void write(void) { + int i; + + server.receiveFrom(client, (char*)wbuf, sizeof(wbuf)); + for ( i = 0 ; i < DSIZE ; i=i+2 ){ + wtmp = (unsigned char)(wbuf[i+1]); + wtmp <<=8; + wtmp |= (unsigned char)wbuf[i] ; + out.write_u16(wtmp) ; + wait(0.0001); + } +} + + +int main (void) { + EthernetInterface eth; + + eth.init("192.168.0.26","255.255.255.0","192.168.0.1"); + //eth.init("192.168.0.21","255.255.255.0","192.168.0.1"); + + eth.connect(); + lcd.printf("%s", eth.getIPAddress()); + + server.bind( PORT ); + server.set_blocking(false) ; + client.set_address(DES_ADDRESS, PORT); + + while(1) { + if ( sw == 0 ){ + lcd.locate(0,1); + lcd.printf("Listen..."); + + write(); + }else{ + read(); + lcd.locate(0,1); + lcd.printf("Talk... "); + } + } +} \ No newline at end of file