⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc_ctl_mysql.c

📁 epoll机制的收发程序 只能在2.6内核上使用
💻 C
📖 第 1 页 / 共 4 页
字号:
						msg_sys->time.ntp.zone, /* 时区 */\
						msg_sys->time.ntp.space/* 更新间隔 */);
			}
			else
			{
				sprintf(temp, ",'%s',%d,%u",
						DEFAULT_SYSTEM_NTP_SERVER, /* ntp server */\
						DEFAULT_SYSTEM_NTP_ZONE, /* 时区 */\
						DEFAULT_SYSTEM_NTP_SPACE/* 更新间隔 */);
			}
			sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s) %s (%u,'%s',%u,%u%s)", \
					KEY_CAMERA_ID_SYSTEM, /* 摄像机id */\
					KEY_CAMERA_NAME, /* 摄像机名 */\
					KEY_NO_USE_LED, /* 是否关闭led */\
					KEY_SET_TIME_MOD, /* 设置时间的方式 */\
					KEY_NTP_SERVER, /* ntp server */\
					KEY_TIME_ZONE, /* 时区 */\
					KEY_SET_TIME_SPACE, /* 更新间隔 */\
					KEY_MYSQL_VALUES, /* 数据库的关键字 */\
					lab_mysql->id_cam, /* 摄像机id */\
					msg_sys->name_cam, /* 摄像机名 */\
					msg_sys->led, /* 是否关闭led */\
					msg_sys->way_time, /* 设置时间的方式 */\
					temp/* ntp相关 */);
			break;
		}
		case TYPE_P_W_SECURITY://安全相关类型
		{
			sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_SECURITY);
			bzero(temp, sizeof(temp));
			switch(type)
			{
			case TYPE_ACTION_CAMERA://摄像机的动作
				msg_security_get = (struct_web_security_get *)buf;
				sprintf(temp, ",'%s','%s','%s','%s','%s'", \
						msg_security_get->root.name, /* 管理员名 */\
						msg_security_get->root.passwd, /* 管理员密码 */\
						msg_security_get->user.name, /* 普通用户名 */\
						msg_security_get->user.passwd, /* 普通用户密码 */\
						msg_security_get->name_net/* 保密网络名 */);
				break;
			case TYPE_ACTION_CGI://cgi的动作
				msg_security_set = (struct_web_security *)buf;
				switch(msg_security_set->level)
				{
				case TYPE_LEVEL_SEC_NET://设置安全网络
					sprintf(temp, ",'%s','%s','%s','%s','%s'", \
							DEFAULT_SECURITY_NAME_ROOT, /* 管理员名 */\
							DEFAULT_SECURITY_PWD_ROOT, /* 管理员密码 */\
							DEFAULT_SECURITY_NAME_USER, /* 普通用户名 */\
							DEFAULT_SECURITY_PWD_USER, /* 普通用户密码 */\
							msg_security_set->msg.name_net/* 保密网络名 */);
					break;
				case TYPE_LEVEL_SEC_ROOT://设置管理员密码
					sprintf(temp, ",'%s','%s','%s','%s','%s'", \
							msg_security_set->msg.info_user.name, /* 管理员名 */\
							msg_security_set->msg.info_user.passwd, /* 管理员密码 */\
							DEFAULT_SECURITY_NAME_USER, /* 普通用户名 */\
							DEFAULT_SECURITY_PWD_USER, /* 普通用户密码 */\
							DEFAULT_SECURITY_NAME_NET/* 保密网络名 */);
					break;
				case TYPE_LEVEL_SEC_USER://设置普通用户密码
					sprintf(temp, ",'%s','%s','%s','%s','%s'", \
							DEFAULT_SECURITY_NAME_ROOT, /* 管理员名 */\
							DEFAULT_SECURITY_PWD_ROOT, /* 管理员密码 */\
							msg_security_set->msg.info_user.name, /* 普通用户名 */\
							msg_security_set->msg.info_user.passwd, /* 普通用户密码 */\
							DEFAULT_SECURITY_NAME_NET/* 保密网络名 */);
					break;
				default:
					break;
				}
			}
			sprintf(string_set, "(%s,%s,%s,%s,%s,%s) %s (%u%s)", \
					KEY_CAMERA_ID_SECURITY, /* 摄像机id */\
					KEY_ADMIN_NAME, /* 管理员名 */\
					KEY_ADMIN_PWD, /* 管理员密码 */\
					KEY_USER_NAME, /* 普通用户名 */\
					KEY_USER_PWD, /* 普通用户密码 */\
					KEY_PRIVATE_NET_NAME, /* 保密网络名 */\
					KEY_MYSQL_VALUES,/* 数据库的关键字 */\
					lab_mysql->id_cam, /* 摄像机id */\
					temp);
			break;
		}
		case TYPE_P_W_NET://网络相关类型
		{
			msg_net = (struct_web_net *)buf;
			sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_NETWORK);
			bzero(mac, sizeof(mac));
			for(i = 0; i < 6; i++)
			{
				bzero(temp, sizeof(temp));
				sprintf(temp, "%02X", (unsigned char)msg_net->mac[i]);
				strcat(mac, temp);
			}
			
			bzero(temp, sizeof(temp));
			switch(msg_net->way_ip)
			{
			case WAY_IP_GET_DHCP://使用dhcp
				sprintf(temp, ",'%s','%s','%s','%s','%s'", \
						DEFAULT_NET_IP, /* ip */\
						DEFAULT_NET_SUBMASK, /* submask */\
						DEFAULT_NET_GATEWAY, /* gateway */\
						DEFAULT_NET_PPPOE_ACC, /* pppoe帐号 */\
						DEFAULT_NET_PPPOE_PWD/* pppoe密码 */);
				break;
			case WAY_IP_GET_STATIC://使用静态ip
				memcpy(&ip, msg_net->ipmsg.staticip.ip, LEN_TYPE_UINT32);
				memcpy(&submask, msg_net->ipmsg.staticip.submask, LEN_TYPE_UINT32);
				memcpy(&gateway, msg_net->ipmsg.staticip.gateway, LEN_TYPE_UINT32);
				
				bzero(temp1, sizeof(temp1));
				sprintf(temp1, ",'%s'", inet_ntoa(ip));
				strcat(temp, temp1);
				
				bzero(temp1, sizeof(temp1));
				sprintf(temp1, ",'%s'", inet_ntoa(submask));
				strcat(temp, temp1);
				
				bzero(temp1, sizeof(temp1));
				sprintf(temp1, ",'%s'", inet_ntoa(gateway));
				strcat(temp, temp1);
				
				sprintf(temp1, ",'%s'", DEFAULT_NET_PPPOE_ACC);
				strcat(temp, temp1);
				
				sprintf(temp1, ",'%s'", DEFAULT_NET_PPPOE_PWD);
				strcat(temp, temp1);
				break;
			case WAY_IP_GET_PPPOE://使用pppoe
				sprintf(temp1, ",'%s'", DEFAULT_NET_IP);
				strcat(temp, temp1);
				
				sprintf(temp1, ",'%s'", DEFAULT_NET_SUBMASK);
				strcat(temp, temp1);
				
				sprintf(temp1, ",'%s'", DEFAULT_NET_GATEWAY);
				strcat(temp, temp1);
				
				sprintf(temp1, ",'%s','%s'", msg_net->ipmsg.pppoe.account_pppoe, msg_net->ipmsg.pppoe.passwd_pppoe);
				strcat(temp, temp1);
				break;
			default:
				return -1;
				break;
			}
			
			bzero(temp1, sizeof(temp1));
			memcpy(&dns, msg_net->dns1, LEN_TYPE_UINT32);
			if(dns.s_addr != 0)
				
				sprintf(temp1, ",'%s'", inet_ntoa(dns));
			else
				sprintf(temp1, ",''");
			strcat(temp, temp1);
			
			bzero(temp1, sizeof(temp1));
			memcpy(&dns, msg_net->dns2, LEN_TYPE_UINT32);
			if(dns.s_addr != 0)
				sprintf(temp1, ",'%s'", inet_ntoa(dns));
			else
				sprintf(temp1, ",''");
			strcat(temp, temp1);
			
			memcpy(&port_web, msg_net->port_http, LEN_TYPE_UINT16);
			memcpy(&port_video, msg_net->port_video, LEN_TYPE_UINT16);
			memcpy(&port_audio, msg_net->port_audio, LEN_TYPE_UINT16);
			sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,%u,'%s'%s,%u,%u,%u,'%s',%u,%u,%u,%u,'%s')", \
					KEY_CAMERA_ID_NETWORK, /* 摄像机id */\
					KEY_GET_IP_WAY, /* ip地址获取方式 */\
					KEY_MAC_ADDRESS, /* mac */\
					KEY_IP_ADDRESS, /* ip */\
					KEY_SUB_MASK, /* sub mask */\
					KEY_GATEWAY, /* gateway */\
					KEY_PPPOE_ACCOUNT, /* pppoe帐号 */\
					KEY_PPPOE_PWD, /* pppoe密码 */\
					KEY_DNS_SERVER1, /* dns1 */\
					KEY_DNS_SERVER2, /* dns2 */\
					KEY_HTTP_PORT, /* http端口 */\
					KEY_UDP_VIDEO_PORT, /* 视频端口 */\
					KEY_UDP_AUDIO_PORT, /* 音频端口 */\
					KEY_WLAN_SSID, /* ssid */\
					KEY_NET_TYPE, /* 网络类型 */\
					KEY_WEP, /* wep */\
					KEY_WLAN_KEY_SEL, /* 密钥格式 */\
					KEY_WLAN_KEY_ID, /* 密钥id */\
					KEY_WLAN_KEY, /* 密钥值 */\
					KEY_MYSQL_VALUES, /* 数据库关键字 */
					lab_mysql->id_cam, /* 摄像机id */\
					msg_net->way_ip, /* ip地址获取方式 */\
					mac, /* mac */\
					temp, /* ip地址及dns相关 */\
					port_web, /* http端口 */\
					port_video, /* 视频端口 */\
					port_audio, /* 音频端口 */\
					msg_net->ssid_wlan, /* ssid */\
					msg_net->type_net, /* 网络类型 */\
					msg_net->wep, /* wep */\
					msg_net->way_key, /* 密钥格式 */\
					msg_net->id_key, /* 密钥id */\
					msg_net->key/* 密钥值 */);
			break;
		}
		case TYPE_P_W_DDNS://DDNS相关类型
		{
			msg_ddns = (struct_web_ddns *)buf;
			sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_DDNS);
			bzero(temp, sizeof(temp));
			sprintf(string_set, "(%s,%s,%s,%s,%s,%s) %s (%u,%u,'%s',%u,'%s',%u)", \
					KEY_CAMERA_ID_DDNS, /* 摄像机id */\
					KEY_USE_DDNS, /* 是否启用ddns */\
					KEY_DDNS_SERVER, /* ddns服务器 */\
					KEY_DDNS_UPDATE_SPACE, /* ddns更新间隔 */\
					KEY_DDNS_STATE, /* ddns状态 */\
					KEY_USE_UPNP, /* 是否启用upnp */\
					KEY_MYSQL_VALUES, /* 数据库关键字 */\
					lab_mysql->id_cam, /* 摄像机id */\
					msg_ddns->ddns, /* 是否启用ddns */\
					msg_ddns->ser_ddns, /* ddns服务器 */\
					msg_ddns->space_ddns, /* ddns更新间隔 */\
					DEFAULT_DDNS_STATE_DDNS, /* ddns状态 */\
					msg_ddns->upnp/* 是否启用upnp */);
			break;
		}
		case TYPE_P_W_MAILFTP://传输方式相关类型
		{
			msg_mailftp = (struct_web_mailftp *)buf;
			sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_MAILFTP);
			
			memcpy(&port, msg_mailftp->port_ftp, LEN_TYPE_UINT16);
			bzero(temp, sizeof(temp));
			if(msg_mailftp->check_mail == TYPE_CHECKED_YES)
			{
				sprintf(temp, ",%s='%s',%s='%s'", \
						KEY_SMTP_USER, msg_mailftp->name_sndmail, \
						KEY_SMTP_PWD, msg_mailftp->pwd_sndmail);
			}
			sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,'%s','%s','%s','%s','%s',%u,%u,'%s','%s','%s',%u)", \
					KEY_CAMERA_ID_MAILFTP, /* 摄像机id */\
					KEY_SMTP_SERVER, /* smtp server */\
					KEY_SMTP_USER, /* 发信人用户名 */\
					KEY_SMTP_PWD, /* 发信人密码 */\
					KEY_FROM_ADDRESS, /* 发信人邮箱 */\
					KEY_SENDTO_ADDRESS, /* 收信人邮箱 */\
					KEY_USE_CHECK_SMTP, /* 是否校验email */\
					KEY_FTP_PORT, /* ftp端口 */\
					KEY_FTP_SERVER, /* ftp服务器 */\
					KEY_FTP_USER, /* ftp用户名 */\
					KEY_FTP_PWD, /* ftp用户密码 */\
					KEY_FTP_WORK_MOD, /* ftp工作模式 */\
					KEY_MYSQL_VALUES, /* 数据库关键字 */\
					lab_mysql->id_cam, /* 摄像机id */\
					msg_mailftp->ser_smtp, /* smtp server */\
					msg_mailftp->name_sndmail, /* 发信人用户名 */\
					msg_mailftp->pwd_sndmail, /* 发信人密码 */\
					msg_mailftp->addr_sndmail, /* 发信人邮箱 */\
					msg_mailftp->addr_rcvmail, /* 收信人邮箱 */\
					msg_mailftp->check_mail, /* 是否校验email */\
					port, /* ftp端口 */\
					msg_mailftp->ser_ftp, /* ftp服务器 */\
					msg_mailftp->name_ftp, /* ftp用户名 */\
					msg_mailftp->pwd_ftp, /* ftp用户密码 */\
					msg_mailftp->way_ftp/* ftp工作模式 */);
			break;
		}
		case TYPE_P_W_VIDEO://视音频相关类型
		{
			msg_video = (struct_web_video *)buf;
			sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_VIDEO);
			sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,'%s',%u,%u,%u,%u,%u,%u,%u,%u)", \
					KEY_CAMERA_ID_VIDEO, /* 摄像机id */\
					KEY_VIDEO_TXT, /* 视频文本 */\
					KEY_VIDEO_SIZE, /* 图像大小 */\
					KEY_VIDEO_QUALITY, /* 图像质量 */\
					KEY_VIDEO_FRAME_RATE, /* 帧率 */\
					KEY_DEL_RAY_WAY, /* 反闪烁 */\
					KEY_USE_MIRROR_H, /* 行镜像 */\
					KEY_USE_MIRROR_L, /* 列镜像 */\
					KEY_USE_FRAME_RATE_CTRL, /* 帧率控制 */\
					KEY_SOUND_SWITCH, /* 声音开关 */\
					KEY_MYSQL_VALUES, /* 数据库关键字 */\
					lab_mysql->id_cam, /* 摄像机id */\
					msg_video->text, /* 视频文本 */\
					msg_video->size, /* 图像大小 */\
					msg_video->quality, /* 图像质量 */\
					msg_video->fps, /* 帧率 */\
					msg_video->flicker_del, /* 反闪烁 */\
					msg_video->upright_used, /* 行镜像 */\
					msg_video->plne_used, /* 列镜像 */\
					msg_video->fps_used, /* 帧率控制 */\
					msg_video->audio /* 声音开关 */);
			break;
		}
		case TYPE_P_W_TRIGGER://应用相关类型
		{
			msg_application = (struct_web_application *)buf;
			sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAM_TABLE_MYSQL_AR003_TRIGGER);
			sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,'%s',%u,%u,%u,%u,%u)", \
					KEY_CAMERA_ID_TRIGGER, /* id号 */\
					KEY_MD_1, /* md1 */\
					KEY_SENSITIVITY_1, /* 灵敏度1 */\
					KEY_MD_2, /* md2 */\
					KEY_SENSITIVITY_2, /* 灵敏度2 */\
					KEY_USE_INFRARED_ALARM, /* 红外警报 */\
					KEY_SAVE_IMG_PC, /* 保存在pc */\
					KEY_SAVE_IMG_SDCARD, /* 保存在存储卡 */\
					KEY_SAVE_IMG_MODE, /* 保存格式 */\
					KEY_SEND_IMG_BY_EMAIL, /* 使用email */\
					KEY_SEND_IMG_BY_FTP, /* 使用ftp */\
					KEY_TIMER_GET_PIC, /* 定时间隔 */\
					KEY_DELAY_CHECK_EVENT, /* 延迟 */\
					KEY_USE_ALARM_TXT, /* 报文警报 */\
					KEY_ALARM_TXT, /* 警报报文 */\
					KEY_USE_ALARM_SOUND, /* 声响警报 */\
					KEY_USE_GPIO1, /* gpio1 */\
					KEY_GPIO1_TIMER, /* gpio1 定时间隔 */\
					KEY_USE_GPIO2, /* gpio2 */\
					KEY_GPIO2_TIMER, /* gpio2 定时间隔 */\
					KEY_MYSQL_VALUES, \
					lab_mysql->id_cam, /* id号 */\
					DEFAULT_TRIGGER_USED_MD1, /* md1 */\
					DEFAULT_TRIGGER_LINGMD_MD1, /* 灵敏度1 */\
					DEFAULT_TRIGGER_USED_MD2, /* md2 */\
					DEFAULT_TRIGGER_LINGMD_MD2, /* md2 */\
					DEFAULT_TRIGGER_USED_INFRARED, /* 红外警报 */\
					DEFAULT_TRIGGER_SAVE_PC, /* 保存在pc */\
					DEFAULT_TRIGGER_SAVE_CARD, /* 保存在存储卡 */\
					DEFAULT_TRIGGER_VIDEO_SAVE, /* 保存格式 */\
					DEFAULT_TRIGGER_SND_MAIL, /* 使用email */\
					DEFAULT_TRIGGER_SND_FTP, /* 使用ftp */\
					DEFAULT_TRIGGER_SPACE, /* 定时间隔 */\
					DEFAULT_TRIGGER_DELAY, /* 延迟 */\
					DEFAULT_TRIGGER_WARING_TEXT, /* 报文警报 */\
					DEFAULT_TRIGGER_TEXT_WARING, /* 警报报文 */\
					DEFAULT_TRIGGER_WARING_AUDIO, /* 声响警报 */\
					DEFAULT_TRIGGER_GPIO1, /* gpio1 */\
					DEFAULT_TRIGGER_TIMER_GPIO1, /* gpio1 定时间隔 */\
					DEFAULT_TRIGGER_GPIO2, /* gpio2 */\
					DEFAULT_TRIGGER_TIMER_GPIO2/* gpio2 定时间隔 */);
			break;
		}
		case TYPE_P_W_TOOL://工具相关类型
		{
			msg_tool = (struct_web_tool *)buf;
			return -1;
			break;
		}
		case TYPE_P_W_UPDATE://软件更新相关类型
		{
			msg_update = (struct_web_update *)buf;
			sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003);
			sprintf(string_set, "(%s,%s,%s,%s,%s) %s (%u,%u,'%s','%s',%lu)", \
					KEY_CAMERA_ID, /* 摄像机在数据库中的id号码 */\
					KEY_USER_ID, /* 用户id */\
					KEY_SERIAL_NUMBER, /* 序列号 */\
					KEY_VERSION, /* 版本 */\
					KEY_ONLINE_CAMERA, /* 在线状态 */\
					KEY_MYSQL_VALUES, /* 数据库的关键字 */\
					lab_mysql->id_cam, /* 摄像机在数据库中的id号码 */\
					lab_mysql->id_user, /* 用户id */\
					serial, /* 序列号 */\
					msg_update->version, /* 版本 */
					logintime/* 在线状态 */);
			break;
		}
	default:
		return -1;
		break;
	}
	sprintf(output, "%s %s", string_web, string_set);
#ifdef		DEBUG_MYL
	printf("%s %d : Insert SQL : %s\n\n", __FILE__, __LINE__, output);
#endif
	return 0;
}

/*
 * 功  能:创建更新网页部分数据库的字符串
 * 参  数:type:标志是摄像机发给服务器的还是cgi传来的
 *         serial:摄像机序列号
 *         lab:标志是哪个网页
 *         buf:数据缓冲区
 *         mysql:已经打开的数据库
 *         output:输出缓冲区
 *         lab_mysql:标志数据库表是否存在
 *         logintime:摄像机的登陆时间
 * 返回值:成功返回0,否则返回-1
 */
int rc_string_mysql_update_web(int type, int lab, const unsigned char *buf, unsigned char *output, struct_lab_mysql *lab_mysql, unsigned long int logintime)
{
	int							i;
	unsigned char				string_sel[128];
	unsigned char				string_web[64];
	unsigned char				string_set[512];
	unsigned char				temp[512];
	unsigned char				temp1[128];
	unsigned char				mac[16];
	struct in_addr				ip;
	struct in_addr				gateway;
	struct in_addr				submask;
	struct in_addr				dns;
	unsigned short int			port;
	unsigned short int			port_web;
	unsigned short int			port_video;
	unsigned short int			port_audio;
	
	struct_lingmd				*msg_lingmd;
	struct_web_index			*msg_index;
	struct_web_sys				*msg_sys;
	struct_web_security_get		*msg_security_get;
	struct_web_security			*msg_security_set;
	struct_web_net				*msg_net;
	struct_web_ddns				*msg_ddns;
	struct_web_mailftp			*msg_mailftp;
	struct_web_video			*msg_video;
	struct_web_application		*msg_application;
	struct_web_tool				*msg_tool;
	struct_web_update			*msg_update;
	
	if(lab_mysql->id_cam <= 0)
		return -1;
	
	
	bzero(string_sel, sizeof(string_sel));
	sprintf(string_sel, "%s %s=%u", KEY_MYSQL_WHERE, KEY_CAMERA_ID, lab_mysql->id_cam);
	
	bzero(string_web, sizeof(string_web));
	bzero(string_set, sizeof(string_set));
	switch(lab)
	{
		case TYPE_P_W_INDEX://首页相关类型
		{
			sprintf(string_web, "%s %s %s", \
					KEY_MYSQL_UPDATE, \
					NAM_TABLE_MYSQL_AR003_TRIGGER, \
					KEY_MYSQL_SET);
			switch(type)
			{
				case TYPE_ACTION_CAMERA://摄像机的动作
				{
					msg_lingmd = (struct_lingmd *)buf;
					sprintf(string_set, "%s=%u,%s=%u", \
							KEY_SENSITIVITY_1, msg_lingmd->md1, \
							KEY_SENSITIVITY_2, msg_lingmd->md2);
					break;
				}
				case TYPE_ACTION_CGI://cgi的动作
				{
					msg_index = (struct_web_index *)buf;
					switch(msg_index->action)
					{
					case ACT_W_INDEX_LINGMD://设置灵敏度
						sprintf(string_set, "%s=%u,%s=%u", \
								KEY_SENSITIVITY_1, msg_index->msg.lingmd.md1, \
								KEY_SENSITIVITY_2, msg_index->msg.lingmd.md2);
						break;
					default:
						return -1;
						break;
					}
					break;
				}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -