📄 opam300cdlg.cpp
字号:
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 + -