版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学与技术学院、软件学院学生实验报告实验题目:基于ATOS 平台的物联网实验学生姓名:指导教师 :专业班级:提交日期 :实验一 LED组件1.1实验要求绿灯一直处于熄灭的状态,红灯不停闪烁(注意:工具箱提供的代码有bug ,对于基站节点 LED_BLUE-> 红灯 LED_YELLOW-> 绿灯 ON 和 OFF逻辑相反)1.2实验思路将绿灯状态改为OFF,红灯通过时间延迟控制其的亮灭。1.3 实验关键代码/*LED 示例程序的实现模块,简单的点亮3 个 LED 灯date2010-1*/moduleLedMusesinterfaceBoot;implementation/*
2、LED 灯演示*/taskvoidDemoLed()/* 目前节点上提供两个LED 灯LED_BLUE->蓝灯LED_YELLOW->黄灯*/inti,j;while(1)for(i=0;i<1000;i+)for(j=0;j<500;j+);LED_BLUE_OFF;/*熄灭蓝色LED 灯 */LED_YELLOW_OFF;/*点亮黄色 LED 灯 */for(i=0;i<1000;i+)for(j=0;j<500;j+);LED_BLUE_ON;/*熄灭蓝色LED 灯 */LED_YELLOW_OFF;/*点亮黄色 LED 灯 */* 启动事件处理函数,
3、在 LED.nc 已经关联到 MainC.Boot 接口系统启动后会调用此函数*/eventvoidBoot.booted()postDemoLed();1.4 实验截图1.5 实验心得通过这次实验,掌握了对 LED 的简单控制,受益匪浅,并且对此次实验的运作过程开始了解。实验二定时器组件1.1 实验要求通过定时器让绿色灯闪烁,并且闪烁三次后停止闪烁。1.2 实验思路设置一个变量,在计时器每计数一次自加一次,加到三时,停止计时器。1.3 实验关键代码#defineDBG_LEV5moduleTimerLedMusesinterfaceBoot;/*Timer 为系统接口 TMilli 指明了定
4、时器的精度为毫秒 */ usesinterfaceTimer<TMilli>asTimer1;/*as 关键字为接口别名 */ usesinterfaceTimer<TMilli>asTimer2;implementation/* 任务 :切换黄色 LED 灯 */inti=0;/* 启动事件处理函数,在 TimerLed.nc 已经关联到 MainC.Boot 接口系统启动后会调用此函数*/eventvoidBoot.booted()/* 定时器1:持续工作,每隔1s 触发一次*/callTimer1.startPeriodic(1000);/* 定时器2:持续工作,
5、每隔3s 触发一次*/callTimer2.startPeriodic(5000);/* 定时器 1 的事件处理函数*/eventvoidTimer1.fired()/* 事件处理中直接切换蓝色LED 灯 */ADBG(5,"ledbluetoggle.rn");/LED_BLUE_TOGGLE;ADBG(5,"ledyellowtoggle.rn");/postToggleLedYellow();LED_YELLOW_TOGGLE;i=i+1;if(i=3)callTimer1.stop();/通过 stop 函数使定时器停止/* 定时器 2 的事件处
6、理函数*/eventvoidTimer2.fired()/ADBG(5,"ledyellowtoggle.rn");/postToggleLedYellow();1.4 实验截图1.5 实验心得通过此次实验,加强了我对代码的思考,更加了解定时器函数的使用。实验三串口调试1.1 实验要求通过级别控制,使得某些调试语句没有被输出到串口。1.2 实验思路默认的 ADBG_LEV 为 3000 ,将语句中的DBG_LEV 参数改为比默认的ADBG_LEV小即可1.3 实验关键代码/*串口调试程序的实现模块date*/* 定义调试级别,参加 Makefile 的 ADBG_LEVEL
7、定义,设置大于等于 ADBG_LEVEL*/ #defineDBG_LEV 3000moduleSerialDebugMusesinterfaceBoot;implementation/* 任务 :通过串口打印信息来调试*/taskvoidDebugSerial()uint8_tnum1=0x39;uint32_tnum2=floatfloat1=123.1234;/*ADBG ,格式类似于printf,第一个参数为调试等级,可以参见tos/lib/common/antdebug.h*/* 打印字符和字符串*/ADBG(DBG_LEV,"rnrnDEMOofSerialDebugrn
8、",'x');ADBG(DBG_LEV,"1.Thisisastring,andthisischar'%c'rn",'x');/* 打印 8 位的数字 */ADBG(DBG_LEV,"2.NUM1:HEX=0x%x,DEC=%drn",(int)(num1),(int)(num1);/* 打印 32 位数字 */ADBG(2000,"2.NUM2:HEX=0x%lx,DEC=%ldrn",(uint32_t)(num2),(uint32_t)(num2);/* 打印浮点数 */
9、ADBG(DBG_LEV,"3.FLOAT:%frn",float1);/* 启动事件处理函数,在 SerialDebug.nc 已经关联到 MainC.Boot 接口系统启动后会调用此函数*/eventvoidBoot.booted()postDebugSerial();1.4 实验截图图 1 未屏蔽前图 2屏蔽后1.5 实验心得此次实验加深了我对串口的了解与使用,是一次非常好的实验材料,受益匪浅。实验四串口通信1.1 实验要求实现一个串口实验,在串口助手中实现回显的功能。 (键盘键入的任何内容回车后显示在串口助手的终端 )1.2 实验思路直接在原有的UartStream
10、.receivedByte函数基础上修改,直接输出结果1.3 实验关键代码/*串口输入输出程序的实现模块authordate*/#include<strings.h>/* 定义此宏,将演示UartStream.receive函数,允许一次指定数量的数据*/#defineSERIALIO_RECEIVE#defineDBG_LEV3000moduleSerialIoMusesinterfaceBoot;usesinterfaceStdControlasUartStdControl;usesinterfaceUartStream;implementationuint8_tm_recei
11、ve_len;uint8_tm_echo_buf;uint8_tm_send_buf100;/* 显示一个菜单提示用户*/voidshowMenu()strcpy(m_send_buf,"rnrnDemoofSerioI/Orn1ToggleBLUELEDrn2 ToggleYELLOWLEDrn");/* 通过 UartStream.send可以发送字节数据*/callUartStream.send(m_send_buf,strlen(m_send_buf);/* 启动事件处理函数,在 SerialIo.nc 已经关联到 MainC.Boot 接口系统启动后会调用此函数*
12、/eventvoidBoot.booted()LED_BLUE_ON;LED_YELLOW_ON;callUartStdControl.start();showMenu();asynceventvoidUartStream.sendDone(uint8_t*buf,uint16_tlen,error_terror)/* 重新发送刚才接收的字符进行回显*/taskvoidshowMenuTask()showMenu();taskvoidlightLED()if(m_echo_buf='1')LED_BLUE_TOGGLE;/*切换蓝色LED 灯 */ADBG(DBG_LEV,&q
13、uot;YouchoosetotoggleBLUELEDrn");elseif(m_echo_buf='2')LED_YELLOW_TOGGLE;/*切换黄色LED 灯 */ADBG(DBG_LEV,"YouchoosetotoggleYELLOWLEDrn");/* 如果没有调用 receive 接收,则每接收到一个数据就会触发此事件 */ asynceventvoidUartStream.receivedByte(uint8_tbyte)m_echo_buf=byte;ADBG(DBG_LEV,"%cr",m_echo_bu
14、f);/ 将 byte 直接输出postlightLED();/* 在接收完receive 命令欲接收的长度后会调用此事件*/asynceventvoidUartStream.receiveDone(uint8_t*buf,uint16_tlen,error_terror)1.4 实验截图1.5 实验心得通过这次实验, 对串口通信的原理有了大致的了解, 同时也更加深刻了我对这门课的认识,巩固了我的理论知识。实验五 FLASH读写1.1 实验要求自己定义一个结构体,并且将结构体的内容写入到0x1fff8 ,并且在写完后将结构体的数据读取出来和原始数据进行比较。1.2 实验思路将原有代码的读写数组
15、改成结构体中的数组即可1.3 实验关键代码/* 定义调试级别,参加Makefile的 ADBG_LEVEL定义,设置大于等于ADBG_LEVEL*/#defineDBG_LEV3000moduleTestFlashCusesinterfaceBoot;usesinterfaceHalFlash;implementationstructdatauint8_tieee38;uint8_tieee48;structdataarr;taskvoidinitTask()uint8_ti;arr.ieee40=2;arr.ieee41=2;arr.ieee42=3;arr.ieee43=3;arr.iee
16、e44=4;arr.ieee45=4;arr.ieee46=5;arr.ieee47=5;ADBG(DBG_LEV,"readnown");callHalFlash.erase(uint8_t*)0x1fff8);for(i=0;i<8;i+=4)callHalFlash.write(uint8_t*)(0x1FFF8+i),(arr.ieee4+i),4);callHalFlash.read(arr.ieee3,(uint8_t*)0x1FFF8,8);ADBG(DBG_LEV,"readok.n");for(i=0;i<sizeof(ar
17、r.ieee3);+i)ADBG(DBG_LEV,"arr.ieee3%d=%dn",(int)i,(int)arr.ieee3i);eventvoidBoot.booted()ADBG(DBG_LEV,"Boot.bootedn");postinitTask();1.4实验截图1.5实验心得通过这次实验, 对 FlASH 读写的原理有了大致的了解,同时也更加深刻了我对这门课的认识,巩固了我的理论知识。实验六点对点通信1.1 实验要求完成一个两跳点对点的传输,让基站给节点1 发送一个消息,节点1 在接收到消息后将自己的蓝灯状态改变,延迟1s 后将消息继续
18、传递给节点2,节点 2 在接收到消息后将自己的黄灯状态改变。1.2 实验思路1.3 实验关键代码基站节点同节点2#defineDBG_LEV1000moduleP2PMusesinterfaceBoot;interfaceAtosControl;interfaceStdControlasUartStdControl;interfaceUartStream;interfaceAMSend;interfaceReceive;interfaceAMPacket;interfacePacket;implementationenumMAX_ADDRESS_LEN=5,INPUT_ADDRESS=0,IN
19、PUT_DATA=1,;message_tm_msg;uint8_tm_len=0;charm_address_strMAX_ADDRESS_LEN=0;uint8_tm_address_index=0;uint8_tm_input_type=0;/* 显示菜单 */taskvoidshowMenu()if(m_input_type=INPUT_DATA)/* 等待输入欲发送的数据*/ADBG_APP("rn*ToSend:rn");else/* 等待输入欲发送的地址*/ADBG_APP("rn# rn*MYNodeId=0x%x,Group=0x%x,desti
20、nation?rn",ADBG_N(callAMPacket.address(),ADBG_N(TOS_IEEE_PANID);m_input_type=INPUT_ADDRESS;m_address_index=0;/* 将从串口输入的地址字符串转化为真实地址*/uint16_tgetDestAddress()uint16_taddress=0;uint8_ti=0;if(m_address_index>MAX_ADDRESS_LEN)m_address_index=MAX_ADDRESS_LEN-1;for(i=0;i<m_address_index;+i)uint8
21、_tdigital=m_address_stri;if(digital>='A'&&digital<='F')digital=digital-'A'+10;elseif(digital>='a'&&digital<='f')digital=digital-'a'+10;elseif(digital>='0'&&digital<='9')digital=digital-'0
22、9;address=address*16+digital;returnaddress;/* 发送数据 */taskvoidsendData()uint8_ti;uint8_t*payload=callPacket.getPayload(&m_msg,NULL);uint16_taddress=callAMPacket.address();uint16_tdest_address=getDestAddress();ADBG_APP("rnrn*Sending.from%d,to%d,len=%drn",ADBG_N(address),ADBG_N(dest_addre
23、ss),ADBG_N(m_len);callAMSend.send(dest_address,&m_msg,m_len);/LED_BLUE_TOGGLE;/* 发送完处理 */eventvoidAMSend.sendDone(message_t*msg,error_tresult)/ADBG_APP("senddonen");ADBG_APP("*Sent%s!rn",(result=SUCCESS)?"OK":"FAIL"); if(result=SUCCESS)LED_BLUE_TOGGLE;else
24、LED_YELLOW_TOGGLE;m_len=0;m_input_type=INPUT_ADDRESS;postshowMenu();/* 节点启动完毕*/eventvoidBoot.booted()/* 开启射频 */callAtosControl.start();/* 开启串口通信*/callUartStdControl.start();LED_YELLOW_OFF;LED_BLUE_OFF;ADBG_APP("rn#rn");ADBG_APP("P2PDEMOMyAddress=0x%x,Group=0x%xrn",ADBG_N(callAMPa
25、cket.addr ess(),ADBG_N(TOS_IEEE_PANID);ADBG_APP("#rn"); m_input_type=INPUT_ADDRESS;postshowMenu();/* 从串口接收数据*/asynceventvoidUartStream.receivedByte(uint8_tc)if(c!='r')if(m_input_type=INPUT_DATA)/* 输入数据 */uint8_t*payload=(uint8_t*)callPacket.getPayload(&m_msg,NULL); if(m_len>
26、=callPacket.maxPayloadLength() return;payloadm_len+=c;ADBG_APP("%c",c);if(m_len<callPacket.maxPayloadLength()return;else/* 输入地址 */if(m_address_index<MAX_ADDRESS_LEN)m_address_strm_address_index+=c;ADBG_APP("%c",c);if(m_address_index<MAX_ADDRESS_LEN)return;/* 按下回车键或者到达最大长
27、度,则处理*/if(m_input_type=INPUT_DATA)postsendData();else/* 地址处理完毕,准备输入数据*/m_input_type=INPUT_DATA;postshowMenu();/* 实现接口 UartStream 接口中的事件 */ asynceventvoidUartStream.sendDone(uint8_t*buf,uint16_tlen,error_terror)asynceventvoidUartStream.receiveDone(uint8_t*buf,uint16_tlen,error_terror)/* 射频接收数据*/event
28、message_t*Receive.receive(message_t*msg,void*payload,uint8_tlen)uint8_ti;ADBG_APP("rn*Receive,len=%d,DATA:rn",ADBG_N(len); for(i=0;i<len;i+)ADBG_APP("%c",(uint8_t*)payload)i);ADBG_APP("rn");LED_YELLOW_TOGGLE;m_input_type=INPUT_ADDRESS;节点 1:(P2PC 中添加 Timer1 的定时器声明)con
29、figurationP2PCimplementationcomponentsP2PM;componentsMainC;P2PM.Boot->MainC.Boot;/* 串口收发组件*/componentsPlatformSerialC;P2PM.UartStdControl->PlatformSerialC;P2PM.UartStream->PlatformSerialC;/* 活动消息组件*/componentsnewPlatformMacC(123);componentsAtosMacC;P2PM.AtosControl->AtosMacC;P2PM.AMPacke
30、t->PlatformMacC;P2PM.Packet->PlatformMacC;P2PM.AMSend->PlatformMacC;P2PM.Receive->PlatformMacC;componentsnewTimerMilliC()asTimer1;P2PM.Timer1->Timer1;/添加 Timer1 的定时器声明#defineDBG_LEV1000moduleP2PMusesinterfaceBoot;interfaceAtosControl;interfaceStdControlasUartStdControl;interfaceUartSt
31、ream;interfaceAMSend;interfaceReceive;interfaceAMPacket;interfacePacket;interfaceTimer<TMilli>asTimer1;implementationenumMAX_ADDRESS_LEN=5,INPUT_ADDRESS=0,INPUT_DATA=1,;message_tm_msg;uint8_tm_len=0;charm_address_strMAX_ADDRESS_LEN=0;uint8_tm_address_index=0;uint8_tm_input_type=0;/* 显示菜单 */tas
32、kvoidshowMenu()if(m_input_type=INPUT_DATA)/* 等待输入欲发送的数据*/ADBG_APP("rn*ToSend:rn");else/* 等待输入欲发送的地址*/ADBG_APP("rn# rn*MYNodeId=0x%x,Group=0x%x,destination?rn",ADBG_N(callAMPacket.address(),ADBG_N(TOS_IEEE_PANID);m_input_type=INPUT_ADDRESS;m_address_index=0;/* 将从串口输入的地址字符串转化为真实地址*
33、/uint16_tgetDestAddress()uint16_taddress=0;uint8_ti=0;if(m_address_index>MAX_ADDRESS_LEN)m_address_index=MAX_ADDRESS_LEN-1;for(i=0;i<m_address_index;+i)uint8_tdigital=m_address_stri;if(digital>='A'&&digital<='F')digital=digital-'A'+10;elseif(digital>=
34、39;a'&&digital<='f')digital=digital-'a'+10;elseif(digital>='0'&&digital<='9')digital=digital-'0'address=address*16+digital;returnaddress;/* 发送数据 */taskvoidsendData()uint8_ti;uint8_t*payload=callPacket.getPayload(&m_msg,NULL);ui
35、nt16_taddress=callAMPacket.address();uint16_tdest_address=getDestAddress();ADBG_APP("rnrn*Sending.from%d,to%d,len=%drn",ADBG_N(address),ADBG_N(dest_address),ADBG_N(m_len);callAMSend.send(dest_address,&m_msg,m_len);/LED_BLUE_TOGGLE;taskvoidsendData1()/* 节点 1 发送数据 */uint8_ti;uint8_t*payl
36、oad=callPacket.getPayload(&m_msg,NULL);uint16_taddress=callAMPacket.address();uint16_tdest_address=03;/ 目的地址为3ADBG_APP("rnrn*Sending.from%d,to%d,len=%drn",ADBG_N(address),ADBG_N(dest_address),ADBG_N(m_len);callAMSend.send(dest_address,&m_msg,m_len);/LED_BLUE_TOGGLE;/* 发送完处理 */event
37、voidAMSend.sendDone(message_t*msg,error_tresult)/ADBG_APP("senddonen");ADBG_APP("*Sent%s!rn",(result=SUCCESS)?"OK":"FAIL"); if(result=SUCCESS)LED_BLUE_TOGGLE;elseLED_YELLOW_TOGGLE;m_len=0;m_input_type=INPUT_ADDRESS;postshowMenu();/* 节点启动完毕*/eventvoidBoot.boote
38、d()/* 开启射频 */callAtosControl.start();/* 开启串口通信*/callUartStdControl.start();LED_YELLOW_OFF;LED_BLUE_OFF;ADBG_APP("rn#rn");ADBG_APP("P2PDEMOMyAddress=0x%x,Group=0x%xrn",ADBG_N(call AMPacket.address(),ADBG_N(TOS_IEEE_PANID);ADBG_APP("#rn"); m_input_type=INPUT_ADDRESS;posts
39、howMenu();/* 从串口接收数据*/asynceventvoidUartStream.receivedByte(uint8_tc)if(c!='r')if(m_input_type=INPUT_DATA)/* 输入数据 */uint8_t*payload=(uint8_t*)callPacket.getPayload(&m_msg,NULL);if(m_len>=callPacket.maxPayloadLength()return;payloadm_len+=c;ADBG_APP("%c",c);if(m_len<callPac
40、ket.maxPayloadLength()return;else/* 输入地址 */if(m_address_index<MAX_ADDRESS_LEN)m_address_strm_address_index+=c;ADBG_APP("%c",c);if(m_address_index<MAX_ADDRESS_LEN)return;/* 按下回车键或者到达最大长度,则处理*/if(m_input_type=INPUT_DATA)postsendData();else/* 地址处理完毕,准备输入数据*/m_input_type=INPUT_DATA;posts
41、howMenu();/* 实现接口UartStream 接口中的事件*/asynceventvoidUartStream.sendDone(uint8_t*buf,uint16_tlen,error_terror)asynceventvoidUartStream.receiveDone(uint8_t*buf,uint16_tlen,error_terror)/* 射频接收数据*/eventmessage_t*Receive.receive(message_t*msg,void*payload,uint8_tlen)uint8_ti;callTimer1.startPeriodic(1000)
42、;ADBG_APP("rn*Receive,len=%d,DATA:rn",ADBG_N(len); for(i=0;i<len;i+)ADBG_APP("%c",(uint8_t*)payload)i);ADBG_APP("rn");LED_YELLOW_TOGGLE;m_input_type=INPUT_ADDRESS;/* 定时器事件处理函数*/eventvoidTimer1.fired()/定时器结束后执行postsendData1();/ 给节点 2 发送数据callTimer1.stop();1.4 实验截图1.5
43、实验心得通过这次实验, 对点对点的原理有了大致的了解, 同时也更加深刻了我对这门课的认识,巩固了我的理论知识。对于延时发送可以通过定时器来实现也更为熟悉。实验七射频广播1.1 实验要求写一个射频广播实验, 包括基站和两个节点的程序。 使得两个节点在接收到基站的三个广播信号停止接收广播数据。1.2 实验思路添加全局变量,每次广播成功变量自减一次,判断是否为0,为 0 时停止广播。1.3 实验关键代码#defineDBG_LEV1000moduleBroadcastPusesinterfaceBoot;interfaceAtosControl;interfaceAMSend;interfaceRe
44、ceive;interfaceAMPacket;interfacePacket;interfaceTimer<TMilli>asSensorTimer;implementationmessage_tm_msg;inti=3;/ 定义控制广播次数的参数/* 发送数据 */taskvoidsendData()uint16_tm_len=0x00;uint8_t*payload=callPacket.getPayload(&m_msg,NULL);uint16_taddress=callAMPacket.address();*payload=0x01;m_len=0x01;if(
45、address=0x01)callAMSend.send(0xFFFF,&m_msg,m_len);LED_BLUE_TOGGLE;/* 发送完处理 */eventvoidAMSend.sendDone(message_t*msg,error_tsuccess)/* 节点启动完毕*/eventvoidBoot.booted()/* 开启射频 */callAtosControl.start();LED_YELLOW_ON;LED_BLUE_ON;callSensorTimer.startPeriodic(1000);eventvoidSensorTimer.fired()postsend
46、Data();/* 射频接收数据*/eventmessage_t*Receive.receive(message_t*msg,void*payload,uint8_tlen)LED_BLUE_TOGGLE;i=i-1;if(i=0)callAtosControl.stop();/ 每次广播完成后自减1,减到 0 时停止广播1.4 实验心得通过这次实验,对射频广播的原理有了大致的了解,同时也更加深刻了我对这门课的认识,巩固了我的理论知识。实验八传感通信1.1 实验要求每次基站发送一个采集命令,发送 1,节点每隔 1s 采集温湿度数据, 发送 2 ,节点每隔 2s 采集温湿度数据,以此类推,并且将
47、采集的数据发送到基站。1.2 实验思路对上个实验P2PM 的代码文件以及本实验的CommSensor 文件进行修改,基站发送数据包节点,数据中参数作为时间间隔,节点中加入一个计数器,对参数乘1000 ,即秒数。同时利用 P2PM 中的代码把本来发送的光照数据改为温湿度传感器数据。1.3 实验关键代码基站代码:#defineDBG_LEV1000moduleCommSensorBasePusesinterfaceBoot;interfaceStdControlasUartStdControl;interfaceUartStream;interfaceAtosControl;interfaceAM
48、Send;interfaceReceive;interfaceAMPacket;interfacePacket;implementationenumMAX_ADDRESS_LEN=5,INPUT_ADDRESS=0,INPUT_DATA=1,;message_tm_msg;uint8_tm_len=0;charm_address_strMAX_ADDRESS_LEN=0;uint8_tm_address_index=0;uint8_tm_input_type=0;/* 显示菜单 */taskvoidshowMenu()if(m_input_type=INPUT_DATA)/* 等待输入欲发送的数据*/ADBG(DBG_LEV,"rn*ToSend:rn");else/* 等待输入欲发送的地址*/ADBG(DBG_LEV,"rn# #rn*MYNodeId=0x%x,Group=0x%x,destination?rn",ADBG_N(callAMPacket.address(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公用品采购订单执行确认及收货催促函6篇范本
- 护理技能操作规范演示
- 供应链稳定管理保证承诺书8篇
- 高端品牌产品使用承诺书5篇
- 急救护理与应急处理
- 2024-2025学年中医执业医师通关考试题库含答案详解【轻巧夺冠】
- 2026年老年养生运动操课件
- 艺术品保护领域承诺书(6篇)
- 2024-2025学年度粮油食品检验人员模拟题库及答案详解1套
- 业务年度总结及计划汇报函(7篇)
- 2024年江苏信息职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 板材行业销售渠道分析
- 2024地面用晶体硅光伏组件环境适应性测试要求第1部分:一般气候条件
- 合同税率变更补充协议
- 教科版四年级下册科学全册教案
- 苏教版五年级下册数学 列方程解决两步实际问题 教案(教学设计)
- 人教版《体育与健康》水平二 跳跃单元作业设计
- 《煤气安全作业》培训教材
- 函数的零点与方程的解(说课课件)
- GB/T 29061-2012建筑玻璃用功能膜
- 无机材料工艺学-陶瓷2-原料
评论
0/150
提交评论