⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mybase.h

📁 170话费查询系统
💻 H
📖 第 1 页 / 共 2 页
字号:
#include	<windows.h>
#include	<stdlib.h>
#include	<stdio.h>
#include	<string.h>
#include	<conio.h>
#include	<time.h>
#include	<fcntl.h>
#include	<afxmt.h>
#include    <winbase.h>

#include	"myvc.h"

#include	<srllib.h>
#include	<dxxxlib.h>
#include	<dtilib.h>
#include	<sctools.h>

/************************************************************************************************
 mybase.h  基本数据定义
************************************************************************************************/
#define		TheAppID			1		// 查询程序ID
#define		DEBUG				true
#define		MAX_SQL_LEN			1024	// SQL 语句的最大长度
/*********************************************************************
*
*
*							常量定义
*
*
*********************************************************************/
#define		MAXCHAN				30		// 最大通道数
#define		DNIS_LEN			3		// 被叫号码长度 (170)
#define		ANI_LEN				7		// 主叫号码长度
#define		ThreadNumber		6		// 工作线程数

#define		MaxDataQueryTime		15		// 数据库查询最长耗时
#define		MaxWaitKeyTime			7		// 等待用户输入一个键的最长事件
#define		MaxUserErrorTimes		3		// 用户输入错误最大次数
#define		MaxAdjustTableLen		6		// 值向修正表长

#define     AniWaitTime             3       // 等待通话建立


//线程ID
#define		_nodefine		   -1

#define		_dispatcher			0
#define		_main				1				
#define		_singleinput		2
#define		_monthinput			3        
#define		_multiplay 			4                
#define		_timeout   			5                
#define		_timetrigger		6        
                          	
//main线程的状态
#define     main_sleep			99		// 主线程空闲
#define		waiting_call		100		// 等待电话拨入
#define		call_coming			105		// 电话拨入
#define		read_ani			110		// 读主叫号码
#define     ani_wait            112     // 等待通话建立
#define		ani_recieve			115		// 主叫已接收
#define		verify_ani			120		// 验证主叫号码
#define		ani_valid			125		// 主叫号码有效
#define		ani_invalid			130		// 主叫无效
#define		wel_play			135		// 播放欢迎音
#define		play_over			140		// 播放结束
#define		vm_1_play			145		// 播放语音菜单1
#define		cmd0_switch			150		// 切换到输入线程,等待命令
#define		cmd0_hf				155		// 开始查询话费
#define		cmd0_xd				160		// 开始查询详单
#define		cmd0_qf				165		// 开始查询欠费
#define		cmd0_ad				170		// 电信业务宣传
#define		hf_play				180		// 播放话费查询
#define		cmd1_switch			190		// 等待用户输入
#define		cmd1_qry_djdy		200		// 查询单机单月费用
#define		cmd1_qry_tshou		210		// 查询托收费用
#define		cmd1_up				220		// 返回上一级菜单vm_1
#define		xd_play				230		// 播放详单查询
#define		cmd2_switch			250		// 等待用户输入
#define		cmd2_qry_ctxd		260		// 查询长途详单
#define		cmd2_qry_bdwxd		270		// 查询本地网详单
#define		cmd2_qry_168xd		280		// 查询声讯详单
#define		cmd2_up				290		// 返回上一级菜单vm_1
#define		qry_hint			300		// 查询提示音“XXXX查询...”
#define     month_switch		325		// 切换至 monthinput线程
#define		month_get			330		// 用户输入了有效月份
#define		qry_data			340		// 查询数据
#define		qry_notfound		345		// 查询结束,无数据
#define     qry_ok				350		// 查询结束,有数据
#define     qry_timeout			360		// 查询超时
#define		play_result			370		// 播放查询结果
#define		play_switch			375		// 播放查询结果
#define		ad_play				380		// 播放业务宣传
#define		ad_playover			390		// 业务宣传结束
#define		ad_asknext			380		// 宣传结束的下一步动作
#define		cmd3_switch			400		// 等待用户输入下一步动作
//SingleInput线程的状态
#define		sgipt_idle			410		// 空闲状态
#define		sgipt_start			420		// 开始等待用户按键
#define		sgipt_waitkey		430		// 开始等待用户按键
#define		sgipt_timeout		440		// 用户按键超时
#define		sgipt_keypress		450		// 接收到用户按键
#define		sgipt_verify		455		// 验证按键
#define		sgipt_keyerr		460		// 按键无效
#define		sgipt_playerr		465		// 播放“用户按键无效”
#define		sgipt_errover		470		// 播放“用户按键无效”结束
#define		sgipt_alwayserr		475		// 多次案件无效
//monthInput线程状态
#define		mth_idle			480		// 空闲状态
#define		mth_start			483		// 等待用户输入
#define     mth_playmonth		485		// 播放提示音:请输入
#define     mth_monthover		487		// 播放提示音完毕
#define		mth_wait			490		// 等待用户输入
#define		mth_timeout			500		// 用户输入超时
#define		mth_numget			510		// 接收到数字
#define		mth_check			515		// 接收到数字
#define		mth_numerr			520		// 不是月份数字
#define     mth_playerr         525		// 播放“无效月份数字,请重输”
#define		mth_nodata			530		// 月份无效(无数据)
#define     mth_playnodata		535		// 播放“该月没有数据,请重输”
#define		mth_valid			540		// 月份有效
#define		mth_alwayserr		550		// 多次输入无效
//MutiPlay线程状态
#define		mply_idle			560		// 空闲状态
#define		mply_sleep			563		// 休眠等待状态
#define		mply_start			565		// 开始播报语音
#define		mply_chkdata		568		// 检查数据
#define		mply_result_prex	569		// 播放结果提示音
#define		mply_nodata			570		// 没有数据
#define		mply_chkok			571		// 有数据
#define		mply_playnodata		572		// 播放没有数据
#define		mply_playnodata		572		// 播放没有数据
#define		mply_playing		575		// 播报....
#define		mply_playover		580		// 播报结束
#define		mply_demandnext		581		// 请求下一条语音
#define		mply_chknext		583		// 检查下一条记录
#define		mply_nextok			585		// 下一条记录存在
#define		mply_nextnull		588		// 没有下一条记录
#define		mply_asknext		590		// 询问下一步动向
#define		cmd4_switch			600		// 切换至读键线程
#define		cmd4_replay			610		// 重放结果
#define		voc_reset			620		// reset语音链
#define		voc_resetok			630		// reset语音链
//TimeOut线程状态
#define		tm_idle				640		// 空闲状态
#define		tm_start			650		// 开始工作
#define		tm_check			660		// 检查服务类型
#define		tm_systmout			670		// 系统操作超时
#define		tm_usertmout		680		// 用户操作超时
#define		tm_alwayserr		690		// 用户多次输入无效
#define		tm_userhangup		700		// 用户主动挂机
#define		tm_anirefuse		710		// 主叫号码被拒绝。
#define		play_systmout		720		// 播放系统超时
#define		play_sysover		730		// 播放系统超时结束
#define		play_usertmout		740		// 播放用户超时
#define		play_userover		750		// 播放用户超时结束
#define		play_bye			760		// 播放再见"谢谢您的查询,再见!"
#define		play_byeover		770		// 播放再见"谢谢您的查询,再见!"
#define		tm_voc_hangup		780		// 挂机
#define		tm_restart			790		// 端口初始化,返回主线程
#define		sys_exit			795		// 关闭通道

//语音节点类型 
#define		ND_INDEX	"INDEX"
#define		ND_DELAY	"DELAY"
#define		ND_DIGIT	"DIGIT"
#define		ND_EOV		"EOV"
#define		ND_ALLOVER	"ALLOVER"



typedef		int					THREAD;
typedef		int					STATE;
typedef		int					EVT;


/******************************************************************************
*               SingleInput的 “键值-流程”[Key -- Execute]对照表
*
* 当调用线程切换至 SingleInput, 等待输入某几个键时,调用线程设置此表,告诉
* SingleInput线程准备读哪几个键,如果按要求读到它们,则该分别切换到哪个线程
* 的哪个状态下。同时还告诉SingleInput,如果用户按键无效,需要切换到哪里。
* 
* 用户输入超时,或者多次输入无效,以及用户挂机事件则由SingleInput自行切换到
* TimeOut线程。
*******************************************************************************/
//“键值-流程”(值向)对照表
typedef struct SingleInput_KeyTable_st{
	char			key;				// 键值
	THREAD			goto_thread;		// 下一步执行线程
	STATE			goto_state;			// 下一步执行状态

}type_SGIPT_KEYTABLE;


//SingleInput IO参数表
typedef struct SingleInput_IO_st{
	int				num;				// 读入键的个数
	int				errortimes;			// 输入无效键的次数。
	char            buffer[20];
	type_SGIPT_KEYTABLE	keytable[20];	// 键值表

}type_SGIPT_IO;


/*******************************************************************************
*                     
*					    系统状态机  M.S.T
* 
*                      ( Machine State Table )
* 
* 
********************************************************************************/
//状态结构
typedef struct Machine_State_st{	
	int				no;					//编号	
	THREAD			curr_th;			//当前线程
	STATE			curr_st;			//当前状态
	EVT				event;				//事件	
	THREAD			next_th;			//下一线程
	STATE			next_st;			//下一状态
	long			timeout;			//超时标志(以10毫秒计)	

}MachineState;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -