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

📄 c_trkin.c

📁 这是电信语音聊天设备的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
		}
		break;
		case CHA_SHAN://等待用户选择查询或删除聊天号
		{
			if(user_select != IDLE)
			{
				audio_stop(user_e1[user_num].dtmf);//停止放音
				if(user_monitor_num == user_num)//往后台回应监视信息
				{
					command(1,0,user_num,USER_PRESS_SIGNAL,user_select,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
				}
				if(user_select == 1)//查询聊天号
				{
					command(5,2,user_num,1,user_e1[user_num].user_sex,user_e1[user_num].user_age,user_e1[user_num].telephone[0],user_e1[user_num].telephone[1],user_e1[user_num].telephone[2],user_e1[user_num].telephone[3],user_e1[user_num].telephone[4],user_e1[user_num].telephone[5],IDLE,IDLE,IDLE,IDLE);
					user_e1[user_num].user_state = IDLE;				
				}
				else
				{
					if(user_select == 2)//删除聊天号
					{
						command(5,2,user_num,2,user_e1[user_num].user_sex,user_e1[user_num].user_age,user_e1[user_num].telephone[0],user_e1[user_num].telephone[1],user_e1[user_num].telephone[2],user_e1[user_num].telephone[3],user_e1[user_num].telephone[4],user_e1[user_num].telephone[5],IDLE,IDLE,IDLE,IDLE);
						user_e1[user_num].user_state = IDLE;
					}
					else//错误的输入
					{
						error_chuli(user_num);
					}
				}
				audio_dtmf_resource[user_e1[user_num].dtmf].buf = IDLE;
			}
		}
		break;
		case INFORM_CHAT://通知用户的聊天号
		{
			audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = TONGZHI_CHAT_NUMBER;//“你的聊天号是:”
			for(trk_j = 1;trk_j < 7;trk_j++)//清播放音
			{
				audio_dtmf_resource[user_e1[user_num].dtmf].num[trk_j] = user_e1[user_num].number_chat[trk_j - 1];
			}
			audio_dtmf_resource[user_e1[user_num].dtmf].num[8] = IDLE;
			audio_dtmf_resource[user_e1[user_num].dtmf].length = 8;//置播放长度
			audio_dtmf_resource[user_e1[user_num].dtmf].count = 0;//清播放次数
			audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
			//播放提示音
			audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);//放欢迎进入情感交友聊天室提示音
			audio_dtmf_resource[user_e1[user_num].dtmf].index++;//段索引号加1
			user_e1[user_num].user_state = INFORM_END;//转为等待提示音结束
		}
		break;
		case INFORM_SHAN://通知用户已经成功删除聊天号
		{
			clr_duan(user_num);
			play_one(user_num,SHAN_DUAN);
			user_e1[user_num].user_state = INFORM_END;//转为等待提示音结束
			audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
		}
		break;
		case WAIT_NO://没有注册的用户进入个人资料中心,提示是否想注册
		{
			clr_duan(user_num);
			play_one(user_num,ZHUCE_SELECT_DUAN);
			user_e1[user_num].user_state = ZHUCE_SELECT;//转为等待用户选择是否注册
			audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
		}
		break;
		case ZHUCE_SELECT://等待用户选择是否注册
		{
			if(user_select != IDLE)
			{
				audio_stop(user_e1[user_num].dtmf);//停止放音
				if(user_monitor_num == user_num)//往后台回应监视信息
				{
					command(1,0,user_num,USER_PRESS_SIGNAL,user_select,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
				}
				if(user_select == 2)//用户选择不注册
				{
					clr_duan(user_num);
					play_one(user_num,FIRST_AUDIO);
					audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
					user_e1[user_num].user_state = SELECT_START;//转到起始选择
				}
				else
				{
					if(user_select == 1)//用户选择注册
					{
						audio_stop(user_e1[user_num].dtmf);//停止当前操作
						clr_duan(user_num);
						play_one(user_num,USER_SEX_DUAN);
						user_e1[user_num].user_state = USER_SEX;//提示输入性别
						user_e1[user_num].user_index = 0;
					}
					else//错误的选择
					{
						error_chuli(user_num);
					}
				}
				audio_dtmf_resource[user_e1[user_num].dtmf].buf = IDLE;
			}
		}
		break;
		case INFORM_ZHUCE://通知新注册的用户自己的聊天号
		{
			audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = SUCCESS_ZHUCE_A;//播放情感交友私人聊天室
			for(trk_j = 1;trk_j < 7;trk_j++)//清播放音
			{
				audio_dtmf_resource[user_e1[user_num].dtmf].num[trk_j] = user_e1[user_num].number_chat[trk_j - 1];
			}
			audio_dtmf_resource[user_e1[user_num].dtmf].num[7] = SUCCESS_ZHUCE_B;//播放情感交友私人聊天室
			audio_dtmf_resource[user_e1[user_num].dtmf].length = 8;//置播放长度
			audio_dtmf_resource[user_e1[user_num].dtmf].count = 0;//清播放次数
			audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
			audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);//放欢迎进入情感交友聊天室提示音
			audio_dtmf_resource[user_e1[user_num].dtmf].index++;//段索引加1
			audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
			if(user_e1[user_num].wait == 1)//通过进入个人资料中心注册的用户
			{
				user_e1[user_num].user_state = INFORM_END;//转为等待提示音结束
				user_e1[user_num].wait = 0;
			}
			else//选择私聊进行注册的用户
			{
				user_e1[user_num].user_state = ZHUCE_END;//转为注册结束
			}
		}
		break;
		case ZHUCE_END://注册结束
		{
			if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)
			{
				clr_duan(user_num);
				play_one(user_num,OPP_SEX_DUAN);
				user_e1[user_num].user_state = OPP_SEX;//提示输入对方的性别	
				user_e1[user_num].user_index = 0;
			}
		}
		break;
		case INFORM_END://提示音结束
		{
			if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)
			{
				clr_duan(user_num);
				play_one(user_num,FIRST_AUDIO);
				audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
				user_e1[user_num].user_state = SELECT_START;//转到起始选择
			}
		}
		break;
		case JUDGE_USER://判断聊天室的人数
		{
			if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)//欢迎提示音放完了
			{	
				if(add_user(user_num,user_e1[user_num].password,user_e1[user_num].chat_type) != IDLE)
				//聊天室的人数没满
				{
					no_sound(user_num);//无音处理
					switch(user_e1[user_num].chat_type)
					{
						case 1:
						case 2:
						case 3:
						case 4:
						case 5:
						case 6:
						case 7:
						case 8:
						{//用户选择公共聊天室
							clr_duan(user_num);
							connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,user_e1[user_num].user_mix);
							//连接相应时隙
							if(user_num == user_monitor_num)
							{
								connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,CHAIRMAN_SLOT);//如果为监视端口,将提示音交换到监听时隙
							}
							audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
							audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = INFORM_DUAN;//通知聊天室中的人X号到了
							audio_dtmf_resource[user_e1[user_num].dtmf].length = 2;//置段长度
							user_e1[user_num].user_state = INFORM_USER;//转到通知用户
						}
						break;
						case 0x80://用户选择私人聊天室
						{
							if(user_num == user_monitor_num)
							{
								connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,CHAIRMAN_SLOT);//如果为监视端口,将提示音交换到监听时隙
							}
							if(user_e1[user_num].opp_num != IDLE)//用户已经成功进入一对一聊天室
							{
								connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,user_e1[user_num].opp_num);
								//连接相应时隙
								audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
								audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = INFORM_DUAN;//通知聊天室中的人X号到了
								audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
								audio_dtmf_resource[user_e1[user_num].dtmf].length = 2;//置段长度
							}
							else//用户新创建了一对一聊天室
							{
								audio_dtmf_resource[user_e1[user_num].dtmf].count = 1;//清空放音次数
							}
							user_e1[user_num].user_state = INFORM_USER;//转到通知用户
						}
						break;
						default:
						break;
					}
				}
				else//用户选择的聊天室已满 
				{
					connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,user_num);
					//连接相应时隙
					if(user_num == user_monitor_num)
					{
						connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,CHAIRMAN_SLOT);//如果为监视端口,将提示音交换到监听时隙
					}
					play_one(user_num,FULL_DUAN);
					user_e1[user_num].user_state = INFORM_END;//转为等待提示音结束
				}
				if(audio_dtmf_resource[user_e1[user_num].dtmf].count != 1)
				{
					audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//提示音索引号加1
					audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);
					//放提示音
					audio_dtmf_resource[user_e1[user_num].dtmf].index++;//提示音索引号加1
					audio_dtmf_resource[user_e1[user_num].dtmf].count = 0;//清空放音次数
				}
			}
		}
		break;
		case INFORM_USER://通知用户已经成功进入聊天系统
		{
			if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)//提示音放完了
			{
				connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,user_num);//连接相应时隙
				clr_duan(user_num);
				switch(user_e1[user_num].chat_type)
				{
					case 1:
					case 2:
					case 3:
					case 4:
					case 5:
					case 6:
					case 7://用户选择非密码公共聊天室
					{
						no_sound(user_e1[user_num].user_mix);//无音处理
						if(chat_common_resource[user_e1[user_num].chat_num - 0x80].user_count > 1)//公共聊天室中至少有两个人
						{
							audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = SUCCESS_DUANA;//通知聊天室中的人X号到了
							audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
							audio_dtmf_resource[user_e1[user_num].dtmf].num[2] = SUCCESS_DUANB;
							audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
							audio_dtmf_resource[user_e1[user_num].dtmf].length = 3;//置段长度
							user_e1[user_num].user_state = SUCCESS_COMMON;//转到成功处理
							audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);
							//放提示音
							audio_dtmf_resource[user_e1[user_num].dtmf].index++;//提示音索引号加1
						}
						else//用户新创建了一个公共聊天室
						{
							trk_j = ask_online(user_num,user_e1[user_num].password,user_e1[user_num].chat_type);
							//在线寻找第一选择相同的用户
							if(trk_j != IDLE)
							{
								user_e1[user_num].opp_num = trk_j;
								audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = SUCCESS_DUANA;//通知聊天室中的人X号到了
								audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
								audio_dtmf_resource[user_e1[user_num].dtmf].num[2] = SUCCESS_DUANB;
								audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
								audio_dtmf_resource[user_e1[user_num].dtmf].length = 3;//置段长度
								user_e1[user_num].user_state = ONLINE_CHAT;//转到成功处理
								audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);
								//放提示音
								audio_dtmf_resource[user_e1[user_num].dtmf].index++;//提示音索引号加1
							}
							else//查询有无回呼资源
							{
								command(5,4,user_num,user_e1[user_num].chat_type,IDLE,IDLE,IDLE,user_e1[user_num].telephone[0],user_e1[user_num].telephone[1],user_e1[user_num].telephone[2],user_e1[user_num].telephone[3],user_e1[user_num].telephone[4],user_e1[user_num].telephone[5],IDLE,IDLE,IDLE);
								user_e1[user_num].user_state = IDLE;
							}
						}
					}
					break;
					case 8://用户选择密码聊天室
					{
						no_sound(user_e1[user_num].user_mix);//无音处理
						if(chat_common_resource[user_e1[user_num].chat_num - 0x80].user_count > 1)//聊天室中至少有一人
						{
							audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = SUCCESS_DUANA;//通知聊天室中的人X号到了
							audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
							audio_dtmf_resource[user_e1[user_num].dtmf].num[2] = SUCCESS_DUANB;
							audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
							audio_dtmf_resource[user_e1[user_num].dtmf].length = 3;//置段长度
							user_e1[user_num].user_state = SUCCESS_COMMON;//转到成功处理
							audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);
							//放提示音
							audio_dtmf_resource[user_e1[user_num].dtmf].index++;//提示音索引号加1
						}
						else//用户新创建了一个密码聊天室
						{
							trk_j = ask_online(user_num,user_e1[user_num].password,user_e1[user_num].chat_type);
							if(trk_j != IDLE)
							{
								user_e1[user_num].opp_num = trk_j;
								audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = SUCCESS_DUANA;//通知聊天室中的人X号到了
								audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
								audio_dtmf_resource[user_e1[user_num].dtmf].num[2] = SUCCESS_DUANB;
								audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
								audio_dtmf_resource[user_e1[user_num].dtmf].length = 3;//置段长度
								user_e1[user_num].user_state = ONLINE_CHAT;//转到成功处理
								audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);
								//放提示音
								audio_dtmf_resource[user_e1[user_num].dtmf].index++;//提示音索引号加1
							}
							else
							{
								command(5,4,user_num,user_e1[user_num].chat_type,(user_e1[user_num].password[0] << 4) + (user_e1[user_num].password[1] & 0x0f),(user_e1[user_num].password[2] << 4) + (user_e1[user_num].password[3] & 0x0f),(user_e1[user_num].password[4] << 4) + (user_e1[user_num].password[5] & 0x0f),user_e1[user_num].telephone[0],user_e1[user_num].telephone[1],user_e1[user_num].telephone[2],user_e1[user_num].telephone[3],user_e1[user_num].telephone[4],user_e1[user_num].telephone[5],IDLE,IDLE,IDLE);
								user_e1[user_num].user_state = IDLE;
							}
						}
					}
					break;
					case 0x80://用户选择为一对一聊天
					{
						no_sound(user_e1[user_num].opp_num);//无音处理
						if(chat_private_resource[user_e1[user_num].chat_num].user_count > 1)//用户已经成功进入一对一聊天室
						{
							play_one(user_num,SUCCESS_PRIVATE);
							user_e1[user_num].user_state = SUCCESS_COMMON;//转到成功处理
						}
						else//用户新创建了一个一对一聊天室
						{
							trk_j = ask_online(user_num,user_e1[user_num].password,user_e1[user_num].chat_type);
							if(trk_j != IDLE)//在线寻找到合意的聊友
							{
								user_e1[user_num].opp_num = trk_j;

⌨️ 快捷键说明

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