📄 telnet.c
字号:
/*
* Author hugang <hgxxx@51eda.com>
*/
#include "../SOURCE/includes.h" /* uC/OS interface */
#include "lwip/api.h"
#include "../inc/44blib.h"
#include "../inc/target.h"
#include "telnet.h"
#include <stdio.h>
void telnet_thread(void *arg)
{
struct netconn *conn, *newconn;
struct ip_addr l_ip;
err_t err;
char strbuf[64], cmdbuf[30];
u16_t strlen;
s8_t cmd_c;
IP4_ADDR(&l_ip, 192,168,0,100);
/* Create a new connection identifier. */
conn = netconn_new(NETCONN_TCP);
/* Bind connection to well known port number 7. */
//netconn_bind(conn, &l_ip, 23);
netconn_bind(conn, &l_ip, 7);
/* Tell connection to go into listening mode. */
netconn_listen(conn);
while(1)
{
newconn = netconn_accept(conn);
Uart_Printf(" newconn come here!\n");
strlen = sprintf(strbuf,"Welcome to uC/OS_II demo shell \r\n");
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
strlen = sprintf(strbuf,"Author: hugang <hgxxx@51eda.com> \r\n");
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
strlen = sprintf(strbuf,"Escape command is exit\r\n\r\n\r\n");
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
strlen = sprintf(strbuf,"hgxxx@shell:>");
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
cmd_c = 0;
/* Process the new connection. */
if(newconn != NULL)
{
struct netbuf *buf;
void *data;
u16_t len;
u8_t *datab;
while((buf = netconn_recv(newconn)) != NULL)
{
do
{
netbuf_data(buf, &data, &len);
datab = (unsigned char *) data;
if((len == 2) && (*datab == 0x0d) && (*(datab+1) == 0x0a))
{
if(cmd_c > 0)
{
cmdbuf[cmd_c] = 0x00;
if(strcmp(cmdbuf, "ostime")==0)
{
INT32U os_time;
os_time = OSTimeGet();
strlen = sprintf(strbuf, "\r\nNow, OS time is: %d", os_time);
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
}
else if(strcmp(cmdbuf, "exit")==0)
{
netbuf_delete(buf);
goto t_exit;
}
else
{
strlen = sprintf(strbuf, "\r\nyour command is: %s unkonwn command.", cmdbuf);
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
}
cmd_c = 0;
}
strlen = sprintf(strbuf,"\r\nhgxxx@shell:>");
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
}
else if((len == 1) && (*datab >= 0x20) && (*datab <= 0x7e) && (cmd_c < 29))
{
netconn_write(newconn, data, len, NETCONN_COPY);
cmdbuf[cmd_c] = *datab;
cmd_c++;
}
else if((len == 1) && (*datab == 0x08) && (cmd_c >0))
{
cmd_c--;
strlen = sprintf(strbuf,"\b \b");
netconn_write(newconn, strbuf, strlen, NETCONN_COPY);
}
}
while(netbuf_next(buf) >= 0);
netbuf_delete(buf);
}
}
t_exit:
err = netconn_delete(newconn);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -