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

📄 opam300cdlg.cpp

📁 wince下接受网络控制命令进行相应操作,远程控制的东西
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						strcpy(sendbuf,pDlg->resW);
						strcat(sendbuf,"\r\n");
						send(ClientSocket,sendbuf,strlen(sendbuf),0);
						free(sendbuf);
					}
					//	send(ClientSocket,pDlg->resW,strlen(pDlg->resW),0);
					try
					{
						free(bufstr);
					}
					catch(...)
					{
						;
					}
					//Add resolve bufstr code ....
					//send(ClientSocket,restr,strlen(restr),0);
				}
				else
				{
					//如果参数是真正的时间格式,则写入配置表
					//CString sDayReset = restr;
					//pApp->WriteProfileString(_T("Setup"),_T("WeekReset"),sDayReset);
					try
					{
						strcpy(pDlg->resW,restr);
						File.Open(L"硬盘\\setup.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate,NULL);
						File.SeekToEnd();
						File.Write("W",1);
						File.Write(restr,strlen(restr));
						File.Write("\r\n",2);
						File.Close();
						pDlg->resM[0]=0;
						send(ClientSocket,"设置成功\r\n",strlen("设置成功\r\n"),0);
					}
					catch(...)
					{
						send(ClientSocket,"设置失败\r\n",strlen("设置失败\r\n"),0);
					}
				}
				try
				{
					free(restr);
				}
				catch(...)
				{
					;
				}
				
			}
			else if (strstr(&szBuf[0],"MonthReset:")!=NULL)
			{
				//重启的时间
				//如果是"ResetTime:0"那么向请求端发一个原定义的时间
				//如果是"ResetTime:01:00"那么就设置本地的定时时间
				int i,k;
				char restr[20];
				
				k=0;
				for (i=11;i<strlen(szBuf);i++)
				{
					if ((szBuf[i]!='\r')&&(szBuf[i]!='\n') && (szBuf[i]!=';'))
					{
						restr[k]=szBuf[i];
						k++;
					}
				}
				restr[k]=0;
				//以上已得到了发送过来的值,在下面进行处理
				//CWinApp *pApp=AfxGetApp();
				if (strcmp(restr,"0")==0)
				{
					//CString sDayReset;//=pApp->GetProfileString(_T("Setup"),_T("MonthReset"));
					//strcpy(restr,(char *)&sDayReset);
					char bufstr[256];
					try
					{
						File.Open(L"硬盘\\setup.txt",CFile::modeRead,NULL);
						File.Read(bufstr,100);
						File.Close();
						pDlg->resolveFile(bufstr);
					}
					catch(...)
					{
						strcpy(pDlg->resM,"32");
					}
					//Add resolve bufstr code ....
					
					if (strlen(pDlg->resM)==0)
					{
						send(ClientSocket,"32\r\n",strlen("32\r\n"),0);
					}
					else{
						char sendbuf[11];
						strcpy(sendbuf,pDlg->resM);
						strcat(sendbuf,"\r\n");
						send(ClientSocket,sendbuf,strlen(sendbuf),0);
						free(sendbuf);
					}
					try
					{
						free(bufstr);
					}
					catch(...)
					{
						;
					}
					//send(ClientSocket,restr,strlen(restr),0);
				}
				else
				{
					//如果参数是真正的时间格式,则写入配置表
					//CString sDayReset=restr;
					//pApp->WriteProfileString(_T("Setup"),_T("MonthReset"),sDayReset);
					try
					{
						strcpy(pDlg->resM,restr);
						File.Open(L"硬盘\\setup.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate,NULL);
						File.SeekToEnd();
						File.Write("M",1);
						File.Write(restr,strlen(restr));
						File.Write("\r\n",2);
						File.Close();
						send(ClientSocket,"设置成功\r\n",strlen("设置成功\r\n"),0);
					}
					catch(...)
					{
						send(ClientSocket,"设置失败\r\n",strlen("设置失败\r\n"),0);
					}
				}
				
				try
				{
					free(restr);
				}
				catch(...)
				{
					;
				}
			}
			else
			{
				send(ClientSocket,"命令不存在\r\n",strlen("命令不存在\r\n"),0);
			}
			Sleep(100);//此处让本进程阻塞一会,避免占用太多的硬件资源
			
		}
		Sleep(100);
		free(szBuf);
	}
	closesocket(hSocket);

	return 1;
	
}

void COpAm300cDlg::UpdateEdit(char *info)
{
	
	m_Order = info;

	m_m_szSendData.SetSel(0,-1);
	m_m_szSendData.SetSel(-1,0);
	m_m_szSendData.ReplaceSel(m_Order);
	
}

void COpAm300cDlg::resolveFile(char fb[256])
{
	for (int i=0;i<strlen(fb);i++)
	{
		if (fb[i]=='A')
		{
			resA[0]=fb[i+1];
		}
		if (fb[i]=='D')
		{
			
			int j;
			for (j=i+1;j<=i+8;j++)
			{
				resD[j-i-1]=fb[j];
			}
		}
			if (fb[i]=='W')
		{
			resW[0]=fb[i+1];
		}
		if (fb[i]=='M')
		{
			int j;
			for (j=i+1;j<=i+2;j++)
			{
				if (fb[j]=='\r')
				{
					i=j;
					break;
				}
				else
				{
					resM[j-i-1]=fb[j];
				}
			}
		}
	}
}

//修改WINCE主机IP地址
BOOL COpAm300cDlg::ModifyIP(char *IpAddr)
{
	HKEY hkey;
	CString strKeyName = "Comm\\PCI\\RTL81391\\Parms\\TCPIP";
	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKeyName,0,KEY_WRITE,&hkey) != ERROR_SUCCESS)
	{	
		return FALSE;
	}
    LPBYTE lpdata = 0;
	BYTE value;
    value = 0;

    //set ip address 
	BYTE ipaddress = 1;
	DWORD  type_1  = REG_MULTI_SZ;
    WCHAR  mszIPAddress[40];
	charToWCh(mszIPAddress,IpAddr);
	int nIP = sizeof(mszIPAddress);
	if(RegSetValueEx(hkey,TEXT("IpAddress"),0,REG_MULTI_SZ,(const unsigned char *)mszIPAddress, nIP) != ERROR_SUCCESS)
	{	
		RegCloseKey(hkey);
		return FALSE;
	}
	else
	{
		RegCloseKey(hkey);
		return TRUE;
	}

	return FALSE;
}

BOOL COpAm300cDlg::ModifyName(char *HostName)
{
	HKEY hkey;
	
	CString strKeyName = "Ident";
	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKeyName,0,KEY_WRITE,&hkey) != ERROR_SUCCESS)
	{	
		return FALSE;
	}
    LPBYTE lpdata = 0;
	BYTE value;
    value = 0;

	DWORD  type_1  = REG_SZ;
	//set Host Name 
	BYTE name = 1;
    WCHAR  mName[50];//=_T("windowsCE0909");
	charToWCh(mName,HostName);
	int nName = sizeof(mName);
	if(RegSetValueEx(hkey,TEXT("Name"),0,type_1,(const unsigned char *)mName, nName) != ERROR_SUCCESS)
	{	
		RegCloseKey(hkey);
		return FALSE;
	}
	else
	{
		RegCloseKey(hkey);
		return TRUE;
	}

	return FALSE;
}
//网络播放
BOOL COpAm300cDlg::playmusic()
{
	CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph2);
	pGraph2->QueryInterface(IID_IMediaControl, (void **)&pMediaControl2); 
	/* 连接播放指定文件所需的filter */ 
	//pGraph->RenderFile(strMusicName, NULL); 
	/* 开始播放指定的文件 */ 
	
	pMediaControl2->RenderFile(musicname);//strMusicName
	pMediaControl2->Run(); 
	return true;
}
BOOL COpAm300cDlg::stopmusic()
{
	pMediaControl2->Stop();
	return true;
}
BOOL COpAm300cDlg::closemusic()
{
	try
	{
		pMediaControl2->Release();
		
	}
	catch(...)
	{
		;
	}
	try
	{
		pGraph2->Release();
	}
	catch(...)
	{
		;
	}
	return true;
}
//播放音乐
void COpAm300cDlg::OnPlay1() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	char *ansimusicname="硬盘\\am300c\\音乐文件\\音乐\\草原之夜.mp3\0";
	wchar_t *strMusicName;
	charToWCh(strMusicName,ansimusicname); 
	
	//strMusicName=strMusicName+L"\0";
		// TODO: Add your control notification handler code here
	IGraphBuilder *pGraph;  
	/* 指向Filter Graph的指针 */
    IMediaControl *pMediaControl; 
	/* 指向MediaControl对象的指针 */ 
	/* 初始化,程序启动时执行一次即可 */
	/**************************************************************************/
	/* 以下程序每次播放MP3(或其他格式)文件时调用 */   
	/* 创建一个Filter Graph manager */  
	CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph);
	pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl); 
	/* 连接播放指定文件所需的filter */ 
	//pGraph->RenderFile(strMusicName, NULL); 
	/* 开始播放指定的文件 */ 
	pMediaControl->RenderFile(strMusicName);//strMusicName
	pMediaControl->Run();  
	/* 文件的播放在DirectShow中独立线程中进行,此处等待 */
	::MessageBox(NULL, L"点击[OK]结束播放", L"Play MP3", MB_OK);  
	pMediaControl->Stop();  
	/* 停止播放 */  
	/* 释放对象 */ 
	
	try
	{
	  pMediaControl->Release();
	  pMediaControl=NULL;
	}
	catch(...)
	{
		;
	}
	
	pGraph->Abort();
	pGraph->Release();
	
	free(strMusicName);
	pMediaControl=NULL;
	pGraph=NULL;
	
	try
	{
	free(pMediaControl);
	}
	catch(...)
	{
		;
	}
	try
	{
	     free(pGraph);
	}
	catch(...)
	{
		;
	}
	
	
		/**************************************************************************/ 
	/* 程序结束时调用 */
}
//播放音乐
void COpAm300cDlg::OnPlay2() 
{
	// TODO: Add your control notification handler code here
		wchar_t *strMusicName=L"硬盘\\am300c\\音乐文件\\音乐\\冲动的惩罚.mp3\0";
	
		// TODO: Add your control notification handler code here
	IGraphBuilder *pGraph;  
	/* 指向Filter Graph的指针 */
    IMediaControl *pMediaControl; 
	/* 指向MediaControl对象的指针 */ 
	/* 初始化,程序启动时执行一次即可 */
	/**************************************************************************/
	/* 以下程序每次播放MP3(或其他格式)文件时调用 */   
	/* 创建一个Filter Graph manager */  
	CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph);
	pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl); 
	/* 连接播放指定文件所需的filter */ 
	//pGraph->RenderFile(strMusicName, NULL); 
	/* 开始播放指定的文件 */ 
	
	pMediaControl->RenderFile(strMusicName);//strMusicName
	pMediaControl->Run();  
	/* 文件的播放在DirectShow中独立线程中进行,此处等待 */
	::MessageBox(NULL, L"点击[OK]结束播放", L"Play MP3", MB_OK);  
	pMediaControl->Stop();  
	/* 停止播放 */  
	/* 释放对象 */ 
	try
	{
	  pMediaControl->Release();
	 
	  pMediaControl=NULL;
	}
	catch(...)
	{
		;
	}
	
	pGraph->Abort();
	pGraph->Release();
	free(strMusicName);

	try
	{
	free(pMediaControl);
	}
	catch(...)
	{
		;
	}
	try
	{
	     free(pGraph);
	}
	catch(...)
	{
		;
	}
	
		/**************************************************************************/ 
	/* 程序结束时调用 */  
}
//打开串口
BOOL COpAm300cDlg::CommPortOpen()
{
		CommPortClose();

	hCommDev=CreateFile(L"COM1:",
		               GENERIC_READ|GENERIC_WRITE,
					   0,//FILE_SHARE_READ|FILE_SHARE_WRITE,
					   NULL,
					   OPEN_EXISTING,
					   0,//FILE_FLAG_OVERLAPPED
					   NULL);

	if(hCommDev==INVALID_HANDLE_VALUE)
	{
		TRACE0("串行口初始化错误!");
		return FALSE;
	}

	COMMTIMEOUTS TimeOuts;							
	memset(&TimeOuts,0,sizeof(TimeOuts));    
    TimeOuts.ReadIntervalTimeout		= MAXDWORD;		
    TimeOuts.ReadTotalTimeoutMultiplier	= 0;		
    TimeOuts.ReadTotalTimeoutConstant	= 0;		
    TimeOuts.WriteTotalTimeoutMultiplier= 0;		
    TimeOuts.WriteTotalTimeoutConstant	= 1000;
    SetCommTimeouts(hCommDev, &TimeOuts);

	_DCB dcb;
	GetCommState(hCommDev,&dcb); 

	dcb.fBinary=1;
	dcb.BaudRate=2400;
	dcb.Parity=NOPARITY;
	dcb.ByteSize=8;
	dcb.StopBits=_1BIT_;

	dcb.fOutxCtsFlow=dcb.fOutxDsrFlow=0;		    
	dcb.fDtrControl=dcb.fRtsControl=0;			
	dcb.fOutX=dcb.fInX=0;

	dcb.XonLim=dcb.XoffLim=50;
	dcb.fNull=false;//m_NullDiscard;
	dcb.EofChar='\x00';
	dcb.fRtsControl=false;
	dcb.fDtrControl=false;
	
	SetCommState(hCommDev,&dcb);
	SetupComm(hCommDev,4096,512);

	memset(&read_os,0,sizeof(OVERLAPPED));
	postRecvEvent=CreateEvent(NULL,TRUE,TRUE,NULL);
	ASSERT(postRecvEvent);
	read_os.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
	ASSERT(read_os.hEvent);
	postRecvHwnd=m_hWnd;

	memset(&write_os,0,sizeof(OVERLAPPED));
	postSendEvent=CreateEvent(NULL,TRUE,TRUE,NULL);
	ASSERT(postSendEvent);
	write_os.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
	ASSERT(write_os.hEvent);
	postSendHwnd=m_hWnd;
	
	m_bConnected=true;
	m_pThread=AfxBeginThread(myThreadProc,"1");

	return TRUE;
}
//关闭串口
void COpAm300cDlg::CommPortClose()
{
	if(m_bConnected) 
	{		
		CloseHandle(postRecvEvent);
		postRecvEvent=NULL;

		CloseHandle(postSendEvent);

⌨️ 快捷键说明

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