This builds on TCPSocket_HelloWorld and others to read an in-coming buffer and then build and send a buffer. Very much work in progress
Dependencies: EthernetInterface mbed-rtos mbed
Fork of TCPSocket_HelloWorld by
TCP_Serialisation.cpp
- Committer:
- acodd
- Date:
- 2013-02-09
- Revision:
- 12:cce8fa67de18
File content as of revision 12:cce8fa67de18:
#include "mbed.h" #include "EthernetInterface.h" #include "NokiaLCD.h" NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type DigitalOut led1(LED1, "led1"); DigitalOut led2(LED2, "led2"); DigitalOut led3(LED3, "led3"); DigitalOut led4(LED4, "led4"); EthernetInterface eth; //, ethMask, ethNull, ethNull); typedef struct _data { int pan; int tilt; } data; data real; char InBound[300]; // incomming data char OutBound[300]; // outbound data char outpan[10]; char outtilt[10]; char header[] = "real "; char space[] = " "; void BuildOut(data outdata) { htons(outdata.pan); htons(outdata.tilt); sprintf(outpan, "%d", outdata.pan); sprintf(outtilt, "%d", outdata.tilt); strncpy(OutBound, header, sizeof(OutBound)-1); strcat(OutBound, outpan); strcat(OutBound, space); strcat(OutBound, outtilt); } int main() { eth.init("198.168.1.20","255.255.255.0","0.0.0.0"); eth.connect(); TCPSocketServer sock; if (sock.bind(80)>=0) { led4=1; } sock.listen(1); //create a TCPSocketConnection instance that will handle the incoming connection. TCPSocketConnection client; while (!client.is_connected()) { sock.accept(client); } led3 = 1; while(true) { int ret = client.receive(InBound, sizeof(InBound)-1); if (ret >=0) { led2=1; lcd.locate(0,1); lcd.printf(InBound); // Go head and do stuff the inbound data //Now send out your outbound packet with someinformation: real.pan = 321; //as read by your devices real.tilt = 654; //as read by your devices BuildOut(real); lcd.locate(0,0); lcd.printf(OutBound); client.send(OutBound, sizeof(OutBound)); ret = -1; } } } //lcd.printf("Values %d %d", real.pan, real.tilt); //strcat(OutBound, header); //char test[] = "123 456 789"; //int first, sec, third; //if (sscanf(InBound, "%d %d %d", &first, &sec, &third) <= 3){ //lcd.locate(0,1); //lcd.printf("first is %d", first); //lcd.locate(0,2); //lcd.printf("Sec is %d", sec); //lcd.locate(0,3); //lcd.printf("third is %d", third); //}