📄 demodlg.cpp
字号:
}
void CDemoDlg::OnSelendokComboParity()
{
// TODO: Add your control notification handler code here
char temp;
int i=m_Parity.GetCurSel();
switch(i)
{
case 0:
temp='N';
break;
case 1:
temp='O';
break;
case 2:
temp='E';
break;
}
m_cParity=temp;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
AfxMessageBox("没有成功,请重试");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
}
void CDemoDlg::OnSelendokComboStopbits()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
int i=m_StopBits.GetCurSel();
switch(i)
{
case 0:
i=1;
break;
case 1:
i=2;
break;
}
m_nStopbits=i;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
AfxMessageBox("没有成功,请重试");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
}
void CDemoDlg::OnSelendokComboComselect()
{
// TODO: Add your control notification handler code here
if(m_Port.m_hComm!=NULL)
{
m_Port.ClosePort();
}
m_nCom=m_Com.GetCurSel()+1;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
AfxMessageBox("没有发现此串口或被占用");
}
}
void CDemoDlg::OnSelendokComboBaud()
{
// TODO: Add your control notification handler code here
CString temp;
int i=m_Baud.GetCurSel();
switch(i)
{
case 0:
i=300;
break;
case 1:
i=600;
break;
case 2:
i=1200;
break;
case 3:
i=2400;
break;
case 4:
i=4800;
break;
case 5:
i=9600;
break;
case 6:
i=19200;
break;
case 7:
i=38400;
break;
case 8:
i=43000;
break;
case 9:
i=56000;
break;
case 10:
i=57600;
break;
case 11:
i=115200;
break;
default:
break;
}
m_nBaud=i;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
AfxMessageBox("没有成功,请重试");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
}
void CDemoDlg::CurrentControlStatus(int ControlStatus)
{
CString str;
CString strTemp;
switch(ControlStatus)
{
case 0:
str="同步0";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 1:
if(flag1==1)
{
str="同步1";
strTemp.Format("当前运动状态:%s",str);
flag1=0;
}
else
{
str="已打开服务器";
strTemp.Format("当前运动状态:%s",str);
flag1=1;
}
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 2:
if(flag2==1)
{
str="同步2";
strTemp.Format("当前运动状态:%s",str);
flag2=0;
}
else
{
str="已关闭服务器与客户端的连接";
strTemp.Format("当前运动状态:%s",str);
flag2=1;
}
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 110:
str="后退";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 111:
str="前进";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 121:
str="左转";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 120:
str="右转";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 041:
str="电机已启动";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 040:
str="电机已关闭";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 29:
str="停止";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 055:
str="紧急停止";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
case 256:
str="状态已经复位";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);// 显示当前运动状态
break;
default:
str="错误";
strTemp.Format("当前运动状态:%s",str);
m_ctrlControlStatus.SetWindowText(strTemp);
}
UpdateData(FALSE);
}
void CDemoDlg::StrtoHex(CString str)
{
char data[512];
int len=Str2Hex(m_strSendData,data);
m_Port.WriteToPort(data,len);
}
void CDemoDlg::OnButtonReset()
{
// TODO: Add your control notification handler code here
OnButtonClosemotor();// 关闭电机
flag2=0;
OnButtonSyn2();// 关闭连接
OnButtonCountreset();
OnDestroy();//释放资源
// OnInitDialog();// 初始化对话框
m_Com.SetCurSel(0);
m_Baud.SetCurSel(5);
m_Parity.SetCurSel(0);
m_DataBits.SetCurSel(0);
m_StopBits.SetCurSel(1);
m_ctrlHexSend.SetCheck(1);
m_ctrlHexReceive.SetCheck(1);
CString strStatus;
m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512);
m_Port.StartMonitoring();
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
m_ctrlPortStatus.SetWindowText(strStatus);
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT_CYCLETIME);
CString strText;
m_nCycleTime=1000;
strText.Format("%d",m_nCycleTime);
pEdit->SetWindowText(strText); //Display cycle time
m_strSendData="欢迎您使用该演示软件!";
char cr=13,lf=10;
m_strSendData+=cr+lf;
// m_ctrlAutoClear.SetCheck(1);
// m_ctrlEditSendFile.SetWindowText("No File Selected!");
// m_animIcon.SetImageList(IDB_ANIM_IMGLIST,4,RGB(0,0,0));
SetTimer(4,200,NULL);
ShowWindow(SW_SHOW);
CurrentControlStatus(256);// 显示当前状态
OnButtonCountreset();
UpdateData(FALSE);
}
BOOL CDemoDlg::PreTranslateMessage(MSG *pMsg)
{
// TODO: Add your specialized code here and/or call the base class
//截获ESC和回车键,避免按下此键时关闭对话框
if (pMsg->message == WM_KEYDOWN)
{ LPARAM temp;
temp=pMsg->wParam;
switch(temp)
{
case VK_ESCAPE://屏蔽ESC键
return true;
break;
case VK_RETURN:
// (pMsg->wParam==VK_RETURN) */
return true;
break;
case VK_UP :// 前进
OnButtonOnward();
break;
case VK_DOWN:
OnButtonReverse();
break;
case VK_LEFT:
OnButtonTurnleft();
break;
case VK_RIGHT:
OnButtonTurnright();
break;
case VK_SPACE:
OnButtonStop();
return true;
break;
default:
return 0;
break;
}
/*if (pMsg->wParam==VK_ESCAPE):
return true;
// if(pMsg->wParam==VK_RETURN) */
// return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
void CDemoDlg::OnButtoncReverse()
{
// TODO: Add your control notification handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -