📄 serial portdlg.cpp
字号:
//m_Send="";
UpdateData(FALSE); // 发送区 清空
}
BEGIN_EVENTSINK_MAP(CSerialportDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CSerialportDlg)
ON_EVENT(CSerialportDlg, IDC_MSCOMM, 1 /* OnComm */, OnOnCommMscomm, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CSerialportDlg::OnOnCommMscomm()
{
int nEvent;
VARIANT m_input; // VARIANT 类型的 变量,
char *str,*str1;
int k,i;
CString str2;
nEvent=m_Comm.GetCommEvent(); // 如果得到了 事件
switch(nEvent)
{
case 2: // 这里仅仅 对 接受数据 这个事件 作处理
k=m_Comm.GetInBufferCount(); // 接受缓冲区 这时候的 字符数目
if (k>0)
{
m_input=m_Comm.GetInput(); // 把从缓冲区里读取的数据 放进 m_input 中 ;
str=(char*)(unsigned char*)m_input.parray->pvData;
}
i=0;
str1=str;
while (i<k) // 只有前 K 个 字符 是有用的字符 后面的估计都是校验
{
i++;
str1++;
}
*str1='\0';
str2=(const char*)str;
str2+="\r\n";//换行符 \r\n
m_Receive+=(LPCTSTR)str2; //得到最终的数据
default:
break;
}
UpdateData(FALSE);
//m_Receive=("\r\n");
}
BOOL CSerialportDlg::OnEraseBkgnd(CDC* pDC)
{
CBitmap bmp;
bmp.LoadBitmap(IDB_BT);
CBrush brush(&bmp);
CRect rc;
GetClientRect(&rc);// 把矩形框的顶点 转移到用户的 对话框 起点 。。。
pDC->FillRect(rc,&brush); //
return true; // 一定 要 变成 TURE 要不 不相应 !!
// return CDialog::OnEraseBkgnd(pDC);
}
void CSerialportDlg::OnQuit()
{
CDialog::OnCancel();
}
void CSerialportDlg::OnInformation()
{
MessageBox("2006.10.25日\n 制作:于文文","关于串口调制器",MB_ICONINFORMATION|MB_OK);
}
void CSerialportDlg::OnSelchangeCombolist2()
{
CString m_str; // 中介
GetDlgItemText(IDC_COMBOLIST2,m_str); //得 对话框中某一个控件的文本内容 , 通过 ID号确定哪个控件 , 放在 临时字符串类 变量中 ..
m_Speed=atoi(LPCTSTR(m_str)); //LPCTSTR 是 组合框条框的 数值类型
// i to a;
}
void CSerialportDlg::OnClearRe()
{
m_Receive="";
UpdateData(FALSE);
}
void CSerialportDlg::OnClearSend()
{
m_Send="";
UpdateData(FALSE);
}
/*
BOOL bState=GetDlgItem(IDC_LEFT)->IsWindowEnabled();
GetDlgItem(IDC_LEFT)->EnableWindow(!bState);
GetDlgItem(IDC_CENTER)->EnableWindow(!bState);
GetDlgItem(IDC_RIGHT)->EnableWindow(!bState);
GetDlgItem(IDC_ENABLE_DISABLE)->SetWindowText(bState?"Enable":"Disable");*/
HBRUSH CSerialportDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch(nCtlColor) {
case CTLCOLOR_STATIC:
{
if(pWnd->GetDlgCtrlID() == IDC_RSTATIC)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_SSTATIC)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_Periods)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_Periods)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_STATIC1)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_STATIC2)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_STATIC3)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_STATIC4)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_STATIC5)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else if(pWnd->GetDlgCtrlID() == IDC_SerialState)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,10,10));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else
{
hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
}
}
break;
case CTLCOLOR_EDIT:
{
if (pWnd->GetDlgCtrlID() ==IDC_RECEIVEDATA)
{
pDC->SetBkMode(OPAQUE);
pDC->SetTextColor(RGB(200,10,200)); //改变字体的颜色
hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
else if(pWnd->GetDlgCtrlID() == IDC_Time)
{
pDC->SetBkMode(OPAQUE);
pDC->SetTextColor(RGB(200,10,200)); //改变字体的颜色
hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
else if(pWnd->GetDlgCtrlID() == IDC_Time)
{
pDC->SetBkMode(OPAQUE);
pDC->SetTextColor(RGB(200,10,10)); //改变字体的颜色
hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
else
{
hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
break;
}
case CTLCOLOR_BTN:
{
if (pWnd->GetDlgCtrlID() ==IDC_AutoSend)
{
pDC->SetBkMode(OPAQUE);
pDC->SetTextColor(RGB(200,10,200)); //改变字体的颜色
hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
/*else if(pWnd->GetDlgCtrlID() == IDC_SENDDATA)
{
// pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(200,10,200)); //改变字体的颜色
hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
else if(pWnd->GetDlgCtrlID() == IDC_Time)
{
pDC->SetBkMode(OPAQUE);
pDC->SetTextColor(RGB(200,10,10)); //改变字体的颜色
hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));
}*/
else
{
hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
break;
}
default:
break;}
// TODO: Return a different brush if the default is not desired
return hbr;
}
// 别把复选矿 和单选框 弄混阿
void CSerialportDlg::OnAutoSend() // 单击小框 ,可以使周期框有效了 。
{ UpdateData();//首先把文本框的数据 付给变量
if (m_bcheck) // 如果 复选矿被选中 则变量变成 TURE 那么 可以填写周期了。。
{
GetDlgItem(IDC_Time)->EnableWindow(1);
SetTimer(1,m_Periods,NULL);
OnSend();
}
else
{
// m_Periods=10;
//UpdateData(TRUE);
GetDlgItem(IDC_Time)->EnableWindow(0);
SetTimer(1,INFINITE,NULL);
m_bcheck=FALSE;
}//OnAutoSend();
}
void CSerialportDlg::OnTimer(UINT nIDEvent) //电子表
{
// TODO: Add your message handler code here and/or call default
UpdateData();
SetTimer(1,m_Periods,NULL);
OnSend() ;
CDialog::OnTimer(nIDEvent);
}
//定时
/*void CComm1Dlg::OnTimer(UINT nIDEvent)
{
UpdateData();
SetTimer(1,m_Period,NULL);
OnSendbtn();
CDialog::OnTimer(nIDEvent);
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -