📄 comtowebdlg.cpp
字号:
if(-1 != pApp.m_nPort)
{
CTime time = CTime::GetCurrentTime();
char str[512];
sprintf(str, "【%s】\r\n 串口端口号为:%d\r\n",
time.Format("%Y-%m-%d %H:%M:%S 类型:系统"), pApp.m_nPort);
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
int nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
pApp.m_bComFound = TRUE;
time = CTime::GetCurrentTime();
sprintf(str, "【%s】\r\n 正在连接服务器,请等待...\r\n", time.Format("%Y-%m-%d %H:%M:%S 类型:系统"));
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
ConnectToSever();
}
else
{
pApp.m_nPort = 3;
CTime time = CTime::GetCurrentTime();
char str[512];
sprintf(str, "【%s】\r\n 没有找到监护仪,请确认监护仪已连接好!\r\n", time.Format("%Y-%m-%d %H:%M:%S 类型:系统"));
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
int nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
}
m_bFindComm = FALSE;
// SetEvent(m_hFindCom);
}
void CComToWebDlg::ConnectToSever()
{
if(m_pClientSocket)
{
delete m_pClientSocket;
m_pClientSocket = NULL;
}
m_pClientSocket = new CClientSocket(this);
if(!(m_pClientSocket->Create(0, SOCK_STREAM, AfxGetHostIP() )))
{
AfxMessageBox("请重新手动启动应用程序!");
return;
}
if(m_bSerialInited)
TRACE("reconnect\n");
if(m_pClientSocket->Connect(pApp.m_sSeverAddr, pApp.m_nSeverPort))
{
pApp.m_bConnected = TRUE;
if(m_nCurTimer > 0)
KillTimer(m_nCurTimer);
char* pData = new char[ m_sSerial.GetLength()+5];
sprintf(pData, "%c%c%c%s%c%c", 0XAA, 0XAA, 0X01,m_sSerial, 0XEE, 0XEE);
memset(pData+m_sSerial.GetLength()+5, 0x00, 1);
int n = strlen(pData);
m_pClientSocket->Send(pData, strlen(pData), 0);
CTime time = CTime::GetCurrentTime();
char str[512];
sprintf(str, "【%s】\r\n 连接服务器成功!\r\n", time.Format("%Y-%m-%d %H:%M:%S 类型:系统"));
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
int nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
TRACE("connect succeed\n");
}
}
LONG CComToWebDlg::OnComReceive(WPARAM ch, LPARAM port)
{
static nCnt = 0;
if(!(pApp.m_bConnected))
return 0L;
m_pBuffer[nCnt] = (char)(ch);
nCnt ++;
if(nCnt >= COM_BUFFER_LEN)
{
TRACE("m_pBuffer = %s\n", m_pBuffer);
nCnt = 0;
if(SOCKET_ERROR == m_pClientSocket->Send(m_pBuffer, COM_BUFFER_LEN, 0))
{
// m_SerialPort.ClosePort();
int nError = GetLastError();
CTime time = CTime::GetCurrentTime();
char str[512];
sprintf(str, "【%s】\r\n 服务器端程序退出!\r\n", time.Format("%Y-%m-%d %H:%M:%S 类型:系统"));
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
int nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
if(nError == WSAECONNRESET)
{
TRACE("socket error\n");
pApp.m_bConnected = FALSE;
// m_SerialPort.PauseThread();
m_pClientSocket->Close();
if(m_pClientSocket)
{
delete m_pClientSocket;
m_pClientSocket = NULL;
}
// ConnectToSever();
}
}
memset(m_pBuffer, 0x00, COM_BUFFER_LEN);
}
return 0L;
}
BOOL CComToWebDlg::DestroyWindow()
{
// m_SerialPort.ClosePort();
m_shellIcon.DeleteIcon();
if(m_pBuffer)
{
delete []m_pBuffer;
m_pBuffer = NULL;
}
return CDialog::DestroyWindow();
}
LRESULT CComToWebDlg::OnIconNotify(WPARAM wParam, LPARAM lParam)
{
if(LOWORD(lParam) == WM_LBUTTONDBLCLK)
{
ShowWindow(SW_SHOW);
}
if (LOWORD(lParam) == WM_RBUTTONDOWN)
{
CPopupMenu cMenu;
cMenu.CreatePopupMenu();
cMenu.Load(IDR_CONTROL);
CPoint pt;
GetCursorPos(&pt);
cMenu.Display(pt, this);
}
return 0;
}
void CComToWebDlg::OnQuit()
{
AfxGetMainWnd()->PostMessage(WM_CLOSE);
AfxMessageBox("aa");
CDialog::OnOK();
}
void CComToWebDlg::OnOK()
{
// TODO: Add extra validation here
BYTE addr0, addr1, addr2, addr3;
m_ctrlCenterIpAddr.GetAddress(addr0, addr1, addr2, addr3);
pApp.m_sSeverAddr.Format("%d.%d.%d.%d", addr0, addr1, addr2, addr3);
if(m_nCurTimer > 0)
KillTimer(m_nCurTimer);
if(m_pClientSocket)
{
m_pClientSocket->Close();
delete m_pClientSocket;
m_pClientSocket = NULL;
}
if(m_nCurTimer >0)
KillTimer(m_nCurTimer);
CDialog::OnOK();
}
HBRUSH CComToWebDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CreateSolidBrush(RGB(0xde, 0xee, 0x9e));// = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
pDC->SetBkMode(TRANSPARENT);
// TODO: Return a different brush if the default is not desired
return hbr;
}
void CComToWebDlg::OnStart()
{
UpdateData(TRUE);
if(0 == strcmp(_T(""), m_sSerial))
{
MessageBox(_T("请输入仪器编号"), _T("提示"), MB_ICONINFORMATION);
return;
}
BYTE addr0, addr1, addr2, addr3;
m_ctrlCenterIpAddr.GetAddress(addr0, addr1, addr2, addr3);
pApp.m_sSeverAddr.Format("%d.%d.%d.%d", addr0, addr1, addr2, addr3);
/*
if(0 == (m_nCurTimer = SetTimer(TIMER_FIND_COM, FIND_COM_ELAPSE, NULL)))
{
AfxMessageBox("请重新手动启动应用程序!");
return;
}*/
CTime time = CTime::GetCurrentTime();
char str[512];
sprintf(str, "【%s】\r\n 正在搜索串口端口号...\r\n", time.Format("%Y-%m-%d %H:%M:%S 类型:系统"));
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
int nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
FindComPort();
}
void CComToWebDlg::OnStartCommThread(WPARAM wParam, LPARAM lParam)
{
if(m_bSerialInited)
{
TRACE("reconnect\n");
m_SerialPort.RestartThread();
}
else
{
m_bSerialInited = TRUE;
m_SerialPort.StartThread();
}
m_nCurTimer = SetTimer(TIMER_MNTR, MNTR_TIMER_ELAPSE, NULL);
m_tmStart = CTime::GetCurrentTime();
CTime time = CTime::GetCurrentTime();
char str[512];
sprintf(str, "【%s】\r\n 正在采集数据...\r\n", time.Format("%Y-%m-%d %H:%M:%S 类型:系统"));
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
int nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
}
void CComToWebDlg::OnReConnect(WPARAM wParam, LPARAM lParam)
{
ConnectToSever();
// m_nCurTimer = SetTimer(TIMER_CONNECT_SEVER, CONNECT_SEVER_ELAPSE, NULL);
}
/*
void CComToWebDlg::OnStopMntr()
{
if(m_SerialPort.IsThreadAlive())
{
m_SerialPort.PauseThread();
m_SerialPort.ClosePort();
}
if(m_pClientSocket)
{
m_pClientSocket->Close();
delete m_pClientSocket;
m_pClientSocket = NULL;
}
CTime time = CTime::GetCurrentTime();
char str[512];
sprintf(str, "【%s】\r\n 已经停止数据采集!\r\n", time.Format("%Y-%m-%d %H:%M:%S 类型:系统"));
m_sState += str;
m_ctrlState.SetWindowText(m_sState);
int nLines = m_ctrlState.GetLineCount();
m_ctrlState.LineScroll(nLines);
}*/
void CComToWebDlg::OnChangeSnEdit()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
// UpdateData(FALSE);
UpdateData(TRUE);
}
void CComToWebDlg::OnFieldchangedCenterIpaddr(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -