10 years, 6 months ago.

send a asscii

hello

here i have a tcp socket...

I send from the NETIO App over the local Network a word "led on"

which order must i have for switch a digitalout 0 to 1?

my idea is a simple Code

if(incoming_data=="led on") {

led3=1;

}

but it doesnt work :-(

can anybody help me?

here my code:

  1. include "mbed.h"
  1. include "EthernetNetIf.h"
  1. include "TCPSocket.h"

DigitalOut led3(LED3);

DigitalOut led4(LED4, "led4");

DigitalOut led(LED1);

EthernetNetIf eth;

EthernetNetIf eth(

IpAddr(192,168,0,25), IP Address

IpAddr(255,255,255,0), Network Mask

IpAddr(192,168,0,1), Gateway

IpAddr(192,168,0,1) DNS

);

  1. define TCP_LISTENING_PORT 12345

TCPSocket ListeningSock;

TCPSocket* pConnectedSock; for ConnectedSock

Host client;

TCPSocketErr err;

void onConnectedTCPSocketEvent(TCPSocketEvent e)

{ switch(e)

{ case TCPSOCKET_CONNECTED:

printf("TCP Socket Connected\r\n");

break;

case TCPSOCKET_WRITEABLE:

printf("TCP Socket Writable\r\n");

break;

case TCPSOCKET_READABLE:

Can now read dome data...

printf("TCP Socket Readable\r\n");

Read in any available data into the buffer

char buff[128];

while ( int len = pConnectedSock->recv(buff, 128) ) {

And send straight back out again

pConnectedSock->send(buff, len);

buff[len]=0; make terminater

printf("Received&Wrote:%s\r\n",buff); } break;

case TCPSOCKET_CONTIMEOUT:

printf("TCP Socket Timeout\r\n");

break;

case TCPSOCKET_CONRST:

printf("TCP Socket CONRST\r\n");

break; case TCPSOCKET_CONABRT:

printf("TCP Socket CONABRT\r\n");

break;

case TCPSOCKET_ERROR:

printf("TCP Socket Error\r\n"); break;

case TCPSOCKET_DISCONNECTED:

Close socket...

printf("TCP Socket Disconnected\r\n");

pConnectedSock->close();

break;

default:

printf("DEFAULT\r\n");

} }

void onListeningTCPSocketEvent(TCPSocketEvent e)

{ switch(e)

{

case TCPSOCKET_ACCEPT:

printf("Listening: TCP Socket Accepted\r\n");

Accepts connection from client and gets connected socket.

err=ListeningSock.accept(&client, &pConnectedSock);

if (err) {

printf("onListeningTcpSocketEvent : Could not accept connection.\r\n");

return; Error in accept, discard connection

} Setup the new socket events

pConnectedSock->setOnEvent(&onConnectedTCPSocketEvent);

We can find out from where the connection is coming by looking at the

Host parameter of the accept() method

IpAddr clientIp = client.getIp();

printf("Listening: Incoming TCP connection from %d.%d.%d.%d\r\n",

clientIp[0], clientIp[1], clientIp[2], clientIp[3]);

break;

the following cases will not happen

case TCPSOCKET_CONNECTED:

printf("Listening: TCP Socket Connected\r\n");

break;

case TCPSOCKET_WRITEABLE:

printf("Listening: TCP Socket Writable\r\n");

break;

case TCPSOCKET_READABLE:

printf("Listening: TCP Socket Readable\r\n");

break;

case TCPSOCKET_CONTIMEOUT:

printf("Listening: TCP Socket Timeout\r\n");

break;

case TCPSOCKET_CONRST:

printf("Listening: TCP Socket CONRST\r\n");

break;

case TCPSOCKET_CONABRT:

printf("Listening: TCP Socket CONABRT\r\n");

break;

case TCPSOCKET_ERROR:

printf("Listening: TCP Socket Error\r\n");

break;

case TCPSOCKET_DISCONNECTED:

Close socket...

printf("Listening: TCP Socket Disconnected\r\n");

ListeningSock.close();

break;

default:

printf("DEFAULT\r\n");

}; }

int main() {

printf("\r\n");

printf("Setting up...\r\n");

EthernetErr ethErr = eth.setup();

if(ethErr)

{ printf("Error %d in setup.\r\n", ethErr);

return -1;

} printf("Setup OK\r\n");

IpAddr ip = eth.getIp();

printf("mbed IP Address is %d.%d.%d.%d\r\n", ip[0], ip[1], ip[2], ip[3]);

Set the callbacks for Listening

ListeningSock.setOnEvent(&onListeningTCPSocketEvent);

bind and listen on TCP

err=ListeningSock.bind(Host(IpAddr(), TCP_LISTENING_PORT));

printf("Binding..\r\n");

if(err)

{ Deal with that error...

printf("Binding Error\n");

} err=ListeningSock.listen(); Starts listening

printf("Listening...\r\n");

if(err)

{ printf("Listening Error\r\n");

}

Timer tmr;

tmr.start();

while(true)

{ Net::poll();

if(tmr.read() > 0.2) sec

{ led4=!led4; Show that we are alive

tmr.reset();

} } }

1 Answer

10 years, 6 months ago.

http://mbed.org/users/wango/code/TCP_server_FET10/

Thanks at least for sharing the code, because code above without the code highlighting is a bullet to a head. Anyway, what does not work there ? Be more specific, what does it print, where does it stop?

Do we really need to read line by line??

posted by Martin Kojtal 30 Oct 2013