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

📄 scommtestdlg.cpp

📁 SCommtest
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	CString str ;
//char* psmd=szsmd;
	m_data.GetWindowText(str);
	IsSended = FALSE; //发送完成  
    for(int i=0;i<8;i++)
    {m_mscom.SetOutput((COleVariant)(CString)szsmd[i]);}
	//m_mscom.SetOutput((COleVariant)str);
	

	IsSended = TRUE; //发送完成
	Sleep(1000); //延时1妙
}

//接收数据
void CCComDlg::OnOnCommMscomm2() 
{
	int resEvent;
	resEvent = m_mscom.GetCommEvent();
	switch (resEvent)
	{
	case 2: //接收数据
		{
			if (IsSended) //开始接收数据
			{
				VARIANT data;

			//	len=m_mscom.GetInputLen;
				data = m_mscom.GetInput();
             
				CString str;
		
				str = data.bstrVal;
				
				IsSended = FALSE;
			CEdit* pedit=(CEdit*)GetDlgItem(IDC_EDIT1);
			pedit->SetWindowText(str);
		   AfxMessageBox(str);
			}
		}
		break;	    CEdit* pedit=(CEdit*)GetDlgItem(IDC_EDIT_TXDATA);
			pedit->SetWindowText(str);
	}		
}
char szsmd[]={0x02, 0x52, 0x04, 0x02, 0xC8, 0xF8, 0x64, 0x03,0x00}; 
char szsmd[8]={0x02, 0x52, 0x04, 0x00, 0xC8, 0xF8, 0x66, 0x03}; */

void CSCommTestDlg::OnButton1() 
{
    

	// TODO: Add your control notification handler code here
KillTimer(1);
HANDLE handle=AfxGetInstanceHandle();
unsigned long i;
	GetExitCodeThread(handle,&i);
	::TerminateThread(handle,i);
	CloseHandle(handle);

CDialog::OnCancel();	

}

void CSCommTestDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
//CTime   tm  = CTime::GetCurrentTime();   
//CString   tmstr,tmstr1;   
 //tmstr.Format(_T("%d-%d-%d"),tm.GetYear(),tm.GetMonth(),tm.GetDay());
//tmstr1.Format(_T("%d:%d:%d"),tm.GetHour(),tm.GetMinute(),tm.GetSecond());
  //m_time=tmstr+"\t"+tmstr1;
tm=CTime::GetCurrentTime();
CString tm1=tm.Format("%Y-%m-%d %H:%M:%S");
tmstr="现在时间是"+tm1;
//tmstr.Format(_T("现在时间是%d-%d-%d %d:%d:%d"),tm.GetYear(),tm.GetMonth(),tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond());
//CStatic* pStatic = (CStatic*)GetDlgItem(IDC_TIME);
 //pStatic->SetWindowText(tmstr);	
SetDlgItemText(IDC_TIME,tmstr);
CDialog::OnTimer(nIDEvent);
}

int CSCommTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{


	


	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;



	
	// TODO: Add your specialized creation code here
	
	return 0;
}


void CSCommTestDlg::OnSend() 
{
	// TODO: Add your control notification handler code here02 57 0E 00 C8 12 34 56 78 AB CD EF 22 44 88 99 67 03
BYTE fsmd[]={0x02, 0x57, 0x0E, 0x00, 0xC8, 0x12, 0x34, 0x56,0x78,0xAB,0xCD,0xEF,0x22,0x44,0x88,0x99,0x67,0x03};
//char szsmd[]={0x02, 0x52, 0x04, 0x02, 0xC8, 0xF8, 0x64, 0x03};

CByteArray smd;
BYTE* pfsmd=fsmd;

for (int i=0;i<sizeof(fsmd);i++,pfsmd++)
smd.Add(*pfsmd);
//smd.SetAt(3,0x02);
//smd.SetAt(6,0x64);
 CString   str,   str1;      
 int n   =   smd.GetSize();   
  for(int ii=0;ii<n;ii++)   
  {   
            str.Format("%X", smd[ii]);
			str=(strlen(str)==2?str:"0"+str)+" ";
            str1 += str;   
  }   

WriteFile(str1);

COleVariant szsmd=(COleVariant)smd;
	UpdateData(TRUE); //读取编辑框内容
	//m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送数据
	UpdateData(FALSE);
   m_ctrlComm.SetOutput(szsmd);
CEdit* pedit=(CEdit*)GetDlgItem(IDC_EDIT_TXDATA);
//pedit->SetWindowText(str1);
   SetDlgItemText(IDC_EDIT_TXDATA,str1);
 m_strRXData=_T("");
	
}
unsigned long hexstr2value(char * s)
{
return(strtol(s,NULL,16));
}


void CSCommTestDlg::OnFsFromText() 
{

m_strRXData=_T("");
//char  fstr[2048];

//char* fstr=new char[16];
//char  str[2048];
//GetDlgItemText(IDC_EDIT_TXDATA,fstr,2048);

CEdit* pedit=(CEdit*)GetDlgItem(IDC_EDIT_TXDATA);
int len;
len=pedit->GetWindowTextLength();
//int len=pedit->LineLength(0);
int length=len+1;
CString lendis;
lendis.Format("%d",length);
SetDlgItemText(IDC_LEN,lendis);

//char cmdstr[]="02 52 04 00 C8 F8 66 03 ";
//int length=sizeof(cmdstr);
//CString lendis=cmdstr;
lendis.Format("%d",length);


char* fstr=new char[length];
//fstr=cmdstr;
char* str=new char[length/3*2];
pedit->GetWindowText(fstr,length);
WriteFile(fstr);
//AfxMessageBox(str);
for(int i=0,j=0;i<(length/3)*2;j++)
{
	str[i]=fstr[3*j];
	str[i+1]=fstr[3*j+1];
	i=i+2;
}
	CString ss=_T(str);
//delete []fstr;
CByteArray smd;
//for(i=0;i<ss.GetLength();i++)
for(i=0;i<length/3;i++)
{
    CString ls=ss.Left(2);
long num=strtol(ls,NULL,16);
BYTE temp=(BYTE)num;
 /*
CString numd;
numd.Format("%d",temp);
AfxMessageBox("HEX:"+ls+"=DEC:"+numd);
*/
smd.Add(temp);
ss=ss.Right(ss.GetLength()-2);
   
}
delete []fstr;
delete []str;
m_ctrlComm.SetInBufferCount(0);
m_ctrlComm.SetOutBufferCount(0);

COleVariant szsmd=(COleVariant)smd;


 m_ctrlComm.SetOutput(szsmd);	



	// TODO: Add your control notification handler code here
	
}

void CSCommTestDlg::OnClear() 
{
 	
SetDlgItemText(IDC_EDIT_TXDATA,"");
SetDlgItemText(IDC_EDIT_RXDATA,"");	
	
	// TODO: Add your control notification handler code here
	
}

void CSCommTestDlg::WriteFile(CString ifstr)
{
	CTime time=CTime::GetCurrentTime();
	//CString str1=t.Format("%Y-%B-%d %H:%M:%S ");
    CString str1=time.Format("%Y-%m-%d %H:%M:%S ");
	CString str3=str1+"-->>"+ifstr;
	CString str2;
	str2.Format("%s\r\n",str3);
	CStdioFile file;
    char  Filepath[255];
	GetCurrentDirectory(255,Filepath);
	strcat(Filepath,"\\log.txt");
	if(file.Open(Filepath,CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate))
	{
		file.SeekToEnd();
	  // file.Seek(0,CFile::end);
	   file.WriteString(str2);
	}
	DWORD fLength=file.GetLength();
	if(fLength>50*1024)
		file.SetLength(10*1024);
	file.Close();

}


 

HBRUSH CSCommTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here   
  /* if   (pWnd->GetDlgCtrlID()   ==   IDC_EDIT1)   
        {   
              //   Set   the   text   color     
              pDC->SetTextColor(RGB(0,0,255));   
        }   */



   switch  (pWnd->GetDlgCtrlID())   
			{	  
	           case IDC_EDIT_TXDATA :  
			        pDC->SetTextColor(RGB(0,0,255));    //   Set   the   text   color 
                    break;
	           case IDC_EDIT_RXDATA:
                    pDC->SetTextColor(RGB(0,16,255));
					break;
               case IDC_LEN:
                    pDC->SetTextColor(RGB(255,16,16));
					break;
               case IDC_TIME:
                    pDC->SetTextColor(RGB(0,128,64));
					break;
			   default:
                    pDC->SetTextColor(BLACK_BRUSH);
			}

	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CSCommTestDlg::OnSendstr() 
{
	// TODO: Add your control notification handler code here
m_strRXData=_T("");
//char  fstr[2048];

//char* fstr=new char[16];
//char  str[2048];
//GetDlgItemText(IDC_EDIT_TXDATA,fstr,2048);
/*
CEdit* pedit=(CEdit*)GetDlgItem(IDC_EDIT_TXDATA);
int len;
len=pedit->GetWindowTextLength();
//int len=pedit->LineLength(0);
int length=len+1;
CString lendis;
lendis.Format("%d",length);
SetDlgItemText(IDC_LEN,lendis);
*/
char cmdstr[]="02 57 FB 00 C8 12 34 56 78 AB CD EF 22 44 88 99 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 03";
int length=strlen(cmdstr)+1;
CString lendis;
lendis.Format("%d",length);
SetDlgItemText(IDC_LEN,lendis);

char* fstr=new char[length];
char* str=new char[length/3*2];
strcpy(fstr,cmdstr);
SetDlgItemText(IDC_EDIT_TXDATA,fstr);
WriteFile(fstr);
//AfxMessageBox(str);
for(int i=0,j=0;i<(length/3)*2;j++)
{
	str[i]=fstr[3*j];
	str[i+1]=fstr[3*j+1];
	i=i+2;
}
	CString ss=_T(str);
//delete []fstr;
CByteArray smd;
//for(i=0;i<ss.GetLength();i++)
for(i=0;i<length/3;i++)
{
    CString ls=ss.Left(2);
long num=strtol(ls,NULL,16);
BYTE temp=(BYTE)num;
 /*
CString numd;
numd.Format("%d",temp);
AfxMessageBox("HEX:"+ls+"=DEC:"+numd);
*/
smd.Add(temp);
ss=ss.Right(ss.GetLength()-2);
   
}
delete []fstr;
delete []str;
m_ctrlComm.SetInBufferCount(0);
m_ctrlComm.SetOutBufferCount(0);

COleVariant szsmd=(COleVariant)smd;


 m_ctrlComm.SetOutput(szsmd);	


	// TODO: Add your control notification handler code here
	
}
	




void CSCommTestDlg::OnDestroy()
{
bend=TRUE;    //改变变量,结束线程
WaitForSingleObject(pThread->m_hThread,INFINITE);  //等待线程结束
delete pThread;   //删除线程
CDialog::OnDestroy();	
}



void CSCommTestDlg::OnZzxc() 
{
	CString text;
	
	text.Format("%s");
    GetDlgItemText(IDC_ZZXC,text);
	if (text==("终止响铃"))
	{ bend=TRUE;
	   SetDlgItemText(IDC_ZZXC,_T("启动响铃"));
	}
	else
	{  bend=FALSE; 
       SetDlgItemText(IDC_ZZXC,_T("终止响铃"));
      OnInitDialog();
	 }

	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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