📄 keyboard.c
字号:
/*
DM&P Mity-Mite Demo Program.
Copyright (C) 2002 by DM&P.
KeyboardSetup() will read key from keyboard for network setup when BOOTP/DHCP
is not supported and default configuration is not okay.
*/
#include "keyboard.h"
#include "grlcd.h"
#include <conio.h>
#include <mem.h>
#include <stdio.h>
/* Read key press and display it. */
char *GetInput(int x,int y)
{
static char szBuf[32];
char c;
int nIdx = 0;
memset(szBuf,0,32);
while(TRUE)
{
GrLcd_printf(x,y,"%-21s","");
GrLcd_printf(x,y,"%s-",szBuf);
c = getch();
if(c=='-')
return NULL;
else if(c==13)
{
szBuf[nIdx] = 0;
return szBuf;
}
else if(c==8)
{
if(nIdx>0)
szBuf[--nIdx] = 0;
}
else
szBuf[nIdx++] = c;
}
}
/* Manual for network setup */
void NetworkSetup()
{
char c;
char szBuf[32];
DWORD dwIp;
char *p;
while(TRUE)
{
GrLcd_ClearScreen();
GrLcd_printf(0,0*8,"1.IP 2.Netmask");
GrLcd_printf(0,1*8,"3.DNS 4.Gateway");
GrLcd_printf(0,3*8,"(-) Exit");
c = getch();
GrLcd_ClearScreen();
switch(c)
{
case '1':
dwIp = DSock_GetHostIp();
GrLcd_printf(0,0*8,"IP: %s",inet_ntoa(szBuf,dwIp));
GrLcd_printf(0,1*8,"Input new IP:");
GrLcd_printf(0,3*8,"(-) Skip (Enter) OK");
p = GetInput(0,2*8);
if(p)
{
FILE *fp = fopen("dsock.cfg","wt");
if(fp!=NULL)
{
fprintf(fp,"ip=%s\n",p);
fprintf(fp,"netmask=%s\n",inet_ntoa(szBuf,DSock_GetNetmask()));
fprintf(fp,"gateway=%s\n",inet_ntoa(szBuf,DSock_GetGateway()));
fprintf(fp,"nameserver=%s\n",inet_ntoa(szBuf,DSock_GetDomainNameServer()));
fclose(fp);
}
}
break;
case '2':
dwIp = DSock_GetNetmask();
GrLcd_printf(0,0*8,"Netmask: %s",inet_ntoa(szBuf,dwIp));
GrLcd_printf(0,1*8,"Input new netmask:");
GrLcd_printf(0,3*8,"(-) Skip (Enter) OK");
p = GetInput(0,2*8);
if(p)
{
FILE *fp = fopen("dsock.cfg","wt");
if(fp!=NULL)
{
fprintf(fp,"ip=%s\n",inet_ntoa(szBuf,DSock_GetHostIp()));
fprintf(fp,"netmask=%s\n",p);
fprintf(fp,"gateway=%s\n",inet_ntoa(szBuf,DSock_GetGateway()));
fprintf(fp,"nameserver=%s\n",inet_ntoa(szBuf,DSock_GetDomainNameServer()));
fclose(fp);
}
}
break;
case '3':
dwIp = DSock_GetDomainNameServer();
GrLcd_printf(0,0*8,"DNS: %s",inet_ntoa(szBuf,dwIp));
GrLcd_printf(0,1*8,"Input new DNS:");
GrLcd_printf(0,3*8,"(-) Skip (Enter) OK");
p = GetInput(0,2*8);
if(p)
{
FILE *fp = fopen("dsock.cfg","wt");
if(fp!=NULL)
{
fprintf(fp,"ip=%s\n",inet_ntoa(szBuf,DSock_GetHostIp()));
fprintf(fp,"netmask=%s\n",inet_ntoa(szBuf,DSock_GetNetmask()));
fprintf(fp,"gateway=%s\n",inet_ntoa(szBuf,DSock_GetGateway()));
fprintf(fp,"nameserver=%s\n",p);
fclose(fp);
}
}
break;
case '4':
dwIp = DSock_GetGateway();
GrLcd_printf(0,0*8,"Gateway: %s",inet_ntoa(szBuf,dwIp));
GrLcd_printf(0,1*8,"Input new gateway:");
GrLcd_printf(0,3*8,"(-) Skip (Enter) OK");
p = GetInput(0,2*8);
if(p)
{
FILE *fp = fopen("dsock.cfg","wt");
if(fp!=NULL)
{
fprintf(fp,"ip=%s\n",inet_ntoa(szBuf,DSock_GetHostIp()));
fprintf(fp,"netmask=%s\n",inet_ntoa(szBuf,DSock_GetNetmask()));
fprintf(fp,"gateway=%s\n",p);
fprintf(fp,"nameserver=%s\n",inet_ntoa(szBuf,DSock_GetDomainNameServer()));
fclose(fp);
}
}
break;
case '-':
return;
}
}
}
/* Manual setup from keyboard */
void KeyboardSetup()
{
char c;
while(TRUE)
{
GrLcd_ClearScreen();
GrLcd_printf(0,0*8,"(1) Network Setup");
GrLcd_printf(0,1*8,"(2) Reboot");
GrLcd_printf(0,3*8,"(-) Exit");
c = getch();
switch(c)
{
case '1':
NetworkSetup();
break;
case '2':
GrLcd_ClearScreen();
GrLcd_printf(0,0*8,"Booting...");
asm { db 0xea, 0x00, 0x00, 0xff, 0xff };
break;
case '3':
case '-':
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -