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