?? comm2410dlg.cpp
字號(hào):
UpdateData(FALSE);
}
GetDlgItem(IDC_BUTTON_STATUS)->SetWindowText(_T("關(guān)閉串口"));
}
void CComm2410Dlg::OnButtonSend()
{
// TODO: Add your control notification handler code here
if (hPort == NULL)
{
AfxMessageBox(_T("還沒(méi)有串口被打開(kāi)!"));
return;
}
if (!StopSend)
{
KillTimer(3);
KillTimer(1);
GetDlgItem(IDC_EDIT_SENDNUMBER)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SEND)->SetWindowText(_T("發(fā)送"));
StopSend=TRUE;
return;
}
sendbyte=0;
UpdateData(TRUE);
int iStart,iEnd;
BYTE c;
iStart=iEnd=0;
if (m_iCharhex) ///16進(jìn)制
{
Tempchar.RemoveAll();
LPCWSTR lpstr = (LPCWSTR)m_iStarthex;
swscanf(lpstr,_T("%x"),&iStart);
lpstr = (LPCWSTR)m_iEndhex;
swscanf(lpstr,_T("%x"),&iEnd);
if (iStart<=iEnd) //升序
{
for (int t=iStart;t<=iEnd;t++)
{
c =(BYTE)t;
Tempchar.Add(c);
}
}
else //降序
{
for (int t=iStart;t>=iEnd;t--)
{
c =(BYTE)t;
Tempchar.Add(c);
}
}
}
else ////字符
{
BYTE* pbyte = NULL;
//Tempchar.SetSize(m_senddata.GetLength());
// memcpy(Tempchar.GetData(),m_senddata.GetBuffer(m_senddata.GetLength()),m_senddata.GetLength());
int iSize = SvrConvertUni2Mbcs(m_senddata,pbyte);
Tempchar.SetSize(iSize);
memcpy(Tempchar.GetData(),pbyte,iSize);
delete pbyte;
}
if (m_iForEver) ///永久發(fā)送
{
GetDlgItem(IDC_EDIT_SENDNUMBER)->EnableWindow(FALSE);
//SetTimer(3,m_iInterval,0);
StopSend=FALSE;
GetDlgItem(IDC_BUTTON_SEND)->SetWindowText(_T("停止發(fā)送"));
}
else
{
if (m_count >1)
{
// GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(FALSE); ///DISABLE 發(fā)送按鈕
usedtime=m_count;
SetTimer(1,m_iInterval,0);
StopSend=FALSE;
GetDlgItem(IDC_BUTTON_SEND)->SetWindowText(_T("停止發(fā)送")); ///DISABLE 發(fā)送按鈕
}
else //只發(fā)送一次
{
GetDlgItem(IDC_BUTTON_SEND)->SetWindowText(_T("停止發(fā)送"));
SendData();
CString str;
str.Format(_T("%d"),Tempchar.GetSize());
// m_iSendCount=str;
m_iSendCount.SetWindowText(str);
StopSend=TRUE;
GetDlgItem(IDC_BUTTON_SEND)->SetWindowText(_T("發(fā)送"));
UpdateData(FALSE);
}
}
return ;
}
void CComm2410Dlg::OnButtonClear()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_iReceiveData.SetWindowText(_T(""));
receivebyte = 0;
m_iTemp.SetWindowText(_T("0"));
// m_iRecCount = _T("0 Byte");
UpdateData(FALSE);
}
void CComm2410Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CByteArray TempData;
DWORD dwlen;
CString strs,recstr,rectempstr;
if (hPort ==NULL)
return ;
{
// UpdateData(TRUE);
TempData.SetSize(0);
DWORD Err;
COMSTAT Comm;
if (!ClearCommError(hPort,&Err,&Comm))
return;
if (Err != 0)
{
CString str;
str.Format(_T("Err%d %d\n"),iErrCount ++,Err);
GetDlgItem(IDC_STATIC123)->SetWindowText(str);
}
DWORD ReceQue;
CByteArray bbb;
//while (Comm.cbInQue > 0)
if (Comm.cbInQue > 0)
{
ReceQue=0;
TempData.SetSize(Comm.cbInQue);
bbb.SetSize(0);
if (!ReadFile(hPort,TempData.GetData(),
Comm.cbInQue,
&ReceQue,NULL))
{
GetLastError();
//break;
}
else
{
int size;
size=bbb.GetSize();
bbb.SetSize(size+ReceQue);
memcpy(bbb.GetData()+size,TempData.GetData(),ReceQue);
/*
Sleep(10);
if (!ClearCommError(hPort,&Err,&Comm))
break;
*/
}
rectempstr=_T("");
if (m_iCharhex) ///16進(jìn)制
{
for (int i=0;i<bbb.GetSize();i++)
{
strs.Format(_T("%02x "),bbb[i]);
rectempstr+=strs;
}
m_iReceiveData.SetWindowText(rectempstr); //顯示16進(jìn)制數(shù)
receivebyte+=bbb.GetSize();
recstr.Format(_T("%ld"),receivebyte);
m_iTemp.SetWindowText(recstr);//顯示接收到的16進(jìn)制數(shù)個(gè)數(shù)
strs.ReleaseBuffer(bbb.GetSize());
}
else ///字符
{
CString tempstr;
long nlength=MultiByteToWideChar(CP_ACP,0,(char *)bbb.GetData(),bbb.GetSize(),NULL,0);
long nlengthwidth=MultiByteToWideChar(CP_ACP,0,(char *)bbb.GetData(),bbb.GetSize(),tempstr.GetBuffer(nlength),nlength);
// receivebyte+=bbb.GetSize();
// m_iReceiveData.Insert(m_iReceiveData.GetAt(0)+m_iReceiveData.GetLength(),(LPCTSTR)tempstr);
//m_iReceiveData.SetWindowText(tempstr); ///顯示接收到的字符
// m_iReceiveData=tempstr;
receivebyte+=nlengthwidth; ///顯示接收到的字符數(shù)
// m_iTemp = receivebyte;
recstr.Format(_T("%ld"),receivebyte);
m_iTemp.SetWindowText(recstr); //顯示接收到的字符數(shù)個(gè)數(shù)
tempstr.ReleaseBuffer(nlengthwidth);
}
// UpdateData(FALSE);
}///連續(xù)發(fā)時(shí),每次要在這里回到WHILE語(yǔ)句
// goon=FALSE;
}
if (nIDEvent == 1)
{
if (usedtime > 0 && StopSend == FALSE)
{
usedtime--;
SendData();
strs.Format(_T("%d"),sendbyte);
m_iSendCount.SetWindowText(strs); ///發(fā)送的字節(jié)數(shù)
// m_iSendCount=strs;
// UpdateData(FALSE);
}
else
{
KillTimer(1);
GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SEND)->SetWindowText(_T("發(fā)送"));
GetDlgItem(IDC_EDIT_SENDNUMBER)->EnableWindow(TRUE);
StopSend=TRUE;
//AfxMessageBox(_T("數(shù)據(jù)已發(fā)送完畢"));
}
}
CDialog::OnTimer(nIDEvent);
}
void CComm2410Dlg::OnRadioFashion()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_STARTHEX)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_ENDHEX)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_SEND)->EnableWindow(TRUE);
UpdateData(TRUE);
}
void CComm2410Dlg::OnRadio3()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_STARTHEX)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_ENDHEX)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_SEND)->EnableWindow(FALSE);
UpdateData(TRUE);
}
void CComm2410Dlg::OnKillfocusEditSendnumber()
{
// TODO: Add your control notification handler code here
int iRestore;
iRestore=m_count;
UpdateData(TRUE);
if (m_count >= 0xffffffff)
{
AfxMessageBox(_T("已超過(guò)最大值!"));
m_count=iRestore;
}
UpdateData(FALSE);
}
void CComm2410Dlg::OnKillfocusEditStarthex()
{
// TODO: Add your control notification handler code here
int iRestore,iStart;
LPCWSTR lpstr = (LPCWSTR)m_iStarthex;
swscanf(lpstr,_T("%x"),&iStart);
iRestore=iStart;
UpdateData(TRUE);
lpstr = (LPCWSTR)m_iStarthex;
swscanf(lpstr,_T("%x"),&iStart);
if ((iStart < 0)||(iStart > 0x00ff))
{
iStart=iRestore;
m_iStarthex.Format(_T("%x"),iStart);
}
UpdateData(FALSE);
}
void CComm2410Dlg::OnKillfocusEditEndhex()
{
// TODO: Add your control notification handler code here
int iRestore,iEnd;
LPCWSTR lpstr = (LPCWSTR)m_iEndhex;
swscanf(lpstr,_T("%x"),&iEnd);
iRestore=iEnd;
UpdateData(TRUE);
lpstr = (LPCWSTR)m_iEndhex;
swscanf(lpstr,_T("%x"),&iEnd);
if ((iEnd < 0)||(iEnd > 0x00ff))
{
iEnd=iRestore;
// swprintf(tempbuffer,_T("%d"),iEnd);
m_iEndhex.Format(_T("%x"),iEnd);
}
UpdateData(FALSE);
}
void CComm2410Dlg::OnRadioForever()
{
// TODO: Add your control notification handler code here
}
void CComm2410Dlg::OnCheckForever()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (m_iForEver)
GetDlgItem(IDC_EDIT_SENDNUMBER)->EnableWindow(FALSE);
else
GetDlgItem(IDC_EDIT_SENDNUMBER)->EnableWindow(TRUE);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -