Simple RS232 server. Use a serial cable to connect the RS232 port of the Ethernut Board with a COM port of a PC. Start a terminal program and a telnet client on the PC. Telnet should connect to the Ethernut Board.
Characters typed in the telnet window will appear in the terminal program window and vice versa.
#include <string.h> #include <dev/nicrtl.h> #include <dev/uartavr.h> #include <sys/heap.h> #include <sys/thread.h> #include <sys/timer.h> #include <sys/print.h> #include <netinet/sostream.h> #include <arpa/inet.h> volatile u_char connected = 0; volatile TCPSOCKET *sock; NUTDEVICE *uart; u_char rxbuff[256]; u_char txbuff[256]; /* * From RS232 to socket. */ THREAD(Receiver, arg) { int rlen; int slen; int c; for(;;) { if(connected) if((rlen = NutDeviceRead(uart, rxbuff, sizeof(rxbuff))) > 0) for(c = 0; connected && c < rlen; c += slen) if((slen = NutTcpSend(sock, rxbuff + c, rlen - c)) < 0) connected = 0; NutThreadYield(); } } /* * From socket to RS232. */ void Transmitter(void) { int rlen; int slen; int c; connected = 1; while(connected) { if((rlen = NutTcpReceive(sock, txbuff, sizeof(txbuff))) < 0) break; for(c = 0; connected && c < rlen; c += slen) { if((slen = NutDeviceWrite(uart, txbuff + c, rlen - c)) < 0) break; NutDeviceWrite(uart, 0, 0); } NutThreadYield(); } connected = 0; } /* * Main application routine. * * Nut/OS automatically calls this entry after initialization. */ THREAD(NutMain, arg) { u_long baud = 9600; NutRegisterDevice(&devUart0, 0, 0); uart = NutDeviceOpen("uart0"); NutDeviceIOCtl(uart, UART_SETSPEED, &baud); /* * Register Realtek controller at address 8300 hex * and interrupt 5. */ NutRegisterDevice(&devEth0, 0x8300, 5); /* * Configure lan interface. * */ NutNetAutoConfig("eth0"); NutThreadCreate("xmit", Receiver, 0, 1024); /* * Now loop endless for connections. */ for(;;) { /* * Create a socket. */ sock = NutTcpCreateSocket(); /* * Listen on telnet port. If we return, * we got a client. */ NutTcpAccept(sock, 23); /* * Call RS232 transmit routine. */ Transmitter(); /* * Close our socket. */ NutTcpCloseSocket(sock); } }