亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? test.c

?? STM32_fatfs_shell_SDHC.rar
?? C
字號(hào):
#include "config.h"

config_t g_data;
/*判斷密碼是否正確*/
int is_valid_pwd(char *left, char *right) {
	int *a, *b;
	short *c, *d;

	a = (int *) left;
	b = (int *) right;
	c = (short *) (left + 4);
	d = (short *) (right + 4);

	if ((*a == *b) && (*c == *d)) {
		return TRUE;
	}

	return FALSE;
}

/*轉(zhuǎn)換密碼,從字符串到數(shù)組*/
void get_password(char *buf, char *pwd) {
	char *from = pwd;
	char *to = buf;
	int i = PWD_LEN;

	while (0 != *from && i > 0) {
		*to = *from - 48;
		to++;
		from++;
		i--;
	}
	return;
}

/*轉(zhuǎn)換密碼,從數(shù)組到字符串*/
void set_password(char *buf, char *pwd) {
	char *from = buf;
	char *to = pwd;
	int i = PWD_LEN;

	while (0 != *from && i > 0) {
		*to = *from + 48;
		to++;
		from++;
		i--;
	}
	return;
}

/*去除\n 字符*/
void del_one(char *buf) {
	int len = 0;
	len = strlen(buf);
	if ((len > 0) && (buf[len - 1] == '\n')) {
		buf[len - 1] = 0;
	}
	return;
}

/*從一行字符串提取配置項(xiàng)和相應(yīng)的內(nèi)容*/
int get_scanf(char *buf, char *name, char *value) {
	char *findit = NULL;
	int len = 0;
	int i = 0;

	findit = buf;
	len = strlen(buf);

	for (i = 0; i < len; ++i) {
		if (*findit == '=')
			goto next;

		findit++;
	}
	return ERR;

	next: strncpy(name, buf, LINE);
	name[i] = 0;
	strncpy(value, findit + 1, LINE);
	return OK;
}

/*讀取配置項(xiàng)和內(nèi)容*/
void read_param_config(FIL *fp) {
	char buf[BUF_SIZ] = { 0 };
	char name[LINE + 1] = { 0 };
	char value[LINE + 1] = { 0 };
	int ret = OK;

	while (f_gets(buf, BUF_SIZ, fp)) {
		del_one(buf); /*去除\n 字符*/

		ret = get_scanf(buf, name, value);
		if (ERR == ret) /*格式不對(duì),跳過*/
		{
			continue;
		}

		/*now , start load config context*/

		if (!strncmp("name", name, LINE)) {
			strncpy(g_data.name, value, LINE);
			continue;
		}

		if (!strncmp("password", name, LINE)) {
			get_password(g_data.pwd, value);
			continue;
		}

		if (!strncmp("capacity", name, LINE)) {
			g_data.capacity = (unsigned int) atoi(value);
			continue;
		}

		if (!strncmp("shape", name, LINE)) {
			g_data.shape = (unsigned short) atoi(value);
			continue;
		}

		if (!strncmp("height", name, LINE)) {
			g_data.u.cube.height = (unsigned short) atoi(value);
			continue;
		}

		if (!strncmp("length", name, LINE)) {
			g_data.u.cube.length = (unsigned short) atoi(value);
			continue;
		}

		if (!strncmp("width", name, LINE)) {
			g_data.u.cube.width = (unsigned short) atoi(value);
			continue;
		}

		if (!strncmp("radius", name, LINE)) {
			g_data.u.cylinder.radius = (unsigned short) atoi(value);
			continue;
		}

		if (!strncmp("len", name, LINE)) {
			g_data.u.cylinder.len = (unsigned short) atoi(value);
			continue;
		}
	}

	return;
}

/*檢查密碼,獲取action*/
int check_pwd_get_action(FIL *fp, int *action) {
	char buf[BUF_SIZ] = { 0 };
	char name[LINE + 1] = { 0 };
	char value[LINE + 1] = { 0 };
	int ret = OK;

	/*get password*/
	res = f_read(fp, buf, 18, &br);
	if (!is_valid_pwd(g_data.pwd, buf)) {
		printf("password is wrong, please check it !!\n");
		return ERR;
	}

	/*get acticon*/
	f_gets(buf, BUF_SIZ, fp);
	del_one(buf); /*去除\n 字符*/

	ret = get_scanf(buf, name, value);
	if (ERR == ret) /*格式不對(duì),返回*/
	{
		printf("action line wrong, please check it !!\n");
		return ERR;
	}

	if (!strncmp("ACTION", name, LINE)) {
		*action = atoi(value);
		return OK;
	}

	printf("action line wrong, please check it !!\n");
	return ERR;
}

/*save config to data flash*/
int save_config(void) {
	FIL confp;
	char buf[BUF_SIZ] = { 0 };
	char password[PWD_LEN + 1] = { 0 };
	int str_pnt = 0;
	int len = 0;

	set_password(g_data.pwd, password);

	len = sprintf(buf + str_pnt, "#version %s\n", VERSION);
	str_pnt += len;

	len = sprintf(buf + str_pnt, "name=%s\n", g_data.name);
	str_pnt += len;

	len = sprintf(buf + str_pnt, "password=%s\n", password);
	str_pnt += len;

	len = sprintf(buf + str_pnt, "capacity=%d\n", g_data.capacity);
	str_pnt += len;

	len = sprintf(buf + str_pnt, "shape=%d\n", g_data.shape);
	str_pnt += len;

	/*根據(jù)形狀進(jìn)行相關(guān)配置項(xiàng)的區(qū)分*/
	if (CYLINDER == g_data.shape) {
		len = sprintf(buf + str_pnt, "radius=%d\n", g_data.u.cylinder.radius);
		str_pnt += len;
		len = sprintf(buf + str_pnt, "len=%d\n", g_data.u.cylinder.len);
		str_pnt += len;
	} else /*CUBE */
	{
		len = sprintf(buf + str_pnt, "length=%d\n", g_data.u.cube.length);
		str_pnt += len;
		len = sprintf(buf + str_pnt, "width=%d\n", g_data.u.cube.width);
		str_pnt += len;
		len = sprintf(buf + str_pnt, "height=%d\n", g_data.u.cube.height);
		str_pnt += len;
	}

	f_chdrive(0);
	printf("\r\n 寫入初始配置");
	res = f_open(&confp, DEFAULT_CONFIG_FILE, FA_CREATE_ALWAYS | FA_WRITE);
	if (res) {
		printf("\r\n 1打開DataFlash 失敗 ");
		return;
	}
	printf("\r\n 1打開DataFlash 成功 ");
	res = f_lseek(&confp, confp.fsize);
	res = f_write(&confp, buf, str_pnt, &bw);
	//res = f_write(&fdst, "device.txt", 4, &bw);
	f_close(&fdst);

	return OK;
}

/*從車機(jī)配置文件(data flash ) 讀取配置加載到內(nèi)存*/
int load_config(void) {
	char buf[BUF_SIZ] = { 0 };
	char name[LINE + 1] = { 0 };
	char value[LINE + 1] = { 0 };
	int ret = OK;

	f_mount(0, &fs[0]);
	f_mount(1, &fs[1]);
	f_chdrive(0);
	printf("\r\n 讀系統(tǒng)配置");
	res = f_open(&fdst, DEFAULT_CONFIG_FILE, FA_OPEN_EXISTING | FA_READ);
	if (res) {
		printf("\r\n 1打開DataFlash 失敗 ");
		return;
	}
	printf("\r\n 1打開DataFlash 成功 ");

	/*first , version check, now do nothing : ) */
	f_gets(buf, BUF_SIZ, &fdst);

	/*now , start load config context*/
	read_param_config(&fdst);

	f_close(&fdst);

	return ret;
}
/*從SD卡讀配置文件,輸出參數(shù)為配置文件的action項(xiàng)*/
int load_config_from_sd(int *action) {
	int ret = OK;
	char sdfn[40];
	strcpy(sdfn, "1:/machine/");
	strcat(sdfn, machine);
	strcat(sdfn, "/sd.txt");
	f_mount(0, &fs[0]);
	f_mount(1, &fs[1]);
	f_chdrive(1);
	printf("\r\n 讀SD配置");
	res = f_open(&fdst, sdfn, FA_OPEN_EXISTING | FA_WRITE | FA_READ);

	ret = check_pwd_get_action(&fdst, action); /*檢查密碼,獲取action*/

	if (ERR == ret) {
		printf("load_config_from_sd wrong, please check it !!\n");
		f_close (&fdst);
		return ERR;
	}

	/*如果action是更新配置,就讀取配置到內(nèi)存,并且保存配置到data flash*/
	if (W_CONFIG == *action) {
		read_param_config(&fdst);
		save_config(); /*save config to data flash*/
	}

	f_close (&fdst);
	return OK;
}

/*測(cè)試臨時(shí)用的,產(chǎn)生sd的配置文件便于測(cè)試*/
void write_file_tmp(void) {
	char buf[BUF_SIZ] = { 0 };
	char password[PWD_LEN + 1] = { 0 };
	int str_pnt = 0;
	int len = 0;

	len = sprintf(buf + str_pnt, "#version 1.0.1\n");
	str_pnt += len;

	len = sprintf(buf + str_pnt, "name=machine1\n");
	str_pnt += len;

	f_mount(0, &fs[0]);
	f_mount(1, &fs[1]);
	f_chdrive(0);
	printf("\r\n 寫入初始配置");
	res = f_open(&fdst, DEFAULT_CONFIG_FILE, FA_CREATE_ALWAYS | FA_WRITE);
	if (res) {
		printf("\r\n 1打開DataFlash 失敗 ");
		return;
	}
	printf("\r\n 1打開DataFlash 成功 ");
	res = f_lseek(&fdst, fdst.fsize);
	res = f_write(&fdst, buf, str_pnt, &bw);
	//res = f_write(&fdst, "device.txt", 4, &bw);
	f_close(&fdst);

}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜天堂影视香蕉久久| 日本韩国欧美国产| 91在线观看美女| 日韩视频一区二区三区在线播放| 久久久久国色av免费看影院| 亚洲一区二区三区在线看| 欧美在线观看18| 久久久不卡网国产精品二区| 亚洲国产精品天堂| 色综合欧美在线视频区| 精品国产乱码久久久久久夜甘婷婷 | 成人永久免费视频| 亚洲精品美腿丝袜| 国产精品一区在线观看你懂的| 欧美另类高清zo欧美| 欧美精品第一页| 91久久精品一区二区| 国产亚洲视频系列| 美腿丝袜亚洲一区| 91.成人天堂一区| 亚洲人成网站精品片在线观看| 国产成人在线网站| 国产性天天综合网| 国产在线麻豆精品观看| 欧美一区二区三区视频在线| 亚洲高清不卡在线| 欧美日韩在线一区二区| 老司机午夜精品| 欧美一区二区在线不卡| 亚洲成人久久影院| 欧美视频一区二区三区| 亚洲在线中文字幕| 欧美无人高清视频在线观看| 一区二区三区视频在线观看| 97久久超碰精品国产| 日韩理论在线观看| 99re成人精品视频| 一区二区成人在线观看| 91久久精品一区二区三区| 亚洲精品一卡二卡| 欧美色倩网站大全免费| 午夜视频久久久久久| 欧美精品黑人性xxxx| 奇米在线7777在线精品| 精品免费视频一区二区| 国产91精品露脸国语对白| 国产精品女主播在线观看| a4yy欧美一区二区三区| 成人免费在线播放视频| 欧美日韩国产色站一区二区三区| 亚洲国产一区视频| 91精品国产麻豆国产自产在线| 奇米影视在线99精品| 久久精品水蜜桃av综合天堂| 99视频国产精品| 亚洲成在人线免费| 精品精品国产高清一毛片一天堂| 国产成人午夜精品5599 | av日韩在线网站| 亚洲午夜精品17c| 欧美大片在线观看一区二区| 丁香婷婷综合色啪| 成人激情视频网站| 一区二区三区四区五区视频在线观看| 在线观看91视频| 黄页视频在线91| 亚洲欧美日韩精品久久久久| 欧美丰满嫩嫩电影| 国产成人超碰人人澡人人澡| 亚洲女与黑人做爰| 日韩免费视频线观看| 成人黄色a**站在线观看| 午夜影院久久久| 久久久不卡网国产精品二区| 欧美网站一区二区| 国产精品白丝jk黑袜喷水| 亚洲资源中文字幕| 国产精品久久久久毛片软件| 欧美欧美欧美欧美首页| 国产**成人网毛片九色 | 一区二区在线免费| 精品国产99国产精品| 在线观看成人小视频| 国产一区二区看久久| 日韩电影在线看| 亚洲欧美偷拍三级| 国产夜色精品一区二区av| 欧美日韩成人综合在线一区二区| 国产suv一区二区三区88区| 秋霞国产午夜精品免费视频| 亚洲欧美日韩一区二区 | 成年人国产精品| 蜜桃视频第一区免费观看| 亚洲精品视频免费观看| 中文字幕电影一区| 久久色视频免费观看| 欧美一区二区三区成人| 91色婷婷久久久久合中文| 国产suv精品一区二区883| 激情综合一区二区三区| 男人的天堂久久精品| 亚洲成av人片观看| 亚洲一区二区三区在线播放| 国产精品久久久久久久久果冻传媒| 久久亚洲精精品中文字幕早川悠里| 欧美日韩黄色影视| 欧美亚洲自拍偷拍| 欧美最猛黑人xxxxx猛交| 成人午夜电影久久影院| 国产精品综合一区二区| 狠狠色丁香久久婷婷综| 久久99久久精品| 麻豆精品一区二区av白丝在线| eeuss鲁片一区二区三区| 国产一区二区不卡| 国产一区二区三区高清播放| 国产真实精品久久二三区| 久久99久久99| 精品一区二区三区久久久| 久久精品国产免费看久久精品| 麻豆一区二区在线| 国产精品99久久久久久久女警| 国产一区福利在线| 岛国精品在线观看| 99re视频这里只有精品| 欧美伊人久久久久久久久影院| 一本色道久久综合狠狠躁的推荐 | 国内精品嫩模私拍在线| 精品一区二区久久久| 国产一区二区三区在线看麻豆| 国产一区免费电影| av成人动漫在线观看| 盗摄精品av一区二区三区| 91免费观看在线| 欧美主播一区二区三区| 欧美日本在线一区| 日韩欧美自拍偷拍| 欧美激情一区二区三区| 自拍偷拍国产亚洲| 亚洲成人午夜电影| 九色porny丨国产精品| 国产自产v一区二区三区c| 不卡的看片网站| 欧美主播一区二区三区美女| 日韩欧美国产小视频| 欧美国产综合色视频| 亚洲男人的天堂一区二区| 五月婷婷色综合| 国产成人在线视频网站| 欧美日韩你懂的| 欧美mv和日韩mv的网站| 中文字幕亚洲一区二区av在线| 亚洲国产美国国产综合一区二区| 久久66热re国产| 色悠久久久久综合欧美99| 欧美剧情电影在线观看完整版免费励志电影| 日韩一卡二卡三卡| 中文字幕亚洲电影| 久久精品国产一区二区三| 91视频国产观看| 精品国产乱码久久久久久浪潮 | 麻豆精品一区二区三区| 99re视频精品| 久久久久久久久久美女| 亚洲电影欧美电影有声小说| 国产精品99久久久久久久女警 | 免费人成在线不卡| 一本高清dvd不卡在线观看| 欧美岛国在线观看| 亚洲一区二区在线视频| 国产毛片精品国产一区二区三区| 91福利视频久久久久| 2021国产精品久久精品| 一级做a爱片久久| 粉嫩av一区二区三区在线播放| 欧美精品丝袜中出| 亚洲男人天堂av网| 国产91清纯白嫩初高中在线观看| 欧美福利电影网| 亚洲蜜臀av乱码久久精品| 国产精品 日产精品 欧美精品| 欧美男人的天堂一二区| 亚洲另类中文字| 99久久久无码国产精品| 久久综合av免费| 精品写真视频在线观看| 日韩一区二区三区在线观看 | 国产目拍亚洲精品99久久精品| 亚洲资源在线观看| av午夜精品一区二区三区| 国产日韩三级在线| 国产成人av电影在线| 久久久久国产一区二区三区四区| 日本亚洲欧美天堂免费| 91精品国产91热久久久做人人 | 在线影院国内精品| 亚洲精品日产精品乱码不卡| 91在线视频官网| 亚洲欧美激情插 | 最新国产の精品合集bt伙计|