VC(MFC)±àд´®¿Úµ÷ÊÔÖúÊÖ

±à¼­´úÂëÈçÏ£º

void CCommassistDlg::OnClose() { // TODO: Add your message handler code here and/or call default TerminateThread(pReceiveThread,0); //³ÌÐòÍ˳öʱ,¹Ø±Õ´®¿Ú¼àÌýÏß³Ì WaitForSingleObject(pReceiveThread,INFINITE); CDialog::OnClose(); }

Ë«»÷¡°ÊÖ¶¯·¢ËÍ¡±°´Å¥£¬±à¼­´úÂëÈçÏ£º UINT CCommassistDlg::OnBtnHandsend() { // TODO: Add your control notification handler code here if(ComIsOK == FALSE) { MessageBox(\ÇëÏÈ´ò¿ª´®¿Ú\Ìáʾ\TION); return 0; } BOOL bWriteStat; UpdateData(TRUE); CString str,sTemp; DWORD dwBytesWritten=1024; OVERLAPPED m_osWrite; memset(&m_osWrite,0,sizeof(OVERLAPPED)); m_osWrite.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); COMSTAT ComStat;

µÚ 29 Ò³ ¹² 37 Ò³

DWORD dwErrorFlags;

// dwBytesWritten = OnCheckHextx(); GetDlgItem(IDC_EDIT_TX)-> GetWindowText(strOut); if(m_check_hextx) { int i,n; CString strTemp; CByteArray hexdata; // GetDlgItem(IDC_EDIT_TX)-> GetWindowText(strOut); dwBytesWritten = ConvertHexC2String(strOut,hexdata); n = hexdata.GetSize(); for(i=0;i GetWindowText(str); SetDlgItemText(IDC_EDIT_TX,\ sTemp = DisplayHex2CString(str); dwBytesWritten = str.GetLength(); SetDlgItemText(IDC_EDIT_TX,strOut); } UpdateData(); if(dwBytesWritten==0) { MessageBox(\ÇëÔÚ·¢ËÍÇøÄÚÊäÈëÒª·¢Ë͵ÄÄÚÈÝ\Ìáʾ\ return 0; } m_intTxCnt += dwBytesWritten; ShowStatus(); ClearCommError(hCom,&dwErrorFlags,&ComStat); bWriteStat=WriteFile(hCom,strOut,dwBytesWritten,&dwBytesWritten,&m_osWrite); if(!bWriteStat) { if(GetLastError()==ERROR_IO_PENDING) { WaitForSingleObject(m_osWrite.hEvent,1000);

µÚ 30 Ò³ ¹² 37 Ò³

return dwBytesWritten; } return 0; } ShowStatus(); PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); return dwBytesWritten; }

±à¼­ShowStatusº¯Êý£¬´úÂëÈçÏ£º void CCommassistDlg::ShowStatus() { //״̬À¸ÏÔʾ״̬ CString strTXcnt; CString strRXcnt; CString sTemp; CString comnum; CString strBaud,strStop,strData,strCal; UpdateData(true); if(ComIsOK) { m_comlist.GetLBText(m_comlist.GetCurSel(),sTemp); comnum = sTemp + \ÒÑ´ò¿ª\ } else comnum=\δ´ò¿ª´®¿Ú\ strTXcnt.Format(\·¢ËÍ:%d\ strRXcnt.Format(\½ÓÊÕ:%d\ m_baud.GetLBText(m_baud.GetCurSel(),strBaud); m_bstop.GetLBText(m_bstop.GetCurSel(),strStop); m_bdata.GetLBText(m_bdata.GetCurSel(),strData); m_cal.GetLBText(m_cal.GetCurSel(),strCal); m_strStatus = \´®¿Ú: \ \״̬: \²¨ÌØÂÊ: \ + \Êý¾Ýλ: \ֹͣλ: \УÑéλ: \+ strCal; UpdateData(FALSE); }

Ë«»÷¡°Çå¿ÕÏÔÊ¾Çø¡±°´Å¥£¬±à¼­´úÂëÈçÏ£º void CCommassistDlg::OnBtnClrrx() { // TODO: Add your control notification handler code here GetDlgItem(IDC_EDIT_RX);

µÚ 31 Ò³ ¹² 37 Ò³

SetDlgItemText(IDC_EDIT_RX,\ m_intRxCnt = 0; m_intTxCnt = 0; strIn = \ ShowStatus(); }

Ë«»÷¡°Çå¿Õ·¢ËÍÇø¡±°´Å¥£¬±à¼­´úÂëÈçÏ£º void CCommassistDlg::OnBtnClrtx() { // TODO: Add your control notification handler code here GetDlgItem(IDC_EDIT_TX); SetDlgItemText(IDC_EDIT_TX,\}

Ìí¼ÓWM_TIMER¶¨Ê±Æ÷

OnTimerº¯Êý´úÂëÈçÏ£º

void CCommassistDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if(nIDEvent == 1) OnBtnHandsend(); else if(nIDEvent == 2) return; CDialog::OnTimer(nIDEvent); }

µÚ 32 Ò³ ¹² 37 Ò³

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)