#include "define.h"
//********************************************************************************************************//
/**********************************************************************************************************
change函数: 日期: 2011年7月10号;
作用: 将读取的内容转换成二进制,并储存在二维数组中
**********************************************************************************************************/
void change(int t)
{
int i;
memset(b, 0, sizeof(b)); //先对数组进行初始化
for (i = 0; i < t; i ++)
{
b[i][7] = temp[i] & 0x01; //最低位//
b[i][6] = ( temp[i] & 0x02) >> 1;
b[i][5] = ( temp[i] & 0x04) >> 2;
b[i][4] = ( temp[i] & 0x08) >> 3;
b[i][3] = ( temp[i] & 0x10) >> 4;
b[i][2] = ( temp[i] & 0x20) >> 5;
b[i][1] = ( temp[i] & 0x40) >> 6;
b[i][0] = ( temp[i] & 0x80) >> 7; //最高位//
}
}
//********************************************************************************************************//
/**********************************************************************************************************
struct PID pid_f函数: 日期:
作用:
**********************************************************************************************************/
struct PID pid_f(int a[][8])
{
struct PID pid;
int wt[32], jt[32];
int i, j, k, num;
for (i = 0, k = 0; i < 4; i++)
{
for (j = 0; j < 8; j++)
{
wt[k++] = a[i][j];
}
}
for (i = 4, k = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
{
jt[k++] = a[i][j];
}
}
num = 0;
for (i = 1; i <= 20; i++)
{
num += wt[i] * (int)pow(2, 20 - i);
}
if (wt[0] == 0) {
pid.wd.flag = 0;
} else {
pid.wd.flag = 1;
}
pid.wd.d = num / 3600;
pid.wd.f = (num % 3600) / 60;
pid.wd.m = (num % 3600) % 60 + (wt[21] * 4 + wt[22] * 2 + wt[23]) / 8;
num = 0;
for (i = 1; i <= 20; i++)
{
num += jt[i] * (int)pow(2, 20 - i);
}
if (jt[0] == 0) {
pid.jd.flag = 0;
} else {
pid.jd.flag = 1;
}
pid.jd.d = num / 3600;
pid.jd.f = (num % 3600) / 60;
pid.jd.m = (num % 3600) % 60 + (jt[21] * 4 + jt[22] * 2 + jt[23]) / 8;
return pid;
}
//********************************************************************************************************//
/**********************************************************************************************************
ALLDATA_f函数: 日期:
作用:
**********************************************************************************************************/
void ALLDATA_f(FILE *fp, FILE *fp2)
{
char infor[6][100]; // 准备输出到界面 //
struct MID mid;
int i, j, k, num, asc, sum;
memset(temp, 0, sizeof(temp));
//****************************************************************************************************//
fread(temp, sizeof(char), 64, fp); // part:1 //
change(64);
mid.pid = pid_f(b); // pid function //
if (mid.pid.wd.flag == 0) {
fprintf(fp2, "North: ");
} else {
fprintf(fp2, "South: ");
}
fprintf(fp2, "%d'%d'%.3lf''\n", mid.pid.wd.d, mid.pid.wd.f, mid.pid.wd.m);
if (mid.pid.jd.flag == 0) {
fprintf(fp2, "East: ");
} else {
fprintf(fp2, "West: ");
}
fprintf(fp2, "%d'%d'%.3lf''\n", mid.pid.jd.d, mid.pid.jd.f, mid.pid.jd.m);
mid.floor = 0;
for (i = 0; i < 8; i++)
{
mid.floor += b[8][i] * (int)pow(2, 7-i);
}
fprintf(fp2, "FLOOR: %d\n", mid.floor);
mid.res = 0;
mid.date = 0;
for (i = 0; i < 16; i++)
{
mid.date += b[10][i] * (int)pow(2, 15 - i);
}
fprintf(fp2, "DATE: %d\n", mid.date);
for (i = 12; i < 64; i++)
{
asc = 0;
for (j = 0; j < 8; j++)
{
asc += b[i][j] * (int)pow(2, 7 - j);
}
fprintf(fp2, "%c", asc);
}
fprintf(fp2, "\n");
memset(temp, 0, sizeof(temp));
//****************************************************************************************************//
fread(temp, sizeof(char), 64, fp); // part:2 //
change(64);
mid.pid = pid_f(b); // pid function //
if (mid.pid.wd.flag == 0) {
fprintf(fp2, "North: ");
} else{
fprintf(fp2, "South: ");
}
fprintf(fp2, "%d'%d'%.3lf''\n", mid.pid.wd.d, mid.pid.wd.f, mid.pid.wd.m);
if (mid.pid.jd.flag == 0) {
fprintf(fp2, "East: ");
} else {
fprintf(fp2, "West: ");
}
fprintf(fp2, "%d'%d'%.3lf''\n", mid.pid.jd.d, mid.pid.jd.f, mid.pid.jd.m);
mid.floor = 0;
for (i = 0; i < 8; i++)
{
mid.floor += b[8][i] * (int)pow(2, 7-i);
}
fprintf(fp2, "FLOOR: %d\n", mid.floor);
mid.res = 0;
mid.date = 0;
for (i = 0; i < 16; i++)
{
mid.date += b[10][i] * (int)pow(2, 15 - i);
}
fprintf(fp2, "DATE: %d\n", mid.date);
for (i = 12; i < 64; i++)
{
asc = 0;
for (j = 0; j < 8; j++)
{
asc += b[i][j] * (int)pow(2, 7 - j);
}
fprintf(fp2, "%c", asc);
}
fprintf(fp2, "\n");
memset(temp, 0, sizeof(temp));
//****************************************************************************************************//
fread(temp, sizeof(char), 32, fp); // part:3 //
change(32);
mid.pid = pid_f(b); // pid function //
if (mid.pid.wd.flag == 0) {
fprintf(fp2, "North: ");
} else {
fprintf(fp2, "South: ");
}
fprintf(fp2, "%d'%d'%.3lf''\n", mid.pid.wd.d, mid.pid.wd.f, mid.pid.wd.m);
if (mid.pid.jd.flag == 0) {
fprintf(fp2, "East: ");
} else {
fprintf(fp2, "West: ");
}
fprintf(fp2, "%d'%d'%.3lf''\n", mid.pid.jd.d, mid.pid.jd.f, mid.pid.jd.