资源描述
1.时间表调度实验
#include "bconstant.h"
extern "C" _declspec(dllexport) void initSchTable(int ScheduleTable[SchTabLen][SchTabWdh])
{ int i,j;
for(i=0;i<SchTabLen;i++)
for(j=0;j<SchTabWdh;j++)
{
if(j==1) //脉冲检测
{
ScheduleTable[i][j]=1;
}
if((i==0)&&(j==0)) //摘挂机检测
ScheduleTable[i][j]=1;
if(((i==0)||(i==10))&&(j==2))//位间隔检测
{
ScheduleTable[i][j]=1;
}
}
return;
}
2.摘挂机检测实验
#include "bconstant.h"
extern "C" _declspec(dllexport) void scanfor200(int linestate200[LINEMAX], int linestate[LINEMAX],UpOnnode * head1,UpOnnode * end1)
{
bool result_up,result_down;
int i;
for(i=0;i<LINEMAX;i++)
{
result_up=(linestate200[i]-1)&&linestate[i];//摘机检测
if(result_up==1)//摘机程序
{
end1->next=new UpOnnode;
end1=end1->next;
end1->phonestate=ehandup;
end1->linenum=i;
end1->next=0;
}
else
{
result_down=linestate200[i]&&(linestate[i]-1);//挂机检测
if(result_down==1)//挂机程序
{
end1->next=new UpOnnode;
end1=end1->next;
end1->phonestate=ehandon;
end1->linenum=i;
end1->next=0;
}
}
}
for(i=0;i<LINEMAX;i++)
linestate200[i]=linestate[i];
return;
}
//此函数不需修改
extern "C" _declspec(dllexport) void freenode(UpOnnode * node)
{
delete node;
}
3.脉冲计数实验
#include "bconstant.h"
int nor_op(int a,int b);
int or_op(int a,int b);
extern "C" _declspec(dllexport) void scanpulse(int linestate[LINEMAX],int linestate10[LINEMAX],int change[LINEMAX],int fchange[LINEMAX],int pulsenum[LINEMAX])
{
int i;
for(i=0;i<LINEMAX;i++)
{
change[i]=nor_op(linestate[i],linestate10[i]);//变化检测
fchange[i]=or_op(fchange[i],change[i]);//首次变化
if(change[i]&&linestate[i])
{
pulsenum[i]++;
}
}
for(i=0;i<LINEMAX;i++)
linestate10[i]=linestate[i];
return;
}
//此函数不需要修改
int nor_op(int a,int b)
{
if(a==b)
return 0;
else
return 1;
}
//此函数不需要修改
int or_op(int a,int b)
{
if((a==0)&&(b==0))
return 0;
else
return 1;
}
4.位间隔识别实验
#include "stdio.h"
#include "bconstant.h"
int nor_yu(int a,int b);
int or_yu(int a,int b);
int not_yu(int a);
int and_yu(int a,int b);
extern "C" _declspec(dllexport)
void scandigit(int linestate[LINEMAX],int linestate100[LINEMAX],int pulsenum[LINEMAX],int fchange[LINEMAX],int lfchange[LINEMAX],Digitnode * head2,Digitnode * end2)
{
int i;
for(i=0;i<LINEMAX;i++)
{
if(and_yu(not_yu(fchange[i]),lfchange[i])==1)
{
if(linestate100[i]==1)
{
end2->next=new Digitnode;
end2=end2->next;
end2->num=pulsenum[i];
end2->linenum=i;
end2->next=0;
pulsenum[i]=0; // 线路脉值清零
}
else
{
//是挂机引起的 不用处理
}
}
else
{
//下一线路
}
}
for(i=0;i<LINEMAX;i++)
{
lfchange[i]=fchange[i];
fchange[i]=0;
linestate100[i]=linestate[i];
}
return;
}
//此函数不需要修改
extern "C" _declspec(dllexport) void freedigitnode(Digitnode * b)
{
delete b;
}
//此函数不需要修改
int nor_yu(int a,int b)
{
if(a==b)
return 0;
else
return 1;
}
//此函数不需要修改
int or_yu(int a,int b)
{
if((a==0)&&(b==0))
return 0;
else
return 1;
}
int not_yu(int a)
{
if(a==1)
return 0;
else
return 1;
return 0;
}
int and_yu(int a,int b)
{
if((a==b)&&(a==1))
return 1;
else
return 0;
return 0;
}
5.软件送音实验
#include "bconstant.h"
extern "C" _declspec(dllexport) int decide_ringtype(Userstate state)
{
// 1:拨号音;2:振铃音;3:回铃音;4:忙音; 5:嚎鸣音;6:空号音;
switch(state)
{
case 0:return 1; //主叫摘机
case 1:return 4; //被叫忙
case 2:return 4; //通话中对方先挂机
case 3:return 4; //拨号音超时
case 4:return 4; //收号定时器超时
case 5:return 4; //连接定时器超时
case 6:return 4; //空号音超时
case 7:return 4; //回铃音定时器超时
case 8:return 5; //忙音超时
case 9:return 6; //被叫空号
case 10:return 2; //(被叫)呼叫进入
case 11:return 3; //(主叫)被叫接通
break;
}
return 0;
}
6.驱动交换网络实验
#include "bconstant.h"
extern "C" _declspec(dllexport)
void connect_network(int timeslice_tnet[TIMESLICEMAX],int timeslice1,int timeslice2,int tag)
{
if(tag==0)//tag=0表示拆除网络。
{
timeslice_tnet[timeslice1]=0;
timeslice_tnet[timeslice2]=0;
}
else
{
timeslice_tnet[timeslice1]=timeslice2;
timeslice_tnet[timeslice2]=timeslice1;
}
return;
}
展开阅读全文