📄 mybase.h
字号:
#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 + -