📄 myvc.h
字号:
// myvc.h : main header file for the MYVC DLL
//
#if !defined(AFX_MYVC_H__012CCB86_D68E_11D4_8775_000103027259__INCLUDED_)
#define AFX_MYVC_H__012CCB86_D68E_11D4_8775_000103027259__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
//导出函数说明
#define TheControlAppName "湘潭电信 - 170 受理监控系统"
#define TheServerAppName "170 - 数据服务程序"
#define TheClientAppName "170 - 语音受理程序"
#define TheCuiJiaoAppName "湘潭 - 话费催缴"
//用户消息
#define WM_QueryDone 1126 //查询结束消息
#define WM_ShowSysMessage WM_COPYDATA //消息显示请求
#define WM_OneVoiceChainPlayed 1128 //一条语音链播放完毕
#define WM_VoiceChainProduct 1129 //语音链生产完毕
#define WM_ResetVoiceChain 1130 //重新产生语音链
#define WM_ResetVoiceDone 1131 //语音链重新产生
#define WM_StartWork 1132 //启动服务
#define WM_StopWork 1133 //结束服务(包括停止和退出)
#define WM_ShowMyWin 1134 //显示窗口
#define WM_HideMyWin 1135 //隐藏窗口
#define WM_MyAppStarted 1136 //应用程序已启动
#define WM_MyAppClosed 1137 //应用程序已启动
#define WM_UpdateMonth 1138 //更新查询月份
#define WM_UpdateQfTable 1139 //当前欠费表
#define WM_DataOperate WM_COPYDATA //数据操作(OP_WriteLog,OP_PleaseQuery)
#define OP_PleaseQuery 10 //数据查询请求
#define OP_WriteLog 11 //写日志请求
//6种查询的语法名
#define MaxQueryDemand 10 //最多的解析种
#define Query_CTXD "Query_CTXD" //长途详单查询语法名
#define Query_BDWXD "Query_BDWXD" //长途详单查询语法名
#define Query_168XD "Query_168XD" //声讯详单查询语法名
#define Query_DJDY "Query_DJDY" //单机话费查询语法名
#define Query_TSHOU "Query_TSHOU" //托收话费查询语法名
#define Query_QF "Query_QF" //欠费查询语法名
//用户动作
#define Demand_CTXD "长途详单" //长途详单查询语法名
#define Demand_BDWXD "本地详单" //长途详单查询语法名
#define Demand_168XD "声讯详单" //声讯详单查询语法名
#define Demand_DJDY "单机单月" //单机话费查询语法名
#define Demand_TSHOU "托收话费" //托收话费查询语法名
#define Demand_QF "欠费" //欠费查询语法名
#define Demand_HELP "了解业务" //欠费查询语法名
//7种语音解析方法名
#define EXP_DATE "EXP_DATE" //日期型:
#define EXP_TIME "EXP_TIME" //时间型:
#define EXP_SECOND "EXP_SECOND" //秒型时间
#define EXP_DIGITSTR "EXP_DIGITSTR" //数字串:
#define EXP_MONEY_YUAN "EXP_MONEY_YUAN" //货币型:
#define EXP_MONEY_FEN "EXP_MONEY_FEN" //货币型:
#define EXP_REAL "EXP_REAL" //数字型
#define EXP_NULL "EXP_NULL" //空解析型
//数字发音索引名
#define V_DIAN "点" //.
#define V_GE "个" //个
#define V_SHI "十" //十
#define V_BAI "百" //百
#define V_QIAN "千" //千
#define V_WAN "万" //万
#define V_YI "亿" //亿
//时间发音索引名
#define V_YEAR "年"
#define V_MONTH "月"
#define V_DAY "日"
#define V_HH "点"
#define V_MM "分"
#define V_SS "秒"
#define V_XIAOSHI "小时"
#define V_CONG "从"
#define V_ZHI "至"
//货币发音索引名
#define V_YUAN "元"
#define V_JIAO "角"
#define V_FEN "分"
#define SEP_Digit '%' //数字解析符
#define SEP_Delay '~' //延时解析符
//共享资源(内存文件)
#define GlobalCommuAreaName "xt170_app_Gca" //全局通讯区名,名称固定,DLL内部封装
#define SemaphoreFileName "xt170_sem_300" //共享文件名
#define SQLCmdFilePrex "xt170_sqlcmd" //SQL Command文件名前缀
#define QuerySyntaxStructAreaName "xt170_qssa" //查询语法结构区名
#define VoiceFileIndexTableName "xt170_vfit" //语音索引文件表名
#define ChannelVoiceChainAreaName "xt170_cvca" //通道语音链表区名
//资源锁(互斥体mutex)
#define MUTEX_GCA "my_mutex_gca" //GCA资源锁
#define MUTEX_SEMAPHORE "my_mutex_sem" //信号灯资源锁
#define MUTEX_SQLCMD "my_mutex_sqlcmd" //SQLCMD资源锁
#define MUTEX_QSSA "my_mutex_qssa" //QSSA资源锁
#define MUTEX_VFIT "my_mutex_vfit" //VFIT资源锁
#define MUTEX_CVCA "my_mutex_cvca" //CVCA资源锁
#define TXT_LEN 2048
#define MaxRefuseCall 200
#define MaxVoiceIndexNameLen 16 //语音索引名长度
#define VoiceChainContentLen 20 //语音节点的内容长度
#define MaxVoiceChainNode 512 //语音链表最大长度
#define MaxVFIT 512 //vfit语音索引的个数
//语音文件索引表
typedef struct VocieFileIndexTable_st{
char indexname[MaxVoiceIndexNameLen]; //语音索引名
char vocfile[20]; //语音文件名
char io_offset[10]; //偏移量
char io_length[10]; //长度
char filehandle[10]; //语音文件打开后得到的文件句柄
}VFIT;
//语音链表节点
typedef struct VoiceChainNode_st {
char NodeType[6]; //节点类型 = INDEX|DELAY|DIGIT|EOV
char Content[VoiceChainContentLen]; //节点值
}type_VoiceChainNode;
//通道语音链表区
typedef struct ChannelVocieChainArea_st{
char RecordNum[5]; //需要解析的链表数(记录数)。
char ExpNum[5]; //已经解析的链表数,初始化=0
char PlayNum[5]; //已经播报的链表数,初始化=0
type_VoiceChainNode VoiceChain[2][MaxVoiceChainNode]; //2条语音链
}CVCA;
//查询语法结构区
typedef struct QuerySyntaxStructArea_st{
char Active[2]; //本结构块是否启用。Y/N
char QuerySyntaxName[20]; //查询语法名,与表T_SYS_SQLEXP.QuerySyntaxName对应。
char BaseSQLSyntax[1024]; //基本查询语句,与通讯结构SQLCMD.SQLCommand对应。
char DestTable[512]; //目标数据表
char VoiceExpTable[2048]; //和查询字段对应的语音解析表
}QSSA;
//全局通讯区
typedef struct GlobalCommuArea_st{
char ChannelNumber[4]; //通道个数,对应 t_sys_config.VC_P_NUM.
char SemaphoreName[20]; //信号等文件名,对应 T_SYS_CONFIG.VC_MAP
char SQLCommandName[20]; //SQL Command文件名,对应 T_SYS_CONFIG.VC_SQL_COMMU
char SQLResultName[20]; //数据结果文件名 与 T_SYS_CONFIG.VC_SQL_DATAFILE 对应。
char SQLResultSaved[80]; //数据结果存放路径,与 T_SYS_CONFIG.VC_SQL_DATASAVE。
char ControlAppName[60]; //主控程序名名(主窗口名),用于发消息
//对应数据库 T_SYS_CONFIG.VC_CONTROL_APP
char DBServerAppName[60]; //数据服务程序名(主窗口名),用于发消息
//对应数据库 T_SYS_CONFIG.VC_DBSERVER_APP
char DBClientAppName[60]; //数据请求程序(语音受理程序)名,用于发消息。
//对应数据库 T_SYS_CONFIG.VC_DBCLIENT_APP
char CuiJiaoAppName[60]; //催缴程序名,用于发消息。
char StartQueryMonth[3]; //起始查询月,对应数据库T_SYS_CONFIG.StartQueryMonth
char EndQueryMonth[3]; //终止查询月,对应数据库T_SYS_CONFIG.EndQueryMonth
char CurQfTable[3]; //当前欠费表
char RefuseCall[MaxRefuseCall][15];//禁止呼入的主叫号码表,与t_data_invalidcall对应。
char Log_Utpt[160]; //查询程序日志目录
char InitStatus[10]; //查询程序窗口大小
char InitHide[6]; //查询程序窗口显示状态
char VFIT_LEN[6]; //语音列表的长度。
char vox_path[160]; //vox 文件目录
char txt[TXT_LEN]; //系统屏显字段
}GCA;
//信号灯
typedef struct sem_st { //信号灯单元结构
char chn_value[10]; //语音卡通道(端口)状态值
char app_id[10]; //应用程序ID
char txt[TXT_LEN]; //屏显信息
} SEMAPHORE;
//SQL Command通讯文件
typedef struct sql_cmd_st{
char File_ID[6]; // 文件序列号,和端口号相同
char Command_ID[20]; // 查询方法名
char SQLCommand[2048]; // SQL 命令
char ExecuteStatus[20]; // 执行状态 'SQL_Request', 'SQL_Running', 'SQL_Done', 'Idel'
char DATA_filed[1024]; // 查询结果标题 "name:sex:age:",每个字段名以:分隔。
char DATA_found[20]; // 查询结果 "NODATA | FOUND | NOFOUND | NOUSER | SQLERROR"
char DATA_filename[80]; // 数据结果文件名
char DATA_separator[6]; // 字段分隔符
char DATA_rowsnumber[6]; // 记录条数
}SQLCMD;
///////////////////////////////////////////////////////////////////////////////////////////////
//
// 函数 int PASCAL ReplaceStr(char * str, char *ch_1, char *ch_2, char *n, char * rep, char *outstr)
//
// 功能:将 str中的第 n个以ch_1开头,ch_2结尾的子串替换成rep, 然后返回outstr.
// 参数:
// str : 字符串, 如 "我喜欢<红与白>,不喜欢<老人与海>"
// ch_1 : 起始字符,如 '<'
// ch_2 : 终止字符,如 '>'
// num : 第n个以ch_1开头,ch_2结尾的字符串。n = 2.
// rep : 替换字符串,如 "<飘>"
// outstr : 结果字符串,如以上参数则返回: "我喜欢<红与白>,不喜欢<飘>"
// 如果 ch_2 为空字符串,则将 ch_1位置的字符视做一个字符串进行替换。
//
// 返回:被替换的字符串个数
//
///////////////////////////////////////////////////////////////////////////////////////////////
extern "C" _declspec ( dllexport ) int PASCAL ReplaceStr(char * str, char *ch_1, char *ch_2, char *num, char * rep, char *outstr);
/************************************************************
* NAME: ChnPrintf(int cn, char *field, char *szFormat, ...))
* DESCRIPTION: 向主控程序发送通道显示信息
* 参数 cn : 通道号 (1...MAXCHAN)
* field : 显示字段(_USER|_STATE|_TELE|_BEGIN|_END)
************************************************************/
extern "C" _declspec ( dllexport ) int ChnPrintf(int cn, char *field, char *szFormat, ...);
extern "C" _declspec ( dllexport ) void WinPrintf(char *szFormat, ...);
/*************************************************************
Function: trimstr()
删除字符串前后的空格
*************************************************************/
extern "C" _declspec ( dllexport ) void trimstr(char * str, char * output);
/*************************************************************
Function: upstring()
将字符串转换成大写
*************************************************************/
extern "C" _declspec ( dllexport ) void upstring(char * str, char * output);
/***************************************************************
*
* 函数 CreateVFIT(char * s_number)
* 说明:在内存中创建VFIT
*
***************************************************************/
extern "C" _declspec ( dllexport ) int PASCAL CreateVFIT(char * s_number);
/****************************************************************************
函数: int SetVFIT(char * v_index, char * key, char * v_value)
说明:给初始化文件赋值
index : 信号灯位置(取值 1 .. 30)
key : 项目 (取值 "indexname", "vocfile", "io_offset")
value : 用于复制的变量
****************************************************************************/
extern "C" _declspec ( dllexport ) int PASCAL SetVFIT(char * v_index, char * skey, char * v_value);
/****************************************************************************
函数: int ReadVFIT(char * v_index, char * v_key, LPSTR v_value)
说明:给初始化文件赋值
filename : 内存文件名
index : 信号灯位置(取值 1 .. 30)
key : 项目 (取值 "indexname", "vocfile", "io_offset","io_length", "filehandle")
value : 用于复制的变量
****************************************************************************/
extern "C" _declspec ( dllexport ) LPVOID PASCAL ReadVFIT(char * v_index, char * v_key);
/****************************************************************************
*
函数: int CloseVFIT()
说明: 删除语音文件索引表
*
* 目前还不能关闭文件
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -