物联网实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (p!=1)
{ strcpy(name,"..\\探空资料\\TTAA0000.T00"); p=13;
printf("请输入高空世界时,供选择:0、6、12、18\n");
while(1)
{ scanf("%d",&hour);
if (hour==0 || hour ==6 || hour ==12 || hour ==18) break;
图4译出探空各要素功能流程图
二、编码设计
利用计算机高级语言对程序流程图进行编程,采用C语言编程。
#include <stdio.h> //程序中要用到输入/输出函数
#include <string.h> //程序中要用到字符串处理函数,如strlen、strcpy等
int str2int(char *ch,int k,int n); //对字符串从k位置开始,长度为n的子字符串转
ff—风速,以米/秒为单位进行编报。并将这些信息显示出来。
给K赋初值为16,利用数组分别对后面的数据进行译码,按照图示所示顺序,每次译码后K加6,直到K的值大于数组长度N结束地面译码。
图3译出地面各要素功能流程图
将已打开的报文资料进行分解,第0~11字符不用,第12~16字符赋值给台站号,并显示出来,给变量K赋初值为18,对气压进行译码,分别将数组第K和第K+1个字符与99,00,92……20,15,10进行比较,若相等则对第K+2-K+4个字符进行相应处理,得到相应的本组气压位势米,然后依次对气温,露点温度差,风向,风速译码,将变量K+18赋值给K,进行下一组译码,直到K〉n,结束本次探空译码。
气象信息与网络技术课程设计
地面/探空电报码以文件形式存放,固定为8.3格式。地面电报码文件格式是:AAXXmmdd.Thh,探空电报码文件格式是:TTAAmmdd.Thh。其中AAXX表示地面报;TTAA表示探空报;mm表示月份,用2位数字01~12;dd表示日,用2位数字01~31;hh表示时次,用2位数字,地面有00、03、06、09、12、15、18、21共8个时次,探空有00、06、12、18共4个时次,都用世界时。地面/探空电报译码数据流图如图1所示。
name[n-8]='0'+month/10; name[n-7]='0'+month%10; //加入月份,2位数
name[n-6]='0'+day/10; name[n-5]='0'+day%10; //加入日期,2位数
printf("请输入台站号,南京为58238,北京为54511,上海为58362\n");
if (hour>=0 && hour <=21 && hour % 3 ==0) break;
else printf ("输入有错,请重新输入地面世界时:0~21,间隔为3\n");
}
}
n=strlen(name); //以下生成电码文件名,存放在name中
name[n-2]='0'+hour/10; name[n-1]='0'+hour%10; //加入时次,2位数
图1电码译码系统数据流图
1、地面/探空电报译码程序总流程图
根据电码文件名是8.3格式,并且与月日时次形成固定关系,因此可以采用输入年月日时次的数据来组合文件名。地面1~4位固定为“AAXX”,探空1~4位为“TTAA”,5~6位为2位数月份,7~8位为2位数日,9~10位为固定为“.T”,11~12位为2位数时次。
printf("请输入年、月、日\n");
while(1)
{ scanf("%d%d%d",&year,&month,&day); //输入年月日用空格隔开
if (year % 4 == 0) days[2]=29; else days[2]=28;
if (month>=1 && month <=12 && day>=1 && day<=days[month]) break;
int n,p; //定义位置计数器n,临时变量p
char station[6],ch[400]; //定义台站号station、存放电码字符串源自文库组ch
FILE *fp; char name[30]; //定义读文件指针,文件名name
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义每月天数
地面/探空电报译码程序流程图如图2所示,读取文件,找到指定台站的位置,并读取指定台站的电码到一个字符串数组中,然后传递给地面或探空处理程序继续处理,分解出天气各要素。最后显示结果。
图2电码译码系统程序流程图
一、详细设计
将已打开的电码文件数据分解,将第0-4个字符赋值给台站号,第6-10个字符赋值给iRiXhVV,iRiX指示码,本次不要译码,h——最低的云底部高度(米),VV—有效能见度(千米),第12~16字符赋值给Nddff,N—总云量,指观测时云遮蔽天空视野的总成数,dd —风向,以10度为单位编报。静风时,dd编报00。
//换为整型值。对于含有非数字字符,则返回-1
void dmdisp(char *ch); //对字符串ch进行地面译码的功能函数
void updisp(char *ch); //对字符串ch进行高空译码的功能函数
void main(void) //主控程序入口
{ int year,month,day,hour; //定义年year、月month、日day、时次hour
else printf ("输入有错,请重新输入高空世界时,供选择:0、6、12、18\n");
}
}
else
{ strcpy(name,"..\\地面资料\\AAXX0000.T00");
printf("请输入地面世界时,供选择:0、3、6、9、12、15、18、21\n");
while(1)
{ scanf("%d",&hour);
else printf ("输入有错,请重新输入年、月、日\n");
}
printf("请选择:1-地面;2-高空\n");
while(1)
{ scanf("%d",&p);
if (p==1 || p==2) break;
else printf ("输入有错,请重新选择:1-地面;2-高空\n");
}
{ strcpy(name,"..\\探空资料\\TTAA0000.T00"); p=13;
printf("请输入高空世界时,供选择:0、6、12、18\n");
while(1)
{ scanf("%d",&hour);
if (hour==0 || hour ==6 || hour ==12 || hour ==18) break;
图4译出探空各要素功能流程图
二、编码设计
利用计算机高级语言对程序流程图进行编程,采用C语言编程。
#include <stdio.h> //程序中要用到输入/输出函数
#include <string.h> //程序中要用到字符串处理函数,如strlen、strcpy等
int str2int(char *ch,int k,int n); //对字符串从k位置开始,长度为n的子字符串转
ff—风速,以米/秒为单位进行编报。并将这些信息显示出来。
给K赋初值为16,利用数组分别对后面的数据进行译码,按照图示所示顺序,每次译码后K加6,直到K的值大于数组长度N结束地面译码。
图3译出地面各要素功能流程图
将已打开的报文资料进行分解,第0~11字符不用,第12~16字符赋值给台站号,并显示出来,给变量K赋初值为18,对气压进行译码,分别将数组第K和第K+1个字符与99,00,92……20,15,10进行比较,若相等则对第K+2-K+4个字符进行相应处理,得到相应的本组气压位势米,然后依次对气温,露点温度差,风向,风速译码,将变量K+18赋值给K,进行下一组译码,直到K〉n,结束本次探空译码。
气象信息与网络技术课程设计
地面/探空电报码以文件形式存放,固定为8.3格式。地面电报码文件格式是:AAXXmmdd.Thh,探空电报码文件格式是:TTAAmmdd.Thh。其中AAXX表示地面报;TTAA表示探空报;mm表示月份,用2位数字01~12;dd表示日,用2位数字01~31;hh表示时次,用2位数字,地面有00、03、06、09、12、15、18、21共8个时次,探空有00、06、12、18共4个时次,都用世界时。地面/探空电报译码数据流图如图1所示。
name[n-8]='0'+month/10; name[n-7]='0'+month%10; //加入月份,2位数
name[n-6]='0'+day/10; name[n-5]='0'+day%10; //加入日期,2位数
printf("请输入台站号,南京为58238,北京为54511,上海为58362\n");
if (hour>=0 && hour <=21 && hour % 3 ==0) break;
else printf ("输入有错,请重新输入地面世界时:0~21,间隔为3\n");
}
}
n=strlen(name); //以下生成电码文件名,存放在name中
name[n-2]='0'+hour/10; name[n-1]='0'+hour%10; //加入时次,2位数
图1电码译码系统数据流图
1、地面/探空电报译码程序总流程图
根据电码文件名是8.3格式,并且与月日时次形成固定关系,因此可以采用输入年月日时次的数据来组合文件名。地面1~4位固定为“AAXX”,探空1~4位为“TTAA”,5~6位为2位数月份,7~8位为2位数日,9~10位为固定为“.T”,11~12位为2位数时次。
printf("请输入年、月、日\n");
while(1)
{ scanf("%d%d%d",&year,&month,&day); //输入年月日用空格隔开
if (year % 4 == 0) days[2]=29; else days[2]=28;
if (month>=1 && month <=12 && day>=1 && day<=days[month]) break;
int n,p; //定义位置计数器n,临时变量p
char station[6],ch[400]; //定义台站号station、存放电码字符串源自文库组ch
FILE *fp; char name[30]; //定义读文件指针,文件名name
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义每月天数
地面/探空电报译码程序流程图如图2所示,读取文件,找到指定台站的位置,并读取指定台站的电码到一个字符串数组中,然后传递给地面或探空处理程序继续处理,分解出天气各要素。最后显示结果。
图2电码译码系统程序流程图
一、详细设计
将已打开的电码文件数据分解,将第0-4个字符赋值给台站号,第6-10个字符赋值给iRiXhVV,iRiX指示码,本次不要译码,h——最低的云底部高度(米),VV—有效能见度(千米),第12~16字符赋值给Nddff,N—总云量,指观测时云遮蔽天空视野的总成数,dd —风向,以10度为单位编报。静风时,dd编报00。
//换为整型值。对于含有非数字字符,则返回-1
void dmdisp(char *ch); //对字符串ch进行地面译码的功能函数
void updisp(char *ch); //对字符串ch进行高空译码的功能函数
void main(void) //主控程序入口
{ int year,month,day,hour; //定义年year、月month、日day、时次hour
else printf ("输入有错,请重新输入高空世界时,供选择:0、6、12、18\n");
}
}
else
{ strcpy(name,"..\\地面资料\\AAXX0000.T00");
printf("请输入地面世界时,供选择:0、3、6、9、12、15、18、21\n");
while(1)
{ scanf("%d",&hour);
else printf ("输入有错,请重新输入年、月、日\n");
}
printf("请选择:1-地面;2-高空\n");
while(1)
{ scanf("%d",&p);
if (p==1 || p==2) break;
else printf ("输入有错,请重新选择:1-地面;2-高空\n");
}