// ChatRoomClientDlg.cpp : 实现文件 // #include "stdafx.h" #include "ChatRoomClient.h" #include "ChatRoomClientDlg.h" #include "afxdialogex.h" #include "tools.h" #include #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CChatRoomClientDlg 对话框 CChatRoomClientDlg::CChatRoomClientDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CChatRoomClientDlg::IDD, pParent) , m_bAutoSend(FALSE) , m_nInterval(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CChatRoomClientDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CChatRoomClientDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CChatRoomClientDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void CChatRoomClientDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT1, m_ServerIP); DDX_Control(pDX, IDC_EDIT2, m_ServerPort); //DDX_Control(pDX, IDC_EDIT3, m_NickName); DDX_Control(pDX, IDC_LIST1, m_RecvList); DDX_Control(pDX, IDC_EDIT4, m_SendInfo); DDX_Control(pDX, IDC_BUTTON1, BTN_LOGIN); DDX_Control(pDX, IDC_CHECK1, BTN_AUTOSEND); DDX_Check(pDX, IDC_CHECK1, m_bAutoSend); DDX_Text(pDX, IDC_EDIT3, m_nInterval); DDX_Control(pDX, IDC_EDIT6, ED_Noz); DDX_Control(pDX, IDC_EDIT7, ED_Pump); DDX_Control(pDX, IDC_COMBO_CALLBACKTYPE, CB_CALLBACKTYPE); DDX_Control(pDX, IDC_EDIT_CALLBACKNUM, ED_CALLBACKNUM); DDX_Control(pDX, IDC_RICHEDIT21, m_richedit); DDX_Control(pDX, IDC_COMBO1, CB_Port); DDX_Control(pDX, IDC_DATETIMEPICKER1, DateCtrl); } BEGIN_MESSAGE_MAP(CChatRoomClientDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CChatRoomClientDlg::Login) ON_BN_CLICKED(IDC_BUTTON2, &CChatRoomClientDlg::OnSendText) ON_BN_CLICKED(IDC_BUTTON3, &CChatRoomClientDlg::CloseSocket) ON_WM_TIMER() ON_EN_CHANGE(IDC_EDIT5, &CChatRoomClientDlg::OnEnChangeEdit5) ON_EN_CHANGE(IDC_EDIT3, &CChatRoomClientDlg::ChangeInterval) ON_BN_CLICKED(IDC_CHECK1, &CChatRoomClientDlg::ClickAutoSend) ON_BN_CLICKED(IDC_BUTTON4, &CChatRoomClientDlg::UpNoz) ON_BN_CLICKED(IDC_BUTTON5, &CChatRoomClientDlg::Filling) ON_BN_CLICKED(IDC_BUTTON6, &CChatRoomClientDlg::HangNoz) ON_BN_CLICKED(IDC_BUTTON7, &CChatRoomClientDlg::Trade) ON_BN_CLICKED(IDC_BUTTON13, &CChatRoomClientDlg::Trade_old) ON_EN_CHANGE(IDC_EDIT_VL, &CChatRoomClientDlg::OnEnChangeEditVl) ON_EN_CHANGE(IDC_EDIT_FIP, &CChatRoomClientDlg::OnEnChangeEditFip) ON_EN_CHANGE(IDC_EDIT_NOZ, &CChatRoomClientDlg::OnEnChangeEditNoz) ON_EN_CHANGE(IDC_EDIT_YLS, &CChatRoomClientDlg::OnEnChangeEditYls) ON_EN_CHANGE(IDC_EDIT_QLS, &CChatRoomClientDlg::OnEnChangeEditQls) ON_EN_CHANGE(IDC_EDIT_YL, &CChatRoomClientDlg::OnEnChangeEditYl) ON_EN_CHANGE(IDC_EDIT_QL, &CChatRoomClientDlg::OnEnChangeEditQl) ON_EN_CHANGE(IDC_EDIT_TTC, &CChatRoomClientDlg::OnEnChangeEditTtc) ON_EN_CHANGE(IDC_EDIT_ERROR, &CChatRoomClientDlg::OnEnChangeEditError) ON_BN_CLICKED(IDC_ReflashTTC, &CChatRoomClientDlg::OnBnClickedReflashttc) ON_BN_CLICKED(IDC_ReflashBegTime, &CChatRoomClientDlg::OnBnClickedReflashbegtime) ON_BN_CLICKED(IDC_ReflashEndTime, &CChatRoomClientDlg::OnBnClickedReflashendtime) ON_BN_CLICKED(IDC_ReflashBegALL, &CChatRoomClientDlg::OnBnClickedReflashbegall) ON_BN_CLICKED(IDC_BUTTON_CALLBACK, &CChatRoomClientDlg::OnBnClickedButtonCallback) ON_BN_CLICKED(IDC_BUTTON9, &CChatRoomClientDlg::Filling_old) ON_EN_CHANGE(IDC_EDIT_PRESS, &CChatRoomClientDlg::OnEnChangeEditPress) ON_BN_CLICKED(IDC_BUTTON_OPENPORT, &CChatRoomClientDlg::OnBnClickedButtonOpenport) ON_BN_CLICKED(IDC_BUTTON11, &CChatRoomClientDlg::Trade_VRC36) ON_EN_CHANGE(IDC_EDIT_PWM, &CChatRoomClientDlg::OnEnChangeEditPwm) ON_BN_CLICKED(IDC_VCCERR_VRC36, &CChatRoomClientDlg::OnBnClickedVccerrVrc36) ON_EN_CHANGE(IDC_EDIT_OFFSET, &CChatRoomClientDlg::OnEnChangeEditOffset) ON_EN_CHANGE(IDC_EDIT_NOZ2, &CChatRoomClientDlg::OnEnChangeEditNoz2) ON_EN_CHANGE(IDC_EDIT_NOZ3, &CChatRoomClientDlg::OnEnChangeEditNoz3) ON_EN_CHANGE(IDC_EDIT_NOZ4, &CChatRoomClientDlg::OnEnChangeEditNoz4) ON_BN_CLICKED(IDC_BUTTON12, &CChatRoomClientDlg::OnBnClickedButton12) ON_EN_CHANGE(IDC_EDIT_CURRENT, &CChatRoomClientDlg::OnEnChangeEditCurrent) END_MESSAGE_MAP() // CChatRoomClientDlg 消息处理程序 BOOL CChatRoomClientDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 //m_ServerIP.SetWindowText(_T("10.35.249.6")); m_ServerIP.SetWindowText(_T("127.0.0.1")); m_ServerPort.SetWindowText(_T("10000")); int rtn = m_udpClient.Create(0, 2, NULL); m_udpClient.SetDialog(this); //BTN_AUTOSEND.SetCheck(TRUE); m_bAutoSend = TRUE; m_nInterval = 500; UpdateData(FALSE); SetTimer(1, m_nInterval, NULL); m_RecvList.SetHorizontalExtent(5000); GetDlgItem(IDC_EDIT_FIP)->SetWindowText(getConfig("fip").c_str()); GetDlgItem(IDC_EDIT_NOZ)->SetWindowText(getConfig("noz").c_str()); GetDlgItem(IDC_EDIT_NOZ2)->SetWindowText(getConfig("noz2").c_str()); GetDlgItem(IDC_EDIT_NOZ3)->SetWindowText(getConfig("noz3").c_str()); GetDlgItem(IDC_EDIT_NOZ4)->SetWindowText(getConfig("noz4").c_str()); GetDlgItem(IDC_EDIT_YLS)->SetWindowText(getConfig("YLS").c_str()); GetDlgItem(IDC_EDIT_QLS)->SetWindowText(getConfig("QLS").c_str()); GetDlgItem(IDC_EDIT_YL)->SetWindowText(getConfig("YL").c_str()); GetDlgItem(IDC_EDIT_QL)->SetWindowText(getConfig("QL").c_str()); GetDlgItem(IDC_EDIT_VL)->SetWindowText(getConfig("VL").c_str()); GetDlgItem(IDC_EDIT_TTC)->SetWindowText(getConfig("TTC").c_str()); GetDlgItem(IDC_EDIT_ERROR)->SetWindowText(getConfig("ERROR").c_str()); GetDlgItem(IDC_EDIT_PRESS)->SetWindowText(getConfig("PRESS").c_str()); GetDlgItem(IDC_EDIT_CURRENT)->SetWindowText(getConfig("CURRENT").c_str()); GetDlgItem(IDC_EDIT_PWM)->SetWindowText(getConfig("PWM").c_str()); GetDlgItem(IDC_EDIT_OFFSET)->SetWindowText(getConfig("OFFSET").c_str()); CB_CALLBACKTYPE.AddString("首次"); CB_CALLBACKTYPE.AddString("传输中"); CB_CALLBACKTYPE.AddString("最后一次"); CB_CALLBACKTYPE.SetCurSel(2); ED_CALLBACKNUM.SetWindowText("1"); std::string strport = getConfig("PORT"); CString strCom[255]; CString strTemp; CString strPort; HANDLE hCom; int index = 0; for (int i = 0; i<255; i++) { strTemp.Format("\\\\.\\COM%d", i + 1); strPort.Format("%d", i + 1); hCom = CreateFile(strTemp, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); if (INVALID_HANDLE_VALUE == hCom) continue; strCom[i] = strTemp; CB_Port.AddString(strPort); if (string(strPort.GetString()) == strport) { CB_Port.SetCurSel(index); } index++; CloseHandle(hCom); } com.linkRichEdit(&m_richedit); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CChatRoomClientDlg::Login() { CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); m_SocketClient.Create(); m_SocketClient.SetDialog(this); int rtn; rtn = m_SocketClient.Connect(szIP, nPort); if (rtn) { //MessageBox(_T("连接服务器成功!")); InsertString( "TCP:已连接上服务器;"); //发送心跳命令 BTN_LOGIN.EnableWindow(FALSE); } else { InsertString( "TCP:连接服务器失败;"); int err = GetLastError(); TRACE("%d\n", err); m_SocketClient.Close(); } CString szFormat; //szFormat.Format(_T("%s---->%s"), m_szName, _T("进入聊天室")); //m_SocketClient.Send(szFormat.GetBuffer(szFormat.GetLength()), szFormat.GetLength() * 2); //CString szSendText, szInfo; //m_SendInfo.GetWindowText(szSendText); //CStringA Info; //Info = szSendText; //m_SocketClient.Send(Info, Info.GetLength()); } void CChatRoomClientDlg::ReceiveText() { BYTE pBuffer[BUFFER_SIZE]; int nRecvNum = m_SocketClient.Receive(pBuffer, BUFFER_SIZE); if (nRecvNum != -1) { CString strS = "recv:"; for (int i = 0; i < nRecvNum; ++i) { CString strW; CStringA str; strW.Format(_T("%.2x"), pBuffer[i]); strS += strW + " "; } //CStringA strA((LPSTR)pBuffer); //strW.Format(_T("%s"), pBuffer); InsertString(strS); } } void CChatRoomClientDlg::ReceiveUdpText() { BYTE pBuffer2[BUFFER_SIZE] = { 0 }; CString straddr; UINT port; m_udpClient.GetPeerName(straddr, port); int nRecvNum = m_udpClient.ReceiveFrom(pBuffer2, BUFFER_SIZE, straddr, port); CString str(pBuffer2); //BYTE pBuffer[BUFFER_SIZE]; if (nRecvNum != -1) { CString strS = "UDPRECV:"; for (int i = 0; i < nRecvNum; ++i) { CString strW; CStringA str; strW.Format(_T("%.2x"), pBuffer2[i]); strS += strW + " "; } InsertString(strS); } //InsertString( L"UDPRECV: " + str); } void CChatRoomClientDlg::OnSendText() { CString szSendText, szInfo; m_SendInfo.GetWindowText(szSendText); szInfo = szSendText; if (szInfo == L"") return; CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("UDPSEND: " + szInfo); //int rtnA = checkBeforeSend(szInfo); //if (!rtnA) // return; //int rtnB = sendTCPData(szInfo); //int rtnC = checkAfterSend(rtnB, szInfo); } int frame = 0; BOOL CChatRoomClientDlg::sendTCPData(CString& strData) { CString str; CString str1 = ""; frame = frame % 99 + 1; CString strFrame; strFrame.Format(_T("%.2d"), frame); //str = strData; BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 }; memset(buff, 0, 1024); str = strData; int interval = 2; if (strData.GetLength() > 3) { if (strData[2] == ' ') { interval = 3; } else { interval = 2; } } //strData = strFrame + ' ' + strData; int extra = interval - 2; int len = (strData.GetLength() + extra) / interval; for (int i = 0; i < len; ++i) { //int y1 = char(strData[i * interval]); //int y2 = char(strData[i * interval + 1]); //if (y1 <= '9') y1 = y1 - '0'; //else if(y1 <= 'Z') y1 = y1 - 'A' + 10; //else y1 = y1 - 'a' + 10; //if (y2 <= '9') y2 = y2 - '0'; //else if (y2 <= 'Z') y2 = y2 - 'A' + 10; //else y2 = y2 - 'a' + 10; //buff[i] = (y1) * 16 + (y2); CString str2 = strData.Mid(i*interval, 2); sscanf_s(str2, "%2x", &buff[i]); //CString str2 = strData[i * interval] + strData[i * interval + 1]; //str1 += str.Left(2); //if (str.GetLength() > 3) // str = str.Right(str.GetLength() - 3); } //strData = str1; //memcpy(buff, strData.GetBuffer(strData.GetLength()), strData.GetLength()); //memcpy(buff, str, str.GetLength()/2); int rtn = m_SocketClient.Send(buff, len); return rtn; } void CChatRoomClientDlg::sendUDPData(CString strData, UINT nPort, LPCTSTR lpszAddress) { CString str; CString str1 = ""; BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 }; memset(buff, 0, 1024); str = strData; int interval = 2; if (strData.GetLength() > 3) { if (strData[2] == ' ') { interval = 3; } else { interval = 2; } } int extra = interval - 2; int len = (strData.GetLength() + extra) / interval; for (int i = 0; i < len; ++i) { CString str2 = strData.Mid(i*interval, 2); sscanf_s(str2, "%2x", &buff[i]); } //m_udpClient.SendTo(strData.GetBuffer(strData.GetLength()), strData.GetLength() * 2, nPort, lpszAddress); int rtn = m_udpClient.SendTo(buff, len, nPort, lpszAddress); } BOOL CChatRoomClientDlg::checkBeforeSend(CString strData) { if (strData.GetLength() * 2 > BUFFER_SIZE) { InsertString( "发送信息超出规定长度;"); return FALSE; } return TRUE; } BOOL CChatRoomClientDlg::checkAfterSend(int result, CString strData) { if (result == -1) { InsertString( "发送出错;"); CloseSocket(); Login(); return FALSE; } //else if (result < strData.GetLength()) //{ // InsertString( L"发送不完整;"); // return FALSE; //} else { strData = "send:" + strData; InsertString( strData); } return TRUE; } void CChatRoomClientDlg::CloseSocket() { m_SocketClient.Close(); BTN_LOGIN.EnableWindow(TRUE); } void CChatRoomClientDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CString szSendText, szInfo; m_SendInfo.GetWindowText(szSendText); szInfo = szSendText; //sendTCPData(szInfo); //int rtnB = sendTCPData(szInfo); //int rtnC = checkAfterSend(rtnB, szInfo); //m_udpClient.SendTo(szInfo.GetBuffer(szInfo.GetLength()), szInfo.GetLength() * 2, 27015, L"10.35.193.146"); //CString szSendText, szInfo; m_SendInfo.GetWindowText(szSendText); szInfo = szSendText; if (szInfo == L"") return; CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("UDPSEND: " + szInfo); CDialogEx::OnTimer(nIDEvent); } void CChatRoomClientDlg::OnEnChangeEdit5() { UpdateData(FALSE); } void CChatRoomClientDlg::InsertString(CString str) { m_RecvList.InsertString(m_RecvList.GetCount(), str); if (m_RecvList.GetCurSel() == m_RecvList.GetCount() - 2) { m_RecvList.SetCurSel(m_RecvList.GetCount() - 1); } } void CChatRoomClientDlg::ChangeInterval() { UpdateData(TRUE); if (m_bAutoSend) { SetTimer(1, m_nInterval, NULL); } } void CChatRoomClientDlg::ClickAutoSend() { UpdateData(TRUE); if (m_bAutoSend) { SetTimer(1, m_nInterval, NULL); } else { KillTimer(1); } } void CChatRoomClientDlg::UpNoz() { SendUpNozData(); } void CChatRoomClientDlg::Filling() { SendFillingData(); } void CChatRoomClientDlg::HangNoz() { SendHangNozData(); } void CChatRoomClientDlg::Trade() { SendTradeData(); } void CChatRoomClientDlg::SendUpNozData() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); CString strPump; ED_Pump.GetWindowText(strPump); CString strNoz; ED_Noz.GetWindowText(strNoz); CString szInfo = "010100010100"; szInfo += "0e"; szInfo += "01"; szInfo += "0" + strPump; szInfo += "0" + strNoz; szInfo += strTime; szInfo += "00000000"; CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("SEND提枪: " + szInfo); } void CChatRoomClientDlg::SendFillingData() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); CString strPump; ED_Pump.GetWindowText(strPump); CString strNoz; ED_Noz.GetWindowText(strNoz); int fip = getfip(); int noz = getnoz(); int YLS = getYLS() * 10; int QLS = getQLS() * 10; int YL = getYL() * 100; int QL = getQL() * 100; int VL = getVL() * 1000; int TTC = getTTC(); int PRESS = getPress(); int ERR = getERROR(); int PWM = getPWM(); int CURRENT = getCurrent(); char chfip[3] = { 0 }; char chnoz[3] = { 0 }; char chyls[5] = { 0 }; char chqls[5] = { 0 }; char chyl[7] = { 0 }; char chql[7] = { 0 }; char chvl[5] = { 0 }; char chpress[5] = { 0 }; char cherr[5] = { 0 }; char chpwm[5] = { 0 }; char chcurrent[5] = { 0 }; sprintf_s(chfip, "%02x", fip); sprintf_s(chnoz, "%02x", noz); sprintf_s(chyls, "%04x", YLS); sprintf_s(chqls, "%04x", QLS); sprintf_s(chyl, "%06x", YL); sprintf_s(chql, "%06x", QL); sprintf_s(chvl, "%04x", VL); sprintf_s(cherr, "%04x", ERR); sprintf_s(chpress, "%04x", PRESS); sprintf_s(chpwm, "%04x", PWM); sprintf_s(chcurrent, "%04x", CURRENT); CString szInfo = "010100010100"; szInfo += "17";//0f szInfo += "02"; szInfo += chfip; szInfo += chnoz; szInfo += chyl; //2000 / 100.0 szInfo += chql; //1000 / 100.0 szInfo += chqls; //20 / 10.0 szInfo += chvl; //1000 / 1000.0 szInfo += chpress;// "0064"; //100 szInfo += cherr;// "0002"; szInfo += chyls; //1000 / 1000.0 szInfo += chpwm; szInfo += chcurrent; CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("SEND实时加油数据: " + szInfo); } void CChatRoomClientDlg::SendHangNozData() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); CString strPump; ED_Pump.GetWindowText(strPump); CString strNoz; ED_Noz.GetWindowText(strNoz); CString szInfo = "010100010100"; szInfo += "0a"; szInfo += "03"; szInfo += "0" + strPump; szInfo += "0" + strNoz; szInfo += strTime; CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("SEND挂枪: " + szInfo); } string CChatRoomClientDlg::getDate() { CString str; CTime tm; DateCtrl.GetTime(tm); char time[30] = { 0 }; sprintf_s(time, "%04d%02d%02d", tm.GetYear(), tm.GetMonth(), tm.GetDay()); str = time; return str; } void CChatRoomClientDlg::SendTradeData() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); int len = 1 + (1 + 1) + 4 + (2 + 2 + 3 + 3 + 2) + 7 + 7 + 2 + 2 + 2+2; int fip = getfip(); int noz = getnoz(); int YLS = getYLS() * 10; int QLS = getQLS() * 10; int YL = getYL() * 100; int QL = getQL() * 100; int VL = getVL() * 1000; int TTC = getTTC(); int PRESS = getPress(); int ERR = getERROR(); int PWM = getPWM(); int CURRENT = getCurrent(); string begtime = getDate() + getbegtime(); string endtime = getDate() + getendtime(); char chlen[3] = { 0 }; char chfip[3] = { 0 }; char chnoz[3] = { 0 }; char chyls[5] = { 0 }; char chqls[5] = { 0 }; char chyl[7] = { 0 }; char chql[7] = { 0 }; char chvl[5] = { 0 }; char chttc[9] = { 0 }; char cherr[5] = { 0 }; char chpress[5] = { 0 }; char chpwm[5] = { 0 }; char chcurrent[5] = { 0 }; sprintf_s(chlen, "%02x", len); sprintf_s(chfip, "%02x", fip); sprintf_s(chnoz, "%02x", noz); sprintf_s(chttc, "%08x", TTC); sprintf_s(chyls, "%04x", YLS); sprintf_s(chqls, "%04x", QLS); sprintf_s(chyl, "%06x", YL); sprintf_s(chql, "%06x", QL); sprintf_s(chvl, "%04x", VL); sprintf_s(cherr, "%04x", ERR); sprintf_s(chpress, "%04x", PRESS); sprintf_s(chpwm, "%04x", PWM); sprintf_s(chcurrent, "%04x", CURRENT); CString szInfo = "010100010100"; //szInfo += "0f"; szInfo += chlen; szInfo += "04"; szInfo += chfip; szInfo += chnoz; //szInfo += strTime; //szInfo += "00000000"; // 00 07 D0 00 03 e8 05 12 01 2c 00 64 szInfo += chttc; szInfo += chyl;//"0003e8"; //1000 / 100.0 szInfo += chyls;//"0015"; //21 / 10.0 szInfo += chql;//"0003e8"; //1000 / 100.0 szInfo += chqls;//"0014"; //20 / 10.0 //szInfo += "03e8"; //1000 / 1000.0 szInfo += chvl; szInfo += begtime.c_str(); szInfo += endtime.c_str(); szInfo += cherr; szInfo += chpress; szInfo += chpwm; szInfo += chcurrent; BYTE tmpbuf[512] = { 0 }; int szlen = szInfo.GetLength(); for (int i = 0; i < szlen/2; i++) { string str = szInfo.Mid(i * 2, 2); tmpbuf[i] = strtol(str.c_str(), NULL, 16); } //重新计算crc WORD nSum = 0; nSum = chkcrc(tmpbuf , szlen/2 , 0xA001); //numberToBuffer(nSum, 2, buffer + len - 2); char chcrc[5]; sprintf_s(chcrc, "%04x", nSum); szInfo += chcrc; //01 01 00 01 01 00 0f 04 01 01 00 07 D0 00 15 00 03 e8 00 14 01 2c CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("SEND交易数据: " + szInfo); } void CChatRoomClientDlg::Trade_old() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); int len = 1 + (1 + 1) + 2 + 2 + 3 + 3 + 2; int fip = getfip(); int noz = getnoz(); int YLS = getYLS() * 10; int QLS = getQLS() * 10; int YL = getYL() * 100; int QL = getQL() * 100; int VL = getVL() * 1000; int TTC = getTTC(); int ERR = getERROR(); char chlen[3] = { 0 }; char chfip[3] = { 0 }; char chnoz[3] = { 0 }; char chyls[5] = { 0 }; char chqls[5] = { 0 }; char chyl[7] = { 0 }; char chql[7] = { 0 }; char chvl[5] = { 0 }; sprintf_s(chlen, "%02x", len); sprintf_s(chfip, "%02x", fip); sprintf_s(chnoz, "%02x", noz); sprintf_s(chyls, "%04x", YLS); sprintf_s(chqls, "%04x", QLS); sprintf_s(chyl, "%06x", YL); sprintf_s(chql, "%06x", QL); sprintf_s(chvl, "%04x", VL); CString szInfo = "010100010100"; //szInfo += "0f"; szInfo += chlen; szInfo += "04"; szInfo += chfip; szInfo += chnoz; //szInfo += strTime; //szInfo += "00000000"; // 00 07 D0 00 03 e8 05 12 01 2c 00 64 szInfo += chyl;//"0003e8"; //1000 / 100.0 szInfo += chyls;//"0015"; //21 / 10.0 szInfo += chql;//"0003e8"; //1000 / 100.0 szInfo += chqls;//"0014"; //20 / 10.0 //szInfo += "03e8"; //1000 / 1000.0 szInfo += chvl; //01 01 00 01 01 00 0f 04 01 01 00 07 D0 00 15 00 03 e8 00 14 01 2c CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("SEND交易数据: " + szInfo); } int CChatRoomClientDlg::getfip() { CString str; GetDlgItem(IDC_EDIT_FIP)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getnoz() { CString str; GetDlgItem(IDC_EDIT_NOZ)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getnoz2() { CString str; GetDlgItem(IDC_EDIT_NOZ2)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getnoz3() { CString str; GetDlgItem(IDC_EDIT_NOZ3)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getnoz4() { CString str; GetDlgItem(IDC_EDIT_NOZ4)->GetWindowText(str); int val = atoi(str); return val; } double CChatRoomClientDlg::getYLS() { CString str; GetDlgItem(IDC_EDIT_YLS)->GetWindowText(str); double val = atof(str); return val; } double CChatRoomClientDlg::getQLS() { CString str; GetDlgItem(IDC_EDIT_QLS)->GetWindowText(str); double val = atof(str); return val; } double CChatRoomClientDlg::getYL() { CString str; GetDlgItem(IDC_EDIT_YL)->GetWindowText(str); double val = atof(str); return val; } double CChatRoomClientDlg::getQL() { CString str; GetDlgItem(IDC_EDIT_QL)->GetWindowText(str); double val = atof(str); return val; } double CChatRoomClientDlg::getVL() { CString str; GetDlgItem(IDC_EDIT_VL)->GetWindowText(str); double val = atof(str); return val; } int CChatRoomClientDlg::getTTC() { CString str; GetDlgItem(IDC_EDIT_TTC)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getPress() { CString str; GetDlgItem(IDC_EDIT_PRESS)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getCurrent() { CString str; GetDlgItem(IDC_EDIT_CURRENT)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getPWM() { CString str; GetDlgItem(IDC_EDIT_PWM)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getOffset() { CString str; GetDlgItem(IDC_EDIT_OFFSET)->GetWindowText(str); int val = atoi(str); return val; } int CChatRoomClientDlg::getERROR() { CString str; GetDlgItem(IDC_EDIT_ERROR)->GetWindowText(str); int val = atoi(str); return val; } string CChatRoomClientDlg::getbegtime() { COleDateTime dateTime; ((CDateTimeCtrl*)GetDlgItem(IDC_BEGTIME))->GetTime(dateTime); string time = dateTime.Format("%H%M%S"); return time; } string CChatRoomClientDlg::getendtime() { COleDateTime dateTime; ((CDateTimeCtrl*)GetDlgItem(IDC_ENDTIME))->GetTime(dateTime); string time = dateTime.Format("%H%M%S"); return time; } void CChatRoomClientDlg::OnEnChangeEditVl() { saveConfig("VL",getVL()); } void CChatRoomClientDlg::OnEnChangeEditFip() { saveConfig("fip", getfip()); } void CChatRoomClientDlg::OnEnChangeEditNoz() { saveConfig("noz", getnoz()); } void CChatRoomClientDlg::OnEnChangeEditYls() { saveConfig("YLS", getYLS()); } void CChatRoomClientDlg::OnEnChangeEditQls() { saveConfig("QLS", getQLS()); } void CChatRoomClientDlg::OnEnChangeEditYl() { saveConfig("YL", getYL()); } void CChatRoomClientDlg::OnEnChangeEditQl() { saveConfig("QL", getQL()); } void CChatRoomClientDlg::OnEnChangeEditTtc() { saveConfig("TTC", getTTC()); } void CChatRoomClientDlg::OnEnChangeEditError() { saveConfig("ERROR", getERROR()); } void CChatRoomClientDlg::OnBnClickedReflashttc() { CString str; GetDlgItem(IDC_EDIT_TTC)->SetWindowText(std::to_string(getTTC()+1).c_str()); } void CChatRoomClientDlg::OnBnClickedReflashbegtime() { CTime tm = CTime::GetCurrentTime(); ((CDateTimeCtrl*)GetDlgItem(IDC_BEGTIME))->SetTime(&tm); } void CChatRoomClientDlg::OnBnClickedReflashendtime() { CTime tm = CTime::GetCurrentTime(); ((CDateTimeCtrl*)GetDlgItem(IDC_ENDTIME))->SetTime(&tm); } void CChatRoomClientDlg::OnBnClickedReflashbegall() { CTime tm = CTime::GetCurrentTime(); DateCtrl.SetTime(&tm); OnBnClickedReflashttc(); OnBnClickedReflashbegtime(); OnBnClickedReflashendtime(); } void CChatRoomClientDlg::OnBnClickedButtonCallback() { CString strnum; ED_CALLBACKNUM.GetWindowText(strnum); int callbacknum = atoi(strnum); if (callbacknum < 1) { callbacknum = 1; } else if (callbacknum > 10) { callbacknum = 10; } ED_CALLBACKNUM.SetWindowText(std::to_string(callbacknum).c_str()); int state = CB_CALLBACKTYPE.GetCurSel()+1; CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); //int len = 1 + (1 + 1) + 4 + (2 + 2 + 3 + 3 + 2) + 7 + 7 + 2; int len = 1 + 1 + 1 + 4 + 1 + 1 + callbacknum * 39; int fip = getfip(); int noz = getnoz(); int YLS = getYLS() * 10; int QLS = getQLS() * 10; int YL = getYL() * 100; int QL = getQL() * 100; int VL = getVL() * 1000; int TTC = getTTC(); int ERR = getERROR(); int PRESS = getPress(); int PWM = getPWM(); int OFFSET = getOffset(); string begtime = getDate() + getbegtime(); string endtime = getDate() + getendtime(); char chlen[5] = { 0 }; char chfip[3] = { 0 }; char chstate[3] = { 0 }; char chnum[3] = { 0 }; char chnoz[3] = { 0 }; char chyls[5] = { 0 }; char chqls[5] = { 0 }; char chyl[7] = { 0 }; char chql[7] = { 0 }; char chvl[5] = { 0 }; char chttc[9] = { 0 }; char cherr[5] = { 0 }; char chpress[5] = { 0 }; char chpwm[5] = { 0 }; char choffset[5] = { 0 }; sprintf_s(chlen, "%04x", len); sprintf_s(chfip, "%02x", fip); sprintf_s(chstate, "%02x", state); sprintf_s(chnum, "%02x", callbacknum); sprintf_s(chnoz, "%02x", noz); sprintf_s(chttc, "%08x", TTC); sprintf_s(chyls, "%04x", YLS); sprintf_s(chqls, "%04x", QLS); sprintf_s(chyl, "%06x", YL); sprintf_s(chql, "%06x", QL); sprintf_s(chvl, "%04x", VL); sprintf_s(cherr, "%04x", ERR); sprintf_s(chpress, "%04x", PRESS); sprintf_s(chpwm, "%04x", PWM); sprintf_s(choffset, "%04x", OFFSET); CString szInfo = "0101010101"; //szInfo += "0f"; szInfo += chlen; szInfo += "0d"; szInfo += "02";//tag szInfo += chfip; szInfo += getDate().c_str(); szInfo += chstate; szInfo += chnum; for (int i = 0; i < callbacknum; i++) { szInfo += chnoz; szInfo += chttc; szInfo += chyl;//"0003e8"; //1000 / 100.0 szInfo += chyls;//"0015"; //21 / 10.0 szInfo += chql;//"0003e8"; //1000 / 100.0 szInfo += chqls;//"0014"; //20 / 10.0 szInfo += chvl; szInfo += begtime.c_str(); string time = endtime; time[time.length() - 1] = '0'+i; endtime = time; szInfo += endtime.c_str(); szInfo += cherr; szInfo += chpress; szInfo += chpwm; szInfo += choffset; } BYTE tmpbuf[512] = { 0 }; int szlen = szInfo.GetLength(); for (int i = 0; i < szlen / 2; i++) { string str = szInfo.Mid(i * 2, 2); tmpbuf[i] = strtol(str.c_str(), NULL, 16); } //重新计算crc WORD nSum = 0; nSum = chkcrc(tmpbuf, szlen / 2, 0xA001); //numberToBuffer(nSum, 2, buffer + len - 2); char chcrc[5]; sprintf_s(chcrc, "%04x", nSum); szInfo += chcrc; CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("SEND回叫数据: " + szInfo); } void CChatRoomClientDlg::Filling_old() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); CString strPump; ED_Pump.GetWindowText(strPump); CString strNoz; ED_Noz.GetWindowText(strNoz); int fip = getfip(); int noz = getnoz(); int YLS = getYLS() * 10; int QLS = getQLS() * 10; int YL = getYL() * 100; int QL = getQL() * 100; int VL = getVL() * 1000; int TTC = getTTC(); int PRESS = getPress(); int ERR = getERROR(); char chfip[3] = { 0 }; char chnoz[3] = { 0 }; char chyls[5] = { 0 }; char chqls[5] = { 0 }; char chyl[7] = { 0 }; char chql[7] = { 0 }; char chvl[5] = { 0 }; char chpress[5] = { 0 }; char cherr[5] = { 0 }; sprintf_s(chfip, "%02x", fip); sprintf_s(chnoz, "%02x", noz); sprintf_s(chyls, "%04x", YLS); sprintf_s(chqls, "%04x", QLS); sprintf_s(chyl, "%06x", YL); sprintf_s(chql, "%06x", QL); sprintf_s(chvl, "%04x", VL); sprintf_s(cherr, "%04x", ERR); sprintf_s(chpress, "%04x", PRESS); CString szInfo = "010100010100"; szInfo += "0f"; szInfo += "02"; szInfo += chfip; szInfo += chnoz; szInfo += chyl; //2000 / 100.0 szInfo += chql; //1000 / 100.0 szInfo += chqls; //20 / 10.0 szInfo += chvl; //1000 / 1000.0 szInfo += chpress;// "0064"; //100 CString szIP, szPort; UINT nPort; m_ServerIP.GetWindowText(szIP); m_ServerPort.GetWindowText(szPort); nPort = atoi(szPort); sendUDPData(szInfo, nPort, szIP); InsertString("SEND实时加油数据: " + szInfo); } void CChatRoomClientDlg::OnEnChangeEditPress() { saveConfig("PRESS", getPress()); } void CChatRoomClientDlg::OnBnClickedButtonOpenport() { int portno = 0; CString strport; GetDlgItem(IDC_COMBO1)->GetWindowText(strport); portno = atoi(strport.GetString()); com.opencom(portno); saveConfig("PORT", strport.GetString()); } void CChatRoomClientDlg::Trade_VRC36() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); int len = 1 + (1 + 1) + 4 + (2 + 2 + 3 + 3 + 2) + 7 + 7 + 2 + 2 + 2 + 2; int fip = getfip(); int noz = getnoz(); int YLS = getYLS() * 10; int QLS = getQLS() * 10; int YL = getYL() * 100; int QL = getQL() * 100; int VL = getVL() * 1000; int TTC = getTTC(); int PRESS = getPress(); int ERR = getERROR(); int PWM = getPWM(); int CURRENT = getCurrent(); string begtime = getDate() + getbegtime(); string endtime = getDate() + getendtime(); char chlen[3] = { 0 }; char chfip[3] = { 0 }; char chnoz[3] = { 0 }; char chyls[5] = { 0 }; char chqls[5] = { 0 }; char chyl[7] = { 0 }; char chql[7] = { 0 }; char chvl[5] = { 0 }; char chttc[9] = { 0 }; char cherr[5] = { 0 }; char chpress[5] = { 0 }; char chpwm[5] = { 0 }; char chcurrent[5] = { 0 }; sprintf_s(chlen, "%02d", len);//bcd sprintf_s(chfip, "%02x", fip); sprintf_s(chnoz, "%02x", noz); sprintf_s(chttc, "%08x", TTC); sprintf_s(chyls, "%04x", YLS); sprintf_s(chqls, "%04x", QLS); sprintf_s(chyl, "%06x", YL); sprintf_s(chql, "%06x", QL); sprintf_s(chvl, "%04x", VL); sprintf_s(cherr, "%04x", ERR); sprintf_s(chpress, "%04x", PRESS); sprintf_s(chpwm, "%04x", PWM); sprintf_s(chcurrent, "%04x", CURRENT); CString szInfo = "fa010100" + CString(chfip) + "0100"; //szInfo += "0f"; szInfo += chlen; szInfo += "04"; szInfo += chfip; szInfo += chnoz; //szInfo += strTime; //szInfo += "00000000"; // 00 07 D0 00 03 e8 05 12 01 2c 00 64 szInfo += chttc; szInfo += chyl;//"0003e8"; //1000 / 100.0 szInfo += chyls;//"0015"; //21 / 10.0 szInfo += chql;//"0003e8"; //1000 / 100.0 szInfo += chqls;//"0014"; //20 / 10.0 //szInfo += "03e8"; //1000 / 1000.0 szInfo += chvl; szInfo += begtime.c_str(); szInfo += endtime.c_str(); szInfo += cherr; szInfo += chpress; szInfo += chpwm; szInfo += chcurrent; BYTE tmpbuf[512] = { 0 }; int szlen = szInfo.GetLength(); for (int i = 1; i <= szlen / 2; i++) { string str = szInfo.Mid(i * 2, 2); tmpbuf[i] = strtol(str.c_str(), NULL, 16); } //重新计算crc WORD nSum = 0; nSum = chkcrc(tmpbuf, szlen / 2, 0xA001); //numberToBuffer(nSum, 2, buffer + len - 2); char chcrc[5]; sprintf_s(chcrc, "%04x", nSum); szInfo += chcrc; BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 }; memset(buff, 0, 1024); int sendlen = szInfo.GetLength(); for (int i = 0; i < sendlen; ++i) { } for (int i = 0; i < sendlen; ++i) { CString str = szInfo.Mid(i * 2, 2); sscanf_s(str, "%02x", &buff[i]); //CString str2 = strData.Mid(i*interval, 2); //strShow += str2 + " "; //CStringW str3; //str3 = str2; //swscanf_s(str3, L"%2x", &buff[i]); } com.senddata(buff, sendlen/2); } void CChatRoomClientDlg::OnEnChangeEditPwm() { saveConfig("PWM", getPress()); } void CChatRoomClientDlg::OnBnClickedVccerrVrc36() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); int errnum = 2;//组数 CString errinfo = "66016702"; int len = 1 + (1 + 1) + 4 + 7 + 7 + 1 + 2 * errnum; int fip = getfip(); int noz = getnoz(); int YLS = getYLS() * 10; int QLS = getQLS() * 10; int YL = getYL() * 100; int QL = getQL() * 100; int VL = getVL() * 1000; int TTC = getTTC(); int PRESS = getPress(); int ERR = getERROR(); int PWM = getPWM(); string begtime = getDate() + getbegtime(); string endtime = getDate() + getendtime(); char chlen[3] = { 0 }; char chfip[3] = { 0 }; char chnoz[3] = { 0 }; char chyls[5] = { 0 }; char chqls[5] = { 0 }; char chyl[7] = { 0 }; char chql[7] = { 0 }; char chvl[5] = { 0 }; char chttc[9] = { 0 }; char cherr[5] = { 0 }; char chpress[5] = { 0 }; char chpwm[5] = { 0 }; char cherrnum[3] = { 0 }; sprintf_s(chlen, "%02d", len);//bcd sprintf_s(chfip, "%02x", fip); sprintf_s(chnoz, "%02x", noz); sprintf_s(chttc, "%08x", TTC); sprintf_s(chyls, "%04x", YLS); sprintf_s(chqls, "%04x", QLS); sprintf_s(chyl, "%06x", YL); sprintf_s(chql, "%06x", QL); sprintf_s(chvl, "%04x", VL); sprintf_s(cherr, "%04x", ERR); sprintf_s(chpress, "%04x", PRESS); sprintf_s(chpwm, "%04x", PWM); sprintf_s(cherrnum, "%02x", errnum); CString szInfo = "fa010100010100"; //szInfo += "0f"; szInfo += chlen; szInfo += "0e"; szInfo += chfip; szInfo += chnoz; szInfo += chttc; szInfo += begtime.c_str(); szInfo += endtime.c_str(); szInfo += cherrnum; szInfo += errinfo; BYTE tmpbuf[512] = { 0 }; int szlen = szInfo.GetLength(); for (int i = 1; i <= szlen / 2; i++) { string str = szInfo.Mid(i * 2, 2); tmpbuf[i] = strtol(str.c_str(), NULL, 16); } //重新计算crc WORD nSum = 0; nSum = chkcrc(tmpbuf, szlen / 2, 0xA001); //numberToBuffer(nSum, 2, buffer + len - 2); char chcrc[5]; sprintf_s(chcrc, "%04x", nSum); szInfo += chcrc; BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 }; memset(buff, 0, 1024); int sendlen = szInfo.GetLength(); for (int i = 0; i < sendlen; ++i) { } for (int i = 0; i < sendlen; ++i) { CString str = szInfo.Mid(i * 2, 2); sscanf_s(str, "%02x", &buff[i]); //CString str2 = strData.Mid(i*interval, 2); //strShow += str2 + " "; //CStringW str3; //str3 = str2; //swscanf_s(str3, L"%2x", &buff[i]); } com.senddata(buff, sendlen / 2); } void CChatRoomClientDlg::OnEnChangeEditOffset() { saveConfig("OFFSET", getOffset()); } void CChatRoomClientDlg::OnEnChangeEditNoz2() { saveConfig("noz2", getnoz2()); } void CChatRoomClientDlg::OnEnChangeEditNoz3() { saveConfig("noz3", getnoz3()); } void CChatRoomClientDlg::OnEnChangeEditNoz4() { saveConfig("noz4", getnoz4()); } void CChatRoomClientDlg::OnBnClickedButton12() { CTime tm = CTime::GetCurrentTime(); CString strTime = tm.Format("%Y%m%d%H%M%S"); int len = 1 + 7 + 8; int noz = getnoz(); int noz2 = getnoz2(); int noz3 = getnoz3(); int noz4 = getnoz4(); int fip = getfip(); char chlen[3] = { 0 }; char chfip[3] = { 0 }; char chnoz[3] = { 0 }; char chnoz2[3] = { 0 }; char chnoz3[3] = { 0 }; char chnoz4[3] = { 0 }; sprintf_s(chlen, "%02d", len);//bcd sprintf_s(chfip, "%02x", fip); sprintf_s(chnoz, "%02x", noz); sprintf_s(chnoz2, "%02x", noz2); sprintf_s(chnoz3, "%02x", noz3); sprintf_s(chnoz4, "%02x", noz4); CString szInfo = "fa010100" + CString(chfip) + "0100"; szInfo += chlen; szInfo += "06"; szInfo += strTime; szInfo += chnoz; szInfo += "00"; szInfo += chnoz2; szInfo += "00"; szInfo += chnoz3; szInfo += "00"; szInfo += chnoz4; szInfo += "00"; BYTE tmpbuf[512] = { 0 }; int szlen = szInfo.GetLength(); for (int i = 1; i <= szlen / 2; i++) { string str = szInfo.Mid(i * 2, 2); tmpbuf[i] = strtol(str.c_str(), NULL, 16); } //重新计算crc WORD nSum = 0; nSum = chkcrc(tmpbuf, szlen / 2, 0xA001); char chcrc[5]; sprintf_s(chcrc, "%04x", nSum); szInfo += chcrc; BYTE buff[1024]; memset(buff, 0, 1024); int sendlen = szInfo.GetLength(); for (int i = 0; i < sendlen; ++i) { CString str = szInfo.Mid(i * 2, 2); sscanf_s(str, "%02x", &buff[i]); } com.senddata(buff, sendlen / 2); } void CChatRoomClientDlg::OnEnChangeEditCurrent() { saveConfig("CURRENT", getCurrent()); }