北邮大三下现代交换原理实验二摘挂机检测实验_第1页
北邮大三下现代交换原理实验二摘挂机检测实验_第2页
北邮大三下现代交换原理实验二摘挂机检测实验_第3页
北邮大三下现代交换原理实验二摘挂机检测实验_第4页
北邮大三下现代交换原理实验二摘挂机检测实验_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称: 现代交换原理与通信网技术 实验名称: 摘挂机检测实验 班级: 09211311 学号: 姓名: schnee 指导教师: 1. 实验目的摘挂机检测实验用来考查学生对摘挂机检测原理的掌握情况。2. 实验原理及设计 设用户在挂机状态时扫描输出为“0”,用户在摘机状态时扫描输出为“1”,摘挂机扫描程序的执行周期为200ms,那么摘机识别,就是在200ms的周期性扫描中找到从“0”到“1”的变化点,挂机识别就是在200ms的周期性扫描中找到从“1”到“0”的变化点,该原理的示意图如下所示: 在我们的实验中,我们把前200ms的线路状态保存以备这次可以读取,同时读出这次的线路状态,把

2、前200ms的线路状态取反与这次的线路状态相与,如果为1,就说明检测到摘机消息了。同理,我们把这次的线路状态取反再与前200ms的线路状态相与,如果为1就说明检测到挂机消息了,然后把摘挂机信号作为事件放入摘挂机队列中。3. 实验主要数据结构函数功能为:检测到摘、挂机事件,并把该事件放入到摘挂机事件队列中。 函数原型:void scanfor200(int linestate200LINEMAX,int linestateLINEMAX,UpOnnode * head1, UpOnnode* end1);其中LINEMAX为线路总数,是定义在"bconstant.h"中的一个

3、宏,linestate200LINEMAX为已保存的200ms前线路状态,linestateLINEMAX为当前的线路状态,head1,end1为摘挂机队列的首尾指针,该队列已经在主程序中进行了初始化。我们所要做的就是把检测到的摘挂机事件以摘挂机队列节点的形式插入到摘挂机事件队列中。数据结构说明: 头文件:"bconstant.h"(以下的数据结构都已在该文件中定义)LINEMAX :最大线路数;int linestate200LINEMAX,linestateLINEMAX:线路从0开始编号;状态:1:有电流,0无电流;enum UporOn ehandup,ehando

4、n :为摘挂机区别符:ehandup表示摘机,ehandon表示挂机;struct UpOnnode /摘挂机队列节点结构 UporOn phonestate; /摘挂机区别符; int linenum; /线路号(从0开始); struct UpOnnode* next; /指向下一节点的指针; ;注意事项:1) 我们编写的模块是基础实验部分预加载的本局交换系统的一个模块而已,在系统中head1头指针和end1尾指针已经完成初始化。为方便起见,我们的摘挂机事件队列是一个包含头节点的单向链表,并且头指针指向该头节点,尾指针在初始化时也指向了该节点。所以在我们的函数编写中应保证头指针始终指向该头

5、节点上、尾指针指向摘挂机事件队列的最末一个节点。2) 注意把这次扫描的线路状态值保存在前200ms扫描线路状态数组中,以便主程周期调用。4. 实验效果检验程序执行后能正确检测摘挂机动作并且能进行通话,与预计结果相符,试验成功。5. 实验步骤(1) 预习实验内容,了解实验要求;(2) 熟悉实验平台和测试环境;(3) 编写C程序实现所要求的功能;(4) 测试程序;(5) 完成实验报告。6. 实验主体流程图 7. 实验代码#include "bconstant.h"extern "C" _declspec(dllexport) void scanfor200(

6、int linestate200LINEMAX, int linestateLINEMAX,UpOnnode * head1,UpOnnode * end1)int up,down;for(int i =0;i<=LINEMAX;i+)struct UpOnnode* now = new struct UpOnnode;up =(!linestate200i)&&linestatei;down=(!linestatei )&&linestate200i;if(up | down)if(up) now->phonestate=ehandup;else

7、now->phonestate=ehandon;now->linenum = i;now->next = 0;end1->next=now;end1=now;return; /此函数不需修改extern "C" _declspec(dllexport) void freenode(UpOnnode * node) delete node;8. 实验结果程序执行后能正确检测摘挂机动作并且能进行通话,与预计结果相符,试验成功。9. 实验心得这次实验依旧比较简单,编程实现也还比较顺利。此外,由于较好的代码能力,我的代码编写也比其他同学简洁不少。只是其间由于实验平台反应稍慢,在把新节点挂到链尾时,若将now->next赋为0时一开始没能实验成功,改为end1->next才成功。于是怀疑end1并非为结尾,其后可能指针仍有所指。后来问老师,得知系统里end1->next初始为0,再次将now->next赋为0,这次则实验成功了。还发现不能赋为n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论