ChatRoomClientDlg.cpp 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914
  1. // ChatRoomClientDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "ChatRoomClient.h"
  5. #include "ChatRoomClientDlg.h"
  6. #include "afxdialogex.h"
  7. #include "tools.h"
  8. #include <string>
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #endif
  12. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
  13. class CAboutDlg : public CDialogEx
  14. {
  15. public:
  16. CAboutDlg();
  17. // 对话框数据
  18. enum { IDD = IDD_ABOUTBOX };
  19. protected:
  20. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  21. // 实现
  22. protected:
  23. DECLARE_MESSAGE_MAP()
  24. };
  25. CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
  26. {
  27. }
  28. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  29. {
  30. CDialogEx::DoDataExchange(pDX);
  31. }
  32. BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
  33. END_MESSAGE_MAP()
  34. // CChatRoomClientDlg 对话框
  35. CChatRoomClientDlg::CChatRoomClientDlg(CWnd* pParent /*=NULL*/)
  36. : CDialogEx(CChatRoomClientDlg::IDD, pParent)
  37. , m_bAutoSend(FALSE)
  38. , m_nInterval(0)
  39. {
  40. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  41. }
  42. void CChatRoomClientDlg::OnSysCommand(UINT nID, LPARAM lParam)
  43. {
  44. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  45. {
  46. CAboutDlg dlgAbout;
  47. dlgAbout.DoModal();
  48. }
  49. else
  50. {
  51. CDialogEx::OnSysCommand(nID, lParam);
  52. }
  53. }
  54. // 如果向对话框添加最小化按钮,则需要下面的代码
  55. // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
  56. // 这将由框架自动完成。
  57. void CChatRoomClientDlg::OnPaint()
  58. {
  59. if (IsIconic())
  60. {
  61. CPaintDC dc(this); // 用于绘制的设备上下文
  62. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  63. // 使图标在工作区矩形中居中
  64. int cxIcon = GetSystemMetrics(SM_CXICON);
  65. int cyIcon = GetSystemMetrics(SM_CYICON);
  66. CRect rect;
  67. GetClientRect(&rect);
  68. int x = (rect.Width() - cxIcon + 1) / 2;
  69. int y = (rect.Height() - cyIcon + 1) / 2;
  70. // 绘制图标
  71. dc.DrawIcon(x, y, m_hIcon);
  72. }
  73. else
  74. {
  75. CDialogEx::OnPaint();
  76. }
  77. }
  78. //当用户拖动最小化窗口时系统调用此函数取得光标
  79. //显示。
  80. HCURSOR CChatRoomClientDlg::OnQueryDragIcon()
  81. {
  82. return static_cast<HCURSOR>(m_hIcon);
  83. }
  84. void CChatRoomClientDlg::DoDataExchange(CDataExchange* pDX)
  85. {
  86. CDialogEx::DoDataExchange(pDX);
  87. DDX_Control(pDX, IDC_EDIT1, m_ServerIP);
  88. DDX_Control(pDX, IDC_EDIT2, m_ServerPort);
  89. //DDX_Control(pDX, IDC_EDIT3, m_NickName);
  90. DDX_Control(pDX, IDC_LIST1, m_RecvList);
  91. DDX_Control(pDX, IDC_EDIT4, m_SendInfo);
  92. DDX_Control(pDX, IDC_BUTTON1, BTN_LOGIN);
  93. DDX_Control(pDX, IDC_CHECK1, BTN_AUTOSEND);
  94. DDX_Check(pDX, IDC_CHECK1, m_bAutoSend);
  95. DDX_Text(pDX, IDC_EDIT3, m_nInterval);
  96. DDX_Control(pDX, IDC_EDIT6, ED_Noz);
  97. DDX_Control(pDX, IDC_EDIT7, ED_Pump);
  98. DDX_Control(pDX, IDC_COMBO_CALLBACKTYPE, CB_CALLBACKTYPE);
  99. DDX_Control(pDX, IDC_EDIT_CALLBACKNUM, ED_CALLBACKNUM);
  100. DDX_Control(pDX, IDC_RICHEDIT21, m_richedit);
  101. DDX_Control(pDX, IDC_COMBO1, CB_Port);
  102. DDX_Control(pDX, IDC_DATETIMEPICKER1, DateCtrl);
  103. }
  104. BEGIN_MESSAGE_MAP(CChatRoomClientDlg, CDialogEx)
  105. ON_WM_SYSCOMMAND()
  106. ON_WM_PAINT()
  107. ON_WM_QUERYDRAGICON()
  108. ON_BN_CLICKED(IDC_BUTTON1, &CChatRoomClientDlg::Login)
  109. ON_BN_CLICKED(IDC_BUTTON2, &CChatRoomClientDlg::OnSendText)
  110. ON_BN_CLICKED(IDC_BUTTON3, &CChatRoomClientDlg::CloseSocket)
  111. ON_WM_TIMER()
  112. ON_EN_CHANGE(IDC_EDIT5, &CChatRoomClientDlg::OnEnChangeEdit5)
  113. ON_EN_CHANGE(IDC_EDIT3, &CChatRoomClientDlg::ChangeInterval)
  114. ON_BN_CLICKED(IDC_CHECK1, &CChatRoomClientDlg::ClickAutoSend)
  115. ON_BN_CLICKED(IDC_BUTTON4, &CChatRoomClientDlg::UpNoz)
  116. ON_BN_CLICKED(IDC_BUTTON5, &CChatRoomClientDlg::Filling)
  117. ON_BN_CLICKED(IDC_BUTTON6, &CChatRoomClientDlg::HangNoz)
  118. ON_BN_CLICKED(IDC_BUTTON7, &CChatRoomClientDlg::Trade)
  119. ON_BN_CLICKED(IDC_BUTTON13, &CChatRoomClientDlg::Trade_old)
  120. ON_EN_CHANGE(IDC_EDIT_VL, &CChatRoomClientDlg::OnEnChangeEditVl)
  121. ON_EN_CHANGE(IDC_EDIT_FIP, &CChatRoomClientDlg::OnEnChangeEditFip)
  122. ON_EN_CHANGE(IDC_EDIT_NOZ, &CChatRoomClientDlg::OnEnChangeEditNoz)
  123. ON_EN_CHANGE(IDC_EDIT_YLS, &CChatRoomClientDlg::OnEnChangeEditYls)
  124. ON_EN_CHANGE(IDC_EDIT_QLS, &CChatRoomClientDlg::OnEnChangeEditQls)
  125. ON_EN_CHANGE(IDC_EDIT_YL, &CChatRoomClientDlg::OnEnChangeEditYl)
  126. ON_EN_CHANGE(IDC_EDIT_QL, &CChatRoomClientDlg::OnEnChangeEditQl)
  127. ON_EN_CHANGE(IDC_EDIT_TTC, &CChatRoomClientDlg::OnEnChangeEditTtc)
  128. ON_EN_CHANGE(IDC_EDIT_ERROR, &CChatRoomClientDlg::OnEnChangeEditError)
  129. ON_BN_CLICKED(IDC_ReflashTTC, &CChatRoomClientDlg::OnBnClickedReflashttc)
  130. ON_BN_CLICKED(IDC_ReflashBegTime, &CChatRoomClientDlg::OnBnClickedReflashbegtime)
  131. ON_BN_CLICKED(IDC_ReflashEndTime, &CChatRoomClientDlg::OnBnClickedReflashendtime)
  132. ON_BN_CLICKED(IDC_ReflashBegALL, &CChatRoomClientDlg::OnBnClickedReflashbegall)
  133. ON_BN_CLICKED(IDC_BUTTON_CALLBACK, &CChatRoomClientDlg::OnBnClickedButtonCallback)
  134. ON_BN_CLICKED(IDC_BUTTON9, &CChatRoomClientDlg::Filling_old)
  135. ON_EN_CHANGE(IDC_EDIT_PRESS, &CChatRoomClientDlg::OnEnChangeEditPress)
  136. ON_BN_CLICKED(IDC_BUTTON_OPENPORT, &CChatRoomClientDlg::OnBnClickedButtonOpenport)
  137. ON_BN_CLICKED(IDC_BUTTON11, &CChatRoomClientDlg::Trade_VRC36)
  138. ON_EN_CHANGE(IDC_EDIT_PWM, &CChatRoomClientDlg::OnEnChangeEditPwm)
  139. ON_BN_CLICKED(IDC_VCCERR_VRC36, &CChatRoomClientDlg::OnBnClickedVccerrVrc36)
  140. ON_EN_CHANGE(IDC_EDIT_OFFSET, &CChatRoomClientDlg::OnEnChangeEditOffset)
  141. ON_EN_CHANGE(IDC_EDIT_NOZ2, &CChatRoomClientDlg::OnEnChangeEditNoz2)
  142. ON_EN_CHANGE(IDC_EDIT_NOZ3, &CChatRoomClientDlg::OnEnChangeEditNoz3)
  143. ON_EN_CHANGE(IDC_EDIT_NOZ4, &CChatRoomClientDlg::OnEnChangeEditNoz4)
  144. ON_BN_CLICKED(IDC_BUTTON12, &CChatRoomClientDlg::OnBnClickedButton12)
  145. ON_EN_CHANGE(IDC_EDIT_CURRENT, &CChatRoomClientDlg::OnEnChangeEditCurrent)
  146. END_MESSAGE_MAP()
  147. // CChatRoomClientDlg 消息处理程序
  148. BOOL CChatRoomClientDlg::OnInitDialog()
  149. {
  150. CDialogEx::OnInitDialog();
  151. // 将“关于...”菜单项添加到系统菜单中。
  152. // IDM_ABOUTBOX 必须在系统命令范围内。
  153. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  154. ASSERT(IDM_ABOUTBOX < 0xF000);
  155. CMenu* pSysMenu = GetSystemMenu(FALSE);
  156. if (pSysMenu != NULL)
  157. {
  158. BOOL bNameValid;
  159. CString strAboutMenu;
  160. bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  161. ASSERT(bNameValid);
  162. if (!strAboutMenu.IsEmpty())
  163. {
  164. pSysMenu->AppendMenu(MF_SEPARATOR);
  165. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  166. }
  167. }
  168. // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
  169. // 执行此操作
  170. SetIcon(m_hIcon, TRUE); // 设置大图标
  171. SetIcon(m_hIcon, FALSE); // 设置小图标
  172. // TODO: 在此添加额外的初始化代码
  173. //m_ServerIP.SetWindowText(_T("10.35.249.6"));
  174. m_ServerIP.SetWindowText(_T("127.0.0.1"));
  175. m_ServerPort.SetWindowText(_T("10000"));
  176. int rtn = m_udpClient.Create(0, 2, NULL);
  177. m_udpClient.SetDialog(this);
  178. //BTN_AUTOSEND.SetCheck(TRUE);
  179. m_bAutoSend = TRUE;
  180. m_nInterval = 500;
  181. UpdateData(FALSE);
  182. SetTimer(1, m_nInterval, NULL);
  183. m_RecvList.SetHorizontalExtent(5000);
  184. GetDlgItem(IDC_EDIT_FIP)->SetWindowText(getConfig("fip").c_str());
  185. GetDlgItem(IDC_EDIT_NOZ)->SetWindowText(getConfig("noz").c_str());
  186. GetDlgItem(IDC_EDIT_NOZ2)->SetWindowText(getConfig("noz2").c_str());
  187. GetDlgItem(IDC_EDIT_NOZ3)->SetWindowText(getConfig("noz3").c_str());
  188. GetDlgItem(IDC_EDIT_NOZ4)->SetWindowText(getConfig("noz4").c_str());
  189. GetDlgItem(IDC_EDIT_YLS)->SetWindowText(getConfig("YLS").c_str());
  190. GetDlgItem(IDC_EDIT_QLS)->SetWindowText(getConfig("QLS").c_str());
  191. GetDlgItem(IDC_EDIT_YL)->SetWindowText(getConfig("YL").c_str());
  192. GetDlgItem(IDC_EDIT_QL)->SetWindowText(getConfig("QL").c_str());
  193. GetDlgItem(IDC_EDIT_VL)->SetWindowText(getConfig("VL").c_str());
  194. GetDlgItem(IDC_EDIT_TTC)->SetWindowText(getConfig("TTC").c_str());
  195. GetDlgItem(IDC_EDIT_ERROR)->SetWindowText(getConfig("ERROR").c_str());
  196. GetDlgItem(IDC_EDIT_PRESS)->SetWindowText(getConfig("PRESS").c_str());
  197. GetDlgItem(IDC_EDIT_CURRENT)->SetWindowText(getConfig("CURRENT").c_str());
  198. GetDlgItem(IDC_EDIT_PWM)->SetWindowText(getConfig("PWM").c_str());
  199. GetDlgItem(IDC_EDIT_OFFSET)->SetWindowText(getConfig("OFFSET").c_str());
  200. CB_CALLBACKTYPE.AddString("首次");
  201. CB_CALLBACKTYPE.AddString("传输中");
  202. CB_CALLBACKTYPE.AddString("最后一次");
  203. CB_CALLBACKTYPE.SetCurSel(2);
  204. ED_CALLBACKNUM.SetWindowText("1");
  205. std::string strport = getConfig("PORT");
  206. CString strCom[255];
  207. CString strTemp;
  208. CString strPort;
  209. HANDLE hCom;
  210. int index = 0;
  211. for (int i = 0; i<255; i++)
  212. {
  213. strTemp.Format("\\\\.\\COM%d", i + 1);
  214. strPort.Format("%d", i + 1);
  215. hCom = CreateFile(strTemp, GENERIC_READ | GENERIC_WRITE, 0, NULL,
  216. OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
  217. if (INVALID_HANDLE_VALUE == hCom)
  218. continue;
  219. strCom[i] = strTemp;
  220. CB_Port.AddString(strPort);
  221. if (string(strPort.GetString()) == strport)
  222. {
  223. CB_Port.SetCurSel(index);
  224. }
  225. index++;
  226. CloseHandle(hCom);
  227. }
  228. com.linkRichEdit(&m_richedit);
  229. return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
  230. }
  231. void CChatRoomClientDlg::Login()
  232. {
  233. CString szIP, szPort;
  234. UINT nPort;
  235. m_ServerIP.GetWindowText(szIP);
  236. m_ServerPort.GetWindowText(szPort);
  237. nPort = atoi(szPort);
  238. m_SocketClient.Create();
  239. m_SocketClient.SetDialog(this);
  240. int rtn;
  241. rtn = m_SocketClient.Connect(szIP, nPort);
  242. if (rtn)
  243. {
  244. //MessageBox(_T("连接服务器成功!"));
  245. InsertString( "TCP:已连接上服务器;");
  246. //发送心跳命令
  247. BTN_LOGIN.EnableWindow(FALSE);
  248. }
  249. else
  250. {
  251. InsertString( "TCP:连接服务器失败;");
  252. int err = GetLastError();
  253. TRACE("%d\n", err);
  254. m_SocketClient.Close();
  255. }
  256. CString szFormat;
  257. //szFormat.Format(_T("%s---->%s"), m_szName, _T("进入聊天室"));
  258. //m_SocketClient.Send(szFormat.GetBuffer(szFormat.GetLength()), szFormat.GetLength() * 2);
  259. //CString szSendText, szInfo;
  260. //m_SendInfo.GetWindowText(szSendText);
  261. //CStringA Info;
  262. //Info = szSendText;
  263. //m_SocketClient.Send(Info, Info.GetLength());
  264. }
  265. void CChatRoomClientDlg::ReceiveText()
  266. {
  267. BYTE pBuffer[BUFFER_SIZE];
  268. int nRecvNum = m_SocketClient.Receive(pBuffer, BUFFER_SIZE);
  269. if (nRecvNum != -1)
  270. {
  271. CString strS = "recv:";
  272. for (int i = 0; i < nRecvNum; ++i)
  273. {
  274. CString strW;
  275. CStringA str;
  276. strW.Format(_T("%.2x"), pBuffer[i]);
  277. strS += strW + " ";
  278. }
  279. //CStringA strA((LPSTR)pBuffer);
  280. //strW.Format(_T("%s"), pBuffer);
  281. InsertString(strS);
  282. }
  283. }
  284. void CChatRoomClientDlg::ReceiveUdpText()
  285. {
  286. BYTE pBuffer2[BUFFER_SIZE] = { 0 };
  287. CString straddr;
  288. UINT port;
  289. m_udpClient.GetPeerName(straddr, port);
  290. int nRecvNum = m_udpClient.ReceiveFrom(pBuffer2, BUFFER_SIZE, straddr, port);
  291. CString str(pBuffer2);
  292. //BYTE pBuffer[BUFFER_SIZE];
  293. if (nRecvNum != -1)
  294. {
  295. CString strS = "UDPRECV:";
  296. for (int i = 0; i < nRecvNum; ++i)
  297. {
  298. CString strW;
  299. CStringA str;
  300. strW.Format(_T("%.2x"), pBuffer2[i]);
  301. strS += strW + " ";
  302. }
  303. InsertString(strS);
  304. }
  305. //InsertString( L"UDPRECV: " + str);
  306. }
  307. void CChatRoomClientDlg::OnSendText()
  308. {
  309. CString szSendText, szInfo;
  310. m_SendInfo.GetWindowText(szSendText);
  311. szInfo = szSendText;
  312. if (szInfo == L"")
  313. return;
  314. CString szIP, szPort;
  315. UINT nPort;
  316. m_ServerIP.GetWindowText(szIP);
  317. m_ServerPort.GetWindowText(szPort);
  318. nPort = atoi(szPort);
  319. sendUDPData(szInfo, nPort, szIP);
  320. InsertString("UDPSEND: " + szInfo);
  321. //int rtnA = checkBeforeSend(szInfo);
  322. //if (!rtnA)
  323. // return;
  324. //int rtnB = sendTCPData(szInfo);
  325. //int rtnC = checkAfterSend(rtnB, szInfo);
  326. }
  327. int frame = 0;
  328. BOOL CChatRoomClientDlg::sendTCPData(CString& strData)
  329. {
  330. CString str;
  331. CString str1 = "";
  332. frame = frame % 99 + 1;
  333. CString strFrame;
  334. strFrame.Format(_T("%.2d"), frame);
  335. //str = strData;
  336. BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 };
  337. memset(buff, 0, 1024);
  338. str = strData;
  339. int interval = 2;
  340. if (strData.GetLength() > 3)
  341. {
  342. if (strData[2] == ' ')
  343. {
  344. interval = 3;
  345. }
  346. else
  347. {
  348. interval = 2;
  349. }
  350. }
  351. //strData = strFrame + ' ' + strData;
  352. int extra = interval - 2;
  353. int len = (strData.GetLength() + extra) / interval;
  354. for (int i = 0; i < len; ++i)
  355. {
  356. //int y1 = char(strData[i * interval]);
  357. //int y2 = char(strData[i * interval + 1]);
  358. //if (y1 <= '9') y1 = y1 - '0';
  359. //else if(y1 <= 'Z') y1 = y1 - 'A' + 10;
  360. //else y1 = y1 - 'a' + 10;
  361. //if (y2 <= '9') y2 = y2 - '0';
  362. //else if (y2 <= 'Z') y2 = y2 - 'A' + 10;
  363. //else y2 = y2 - 'a' + 10;
  364. //buff[i] = (y1) * 16 + (y2);
  365. CString str2 = strData.Mid(i*interval, 2);
  366. sscanf_s(str2, "%2x", &buff[i]);
  367. //CString str2 = strData[i * interval] + strData[i * interval + 1];
  368. //str1 += str.Left(2);
  369. //if (str.GetLength() > 3)
  370. // str = str.Right(str.GetLength() - 3);
  371. }
  372. //strData = str1;
  373. //memcpy(buff, strData.GetBuffer(strData.GetLength()), strData.GetLength());
  374. //memcpy(buff, str, str.GetLength()/2);
  375. int rtn = m_SocketClient.Send(buff, len);
  376. return rtn;
  377. }
  378. void CChatRoomClientDlg::sendUDPData(CString strData, UINT nPort, LPCTSTR lpszAddress)
  379. {
  380. CString str;
  381. CString str1 = "";
  382. BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 };
  383. memset(buff, 0, 1024);
  384. str = strData;
  385. int interval = 2;
  386. if (strData.GetLength() > 3)
  387. {
  388. if (strData[2] == ' ')
  389. {
  390. interval = 3;
  391. }
  392. else
  393. {
  394. interval = 2;
  395. }
  396. }
  397. int extra = interval - 2;
  398. int len = (strData.GetLength() + extra) / interval;
  399. for (int i = 0; i < len; ++i)
  400. {
  401. CString str2 = strData.Mid(i*interval, 2);
  402. sscanf_s(str2, "%2x", &buff[i]);
  403. }
  404. //m_udpClient.SendTo(strData.GetBuffer(strData.GetLength()), strData.GetLength() * 2, nPort, lpszAddress);
  405. int rtn = m_udpClient.SendTo(buff, len, nPort, lpszAddress);
  406. }
  407. BOOL CChatRoomClientDlg::checkBeforeSend(CString strData)
  408. {
  409. if (strData.GetLength() * 2 > BUFFER_SIZE)
  410. {
  411. InsertString( "发送信息超出规定长度;");
  412. return FALSE;
  413. }
  414. return TRUE;
  415. }
  416. BOOL CChatRoomClientDlg::checkAfterSend(int result, CString strData)
  417. {
  418. if (result == -1)
  419. {
  420. InsertString( "发送出错;");
  421. CloseSocket();
  422. Login();
  423. return FALSE;
  424. }
  425. //else if (result < strData.GetLength())
  426. //{
  427. // InsertString( L"发送不完整;");
  428. // return FALSE;
  429. //}
  430. else
  431. {
  432. strData = "send:" + strData;
  433. InsertString( strData);
  434. }
  435. return TRUE;
  436. }
  437. void CChatRoomClientDlg::CloseSocket()
  438. {
  439. m_SocketClient.Close();
  440. BTN_LOGIN.EnableWindow(TRUE);
  441. }
  442. void CChatRoomClientDlg::OnTimer(UINT_PTR nIDEvent)
  443. {
  444. // TODO: 在此添加消息处理程序代码和/或调用默认值
  445. CString szSendText, szInfo;
  446. m_SendInfo.GetWindowText(szSendText);
  447. szInfo = szSendText;
  448. //sendTCPData(szInfo);
  449. //int rtnB = sendTCPData(szInfo);
  450. //int rtnC = checkAfterSend(rtnB, szInfo);
  451. //m_udpClient.SendTo(szInfo.GetBuffer(szInfo.GetLength()), szInfo.GetLength() * 2, 27015, L"10.35.193.146");
  452. //CString szSendText, szInfo;
  453. m_SendInfo.GetWindowText(szSendText);
  454. szInfo = szSendText;
  455. if (szInfo == L"")
  456. return;
  457. CString szIP, szPort;
  458. UINT nPort;
  459. m_ServerIP.GetWindowText(szIP);
  460. m_ServerPort.GetWindowText(szPort);
  461. nPort = atoi(szPort);
  462. sendUDPData(szInfo, nPort, szIP);
  463. InsertString("UDPSEND: " + szInfo);
  464. CDialogEx::OnTimer(nIDEvent);
  465. }
  466. void CChatRoomClientDlg::OnEnChangeEdit5()
  467. {
  468. UpdateData(FALSE);
  469. }
  470. void CChatRoomClientDlg::InsertString(CString str)
  471. {
  472. m_RecvList.InsertString(m_RecvList.GetCount(), str);
  473. if (m_RecvList.GetCurSel() == m_RecvList.GetCount() - 2)
  474. {
  475. m_RecvList.SetCurSel(m_RecvList.GetCount() - 1);
  476. }
  477. }
  478. void CChatRoomClientDlg::ChangeInterval()
  479. {
  480. UpdateData(TRUE);
  481. if (m_bAutoSend)
  482. {
  483. SetTimer(1, m_nInterval, NULL);
  484. }
  485. }
  486. void CChatRoomClientDlg::ClickAutoSend()
  487. {
  488. UpdateData(TRUE);
  489. if (m_bAutoSend)
  490. {
  491. SetTimer(1, m_nInterval, NULL);
  492. }
  493. else
  494. {
  495. KillTimer(1);
  496. }
  497. }
  498. void CChatRoomClientDlg::UpNoz()
  499. {
  500. SendUpNozData();
  501. }
  502. void CChatRoomClientDlg::Filling()
  503. {
  504. SendFillingData();
  505. }
  506. void CChatRoomClientDlg::HangNoz()
  507. {
  508. SendHangNozData();
  509. }
  510. void CChatRoomClientDlg::Trade()
  511. {
  512. SendTradeData();
  513. }
  514. void CChatRoomClientDlg::SendUpNozData()
  515. {
  516. CTime tm = CTime::GetCurrentTime();
  517. CString strTime = tm.Format("%Y%m%d%H%M%S");
  518. CString strPump;
  519. ED_Pump.GetWindowText(strPump);
  520. CString strNoz;
  521. ED_Noz.GetWindowText(strNoz);
  522. CString szInfo = "010100010100";
  523. szInfo += "0e";
  524. szInfo += "01";
  525. szInfo += "0" + strPump;
  526. szInfo += "0" + strNoz;
  527. szInfo += strTime;
  528. szInfo += "00000000";
  529. CString szIP, szPort;
  530. UINT nPort;
  531. m_ServerIP.GetWindowText(szIP);
  532. m_ServerPort.GetWindowText(szPort);
  533. nPort = atoi(szPort);
  534. sendUDPData(szInfo, nPort, szIP);
  535. InsertString("SEND提枪: " + szInfo);
  536. }
  537. void CChatRoomClientDlg::SendFillingData()
  538. {
  539. CTime tm = CTime::GetCurrentTime();
  540. CString strTime = tm.Format("%Y%m%d%H%M%S");
  541. CString strPump;
  542. ED_Pump.GetWindowText(strPump);
  543. CString strNoz;
  544. ED_Noz.GetWindowText(strNoz);
  545. int fip = getfip();
  546. int noz = getnoz();
  547. int YLS = getYLS() * 10;
  548. int QLS = getQLS() * 10;
  549. int YL = getYL() * 100;
  550. int QL = getQL() * 100;
  551. int VL = getVL() * 1000;
  552. int TTC = getTTC();
  553. int PRESS = getPress();
  554. int ERR = getERROR();
  555. int PWM = getPWM();
  556. int CURRENT = getCurrent();
  557. char chfip[3] = { 0 };
  558. char chnoz[3] = { 0 };
  559. char chyls[5] = { 0 };
  560. char chqls[5] = { 0 };
  561. char chyl[7] = { 0 };
  562. char chql[7] = { 0 };
  563. char chvl[5] = { 0 };
  564. char chpress[5] = { 0 };
  565. char cherr[5] = { 0 };
  566. char chpwm[5] = { 0 };
  567. char chcurrent[5] = { 0 };
  568. sprintf_s(chfip, "%02x", fip);
  569. sprintf_s(chnoz, "%02x", noz);
  570. sprintf_s(chyls, "%04x", YLS);
  571. sprintf_s(chqls, "%04x", QLS);
  572. sprintf_s(chyl, "%06x", YL);
  573. sprintf_s(chql, "%06x", QL);
  574. sprintf_s(chvl, "%04x", VL);
  575. sprintf_s(cherr, "%04x", ERR);
  576. sprintf_s(chpress, "%04x", PRESS);
  577. sprintf_s(chpwm, "%04x", PWM);
  578. sprintf_s(chcurrent, "%04x", CURRENT);
  579. CString szInfo = "010100010100";
  580. szInfo += "17";//0f
  581. szInfo += "02";
  582. szInfo += chfip;
  583. szInfo += chnoz;
  584. szInfo += chyl; //2000 / 100.0
  585. szInfo += chql; //1000 / 100.0
  586. szInfo += chqls; //20 / 10.0
  587. szInfo += chvl; //1000 / 1000.0
  588. szInfo += chpress;// "0064"; //100
  589. szInfo += cherr;// "0002";
  590. szInfo += chyls; //1000 / 1000.0
  591. szInfo += chpwm;
  592. szInfo += chcurrent;
  593. CString szIP, szPort;
  594. UINT nPort;
  595. m_ServerIP.GetWindowText(szIP);
  596. m_ServerPort.GetWindowText(szPort);
  597. nPort = atoi(szPort);
  598. sendUDPData(szInfo, nPort, szIP);
  599. InsertString("SEND实时加油数据: " + szInfo);
  600. }
  601. void CChatRoomClientDlg::SendHangNozData()
  602. {
  603. CTime tm = CTime::GetCurrentTime();
  604. CString strTime = tm.Format("%Y%m%d%H%M%S");
  605. CString strPump;
  606. ED_Pump.GetWindowText(strPump);
  607. CString strNoz;
  608. ED_Noz.GetWindowText(strNoz);
  609. CString szInfo = "010100010100";
  610. szInfo += "0a";
  611. szInfo += "03";
  612. szInfo += "0" + strPump;
  613. szInfo += "0" + strNoz;
  614. szInfo += strTime;
  615. CString szIP, szPort;
  616. UINT nPort;
  617. m_ServerIP.GetWindowText(szIP);
  618. m_ServerPort.GetWindowText(szPort);
  619. nPort = atoi(szPort);
  620. sendUDPData(szInfo, nPort, szIP);
  621. InsertString("SEND挂枪: " + szInfo);
  622. }
  623. string CChatRoomClientDlg::getDate()
  624. {
  625. CString str;
  626. CTime tm;
  627. DateCtrl.GetTime(tm);
  628. char time[30] = { 0 };
  629. sprintf_s(time, "%04d%02d%02d", tm.GetYear(), tm.GetMonth(), tm.GetDay());
  630. str = time;
  631. return str;
  632. }
  633. void CChatRoomClientDlg::SendTradeData()
  634. {
  635. CTime tm = CTime::GetCurrentTime();
  636. CString strTime = tm.Format("%Y%m%d%H%M%S");
  637. int len = 1 + (1 + 1) + 4 + (2 + 2 + 3 + 3 + 2) + 7 + 7 + 2 + 2 + 2+2;
  638. int fip = getfip();
  639. int noz = getnoz();
  640. int YLS = getYLS() * 10;
  641. int QLS = getQLS() * 10;
  642. int YL = getYL() * 100;
  643. int QL = getQL() * 100;
  644. int VL = getVL() * 1000;
  645. int TTC = getTTC();
  646. int PRESS = getPress();
  647. int ERR = getERROR();
  648. int PWM = getPWM();
  649. int CURRENT = getCurrent();
  650. string begtime = getDate() + getbegtime();
  651. string endtime = getDate() + getendtime();
  652. char chlen[3] = { 0 };
  653. char chfip[3] = { 0 };
  654. char chnoz[3] = { 0 };
  655. char chyls[5] = { 0 };
  656. char chqls[5] = { 0 };
  657. char chyl[7] = { 0 };
  658. char chql[7] = { 0 };
  659. char chvl[5] = { 0 };
  660. char chttc[9] = { 0 };
  661. char cherr[5] = { 0 };
  662. char chpress[5] = { 0 };
  663. char chpwm[5] = { 0 };
  664. char chcurrent[5] = { 0 };
  665. sprintf_s(chlen, "%02x", len);
  666. sprintf_s(chfip, "%02x", fip);
  667. sprintf_s(chnoz, "%02x", noz);
  668. sprintf_s(chttc, "%08x", TTC);
  669. sprintf_s(chyls, "%04x", YLS);
  670. sprintf_s(chqls, "%04x", QLS);
  671. sprintf_s(chyl, "%06x", YL);
  672. sprintf_s(chql, "%06x", QL);
  673. sprintf_s(chvl, "%04x", VL);
  674. sprintf_s(cherr, "%04x", ERR);
  675. sprintf_s(chpress, "%04x", PRESS);
  676. sprintf_s(chpwm, "%04x", PWM);
  677. sprintf_s(chcurrent, "%04x", CURRENT);
  678. CString szInfo = "010100010100";
  679. //szInfo += "0f";
  680. szInfo += chlen;
  681. szInfo += "04";
  682. szInfo += chfip;
  683. szInfo += chnoz;
  684. //szInfo += strTime;
  685. //szInfo += "00000000";
  686. // 00 07 D0 00 03 e8 05 12 01 2c 00 64
  687. szInfo += chttc;
  688. szInfo += chyl;//"0003e8"; //1000 / 100.0
  689. szInfo += chyls;//"0015"; //21 / 10.0
  690. szInfo += chql;//"0003e8"; //1000 / 100.0
  691. szInfo += chqls;//"0014"; //20 / 10.0
  692. //szInfo += "03e8"; //1000 / 1000.0
  693. szInfo += chvl;
  694. szInfo += begtime.c_str();
  695. szInfo += endtime.c_str();
  696. szInfo += cherr;
  697. szInfo += chpress;
  698. szInfo += chpwm;
  699. szInfo += chcurrent;
  700. BYTE tmpbuf[512] = { 0 };
  701. int szlen = szInfo.GetLength();
  702. for (int i = 0; i < szlen/2; i++)
  703. {
  704. string str = szInfo.Mid(i * 2, 2);
  705. tmpbuf[i] = strtol(str.c_str(), NULL, 16);
  706. }
  707. //重新计算crc
  708. WORD nSum = 0;
  709. nSum = chkcrc(tmpbuf , szlen/2 , 0xA001);
  710. //numberToBuffer(nSum, 2, buffer + len - 2);
  711. char chcrc[5];
  712. sprintf_s(chcrc, "%04x", nSum);
  713. szInfo += chcrc;
  714. //01 01 00 01 01 00 0f 04 01 01 00 07 D0 00 15 00 03 e8 00 14 01 2c
  715. CString szIP, szPort;
  716. UINT nPort;
  717. m_ServerIP.GetWindowText(szIP);
  718. m_ServerPort.GetWindowText(szPort);
  719. nPort = atoi(szPort);
  720. sendUDPData(szInfo, nPort, szIP);
  721. InsertString("SEND交易数据: " + szInfo);
  722. }
  723. void CChatRoomClientDlg::Trade_old()
  724. {
  725. CTime tm = CTime::GetCurrentTime();
  726. CString strTime = tm.Format("%Y%m%d%H%M%S");
  727. int len = 1 + (1 + 1) + 2 + 2 + 3 + 3 + 2;
  728. int fip = getfip();
  729. int noz = getnoz();
  730. int YLS = getYLS() * 10;
  731. int QLS = getQLS() * 10;
  732. int YL = getYL() * 100;
  733. int QL = getQL() * 100;
  734. int VL = getVL() * 1000;
  735. int TTC = getTTC();
  736. int ERR = getERROR();
  737. char chlen[3] = { 0 };
  738. char chfip[3] = { 0 };
  739. char chnoz[3] = { 0 };
  740. char chyls[5] = { 0 };
  741. char chqls[5] = { 0 };
  742. char chyl[7] = { 0 };
  743. char chql[7] = { 0 };
  744. char chvl[5] = { 0 };
  745. sprintf_s(chlen, "%02x", len);
  746. sprintf_s(chfip, "%02x", fip);
  747. sprintf_s(chnoz, "%02x", noz);
  748. sprintf_s(chyls, "%04x", YLS);
  749. sprintf_s(chqls, "%04x", QLS);
  750. sprintf_s(chyl, "%06x", YL);
  751. sprintf_s(chql, "%06x", QL);
  752. sprintf_s(chvl, "%04x", VL);
  753. CString szInfo = "010100010100";
  754. //szInfo += "0f";
  755. szInfo += chlen;
  756. szInfo += "04";
  757. szInfo += chfip;
  758. szInfo += chnoz;
  759. //szInfo += strTime;
  760. //szInfo += "00000000";
  761. // 00 07 D0 00 03 e8 05 12 01 2c 00 64
  762. szInfo += chyl;//"0003e8"; //1000 / 100.0
  763. szInfo += chyls;//"0015"; //21 / 10.0
  764. szInfo += chql;//"0003e8"; //1000 / 100.0
  765. szInfo += chqls;//"0014"; //20 / 10.0
  766. //szInfo += "03e8"; //1000 / 1000.0
  767. szInfo += chvl;
  768. //01 01 00 01 01 00 0f 04 01 01 00 07 D0 00 15 00 03 e8 00 14 01 2c
  769. CString szIP, szPort;
  770. UINT nPort;
  771. m_ServerIP.GetWindowText(szIP);
  772. m_ServerPort.GetWindowText(szPort);
  773. nPort = atoi(szPort);
  774. sendUDPData(szInfo, nPort, szIP);
  775. InsertString("SEND交易数据: " + szInfo);
  776. }
  777. int CChatRoomClientDlg::getfip()
  778. {
  779. CString str;
  780. GetDlgItem(IDC_EDIT_FIP)->GetWindowText(str);
  781. int val = atoi(str);
  782. return val;
  783. }
  784. int CChatRoomClientDlg::getnoz()
  785. {
  786. CString str;
  787. GetDlgItem(IDC_EDIT_NOZ)->GetWindowText(str);
  788. int val = atoi(str);
  789. return val;
  790. }
  791. int CChatRoomClientDlg::getnoz2()
  792. {
  793. CString str;
  794. GetDlgItem(IDC_EDIT_NOZ2)->GetWindowText(str);
  795. int val = atoi(str);
  796. return val;
  797. }
  798. int CChatRoomClientDlg::getnoz3()
  799. {
  800. CString str;
  801. GetDlgItem(IDC_EDIT_NOZ3)->GetWindowText(str);
  802. int val = atoi(str);
  803. return val;
  804. }
  805. int CChatRoomClientDlg::getnoz4()
  806. {
  807. CString str;
  808. GetDlgItem(IDC_EDIT_NOZ4)->GetWindowText(str);
  809. int val = atoi(str);
  810. return val;
  811. }
  812. double CChatRoomClientDlg::getYLS()
  813. {
  814. CString str;
  815. GetDlgItem(IDC_EDIT_YLS)->GetWindowText(str);
  816. double val = atof(str);
  817. return val;
  818. }
  819. double CChatRoomClientDlg::getQLS()
  820. {
  821. CString str;
  822. GetDlgItem(IDC_EDIT_QLS)->GetWindowText(str);
  823. double val = atof(str);
  824. return val;
  825. }
  826. double CChatRoomClientDlg::getYL()
  827. {
  828. CString str;
  829. GetDlgItem(IDC_EDIT_YL)->GetWindowText(str);
  830. double val = atof(str);
  831. return val;
  832. }
  833. double CChatRoomClientDlg::getQL()
  834. {
  835. CString str;
  836. GetDlgItem(IDC_EDIT_QL)->GetWindowText(str);
  837. double val = atof(str);
  838. return val;
  839. }
  840. double CChatRoomClientDlg::getVL()
  841. {
  842. CString str;
  843. GetDlgItem(IDC_EDIT_VL)->GetWindowText(str);
  844. double val = atof(str);
  845. return val;
  846. }
  847. int CChatRoomClientDlg::getTTC()
  848. {
  849. CString str;
  850. GetDlgItem(IDC_EDIT_TTC)->GetWindowText(str);
  851. int val = atoi(str);
  852. return val;
  853. }
  854. int CChatRoomClientDlg::getPress()
  855. {
  856. CString str;
  857. GetDlgItem(IDC_EDIT_PRESS)->GetWindowText(str);
  858. int val = atoi(str);
  859. return val;
  860. }
  861. int CChatRoomClientDlg::getCurrent()
  862. {
  863. CString str;
  864. GetDlgItem(IDC_EDIT_CURRENT)->GetWindowText(str);
  865. int val = atoi(str);
  866. return val;
  867. }
  868. int CChatRoomClientDlg::getPWM()
  869. {
  870. CString str;
  871. GetDlgItem(IDC_EDIT_PWM)->GetWindowText(str);
  872. int val = atoi(str);
  873. return val;
  874. }
  875. int CChatRoomClientDlg::getOffset()
  876. {
  877. CString str;
  878. GetDlgItem(IDC_EDIT_OFFSET)->GetWindowText(str);
  879. int val = atoi(str);
  880. return val;
  881. }
  882. int CChatRoomClientDlg::getERROR()
  883. {
  884. CString str;
  885. GetDlgItem(IDC_EDIT_ERROR)->GetWindowText(str);
  886. int val = atoi(str);
  887. return val;
  888. }
  889. string CChatRoomClientDlg::getbegtime()
  890. {
  891. COleDateTime dateTime;
  892. ((CDateTimeCtrl*)GetDlgItem(IDC_BEGTIME))->GetTime(dateTime);
  893. string time = dateTime.Format("%H%M%S");
  894. return time;
  895. }
  896. string CChatRoomClientDlg::getendtime()
  897. {
  898. COleDateTime dateTime;
  899. ((CDateTimeCtrl*)GetDlgItem(IDC_ENDTIME))->GetTime(dateTime);
  900. string time = dateTime.Format("%H%M%S");
  901. return time;
  902. }
  903. void CChatRoomClientDlg::OnEnChangeEditVl()
  904. {
  905. saveConfig("VL",getVL());
  906. }
  907. void CChatRoomClientDlg::OnEnChangeEditFip()
  908. {
  909. saveConfig("fip", getfip());
  910. }
  911. void CChatRoomClientDlg::OnEnChangeEditNoz()
  912. {
  913. saveConfig("noz", getnoz());
  914. }
  915. void CChatRoomClientDlg::OnEnChangeEditYls()
  916. {
  917. saveConfig("YLS", getYLS());
  918. }
  919. void CChatRoomClientDlg::OnEnChangeEditQls()
  920. {
  921. saveConfig("QLS", getQLS());
  922. }
  923. void CChatRoomClientDlg::OnEnChangeEditYl()
  924. {
  925. saveConfig("YL", getYL());
  926. }
  927. void CChatRoomClientDlg::OnEnChangeEditQl()
  928. {
  929. saveConfig("QL", getQL());
  930. }
  931. void CChatRoomClientDlg::OnEnChangeEditTtc()
  932. {
  933. saveConfig("TTC", getTTC());
  934. }
  935. void CChatRoomClientDlg::OnEnChangeEditError()
  936. {
  937. saveConfig("ERROR", getERROR());
  938. }
  939. void CChatRoomClientDlg::OnBnClickedReflashttc()
  940. {
  941. CString str;
  942. GetDlgItem(IDC_EDIT_TTC)->SetWindowText(std::to_string(getTTC()+1).c_str());
  943. }
  944. void CChatRoomClientDlg::OnBnClickedReflashbegtime()
  945. {
  946. CTime tm = CTime::GetCurrentTime();
  947. ((CDateTimeCtrl*)GetDlgItem(IDC_BEGTIME))->SetTime(&tm);
  948. }
  949. void CChatRoomClientDlg::OnBnClickedReflashendtime()
  950. {
  951. CTime tm = CTime::GetCurrentTime();
  952. ((CDateTimeCtrl*)GetDlgItem(IDC_ENDTIME))->SetTime(&tm);
  953. }
  954. void CChatRoomClientDlg::OnBnClickedReflashbegall()
  955. {
  956. CTime tm = CTime::GetCurrentTime();
  957. DateCtrl.SetTime(&tm);
  958. OnBnClickedReflashttc();
  959. OnBnClickedReflashbegtime();
  960. OnBnClickedReflashendtime();
  961. }
  962. void CChatRoomClientDlg::OnBnClickedButtonCallback()
  963. {
  964. CString strnum;
  965. ED_CALLBACKNUM.GetWindowText(strnum);
  966. int callbacknum = atoi(strnum);
  967. if (callbacknum < 1)
  968. {
  969. callbacknum = 1;
  970. }
  971. else if (callbacknum > 10)
  972. {
  973. callbacknum = 10;
  974. }
  975. ED_CALLBACKNUM.SetWindowText(std::to_string(callbacknum).c_str());
  976. int state = CB_CALLBACKTYPE.GetCurSel()+1;
  977. CTime tm = CTime::GetCurrentTime();
  978. CString strTime = tm.Format("%Y%m%d%H%M%S");
  979. //int len = 1 + (1 + 1) + 4 + (2 + 2 + 3 + 3 + 2) + 7 + 7 + 2;
  980. int len = 1 + 1 + 1 + 4 + 1 + 1 + callbacknum * 39;
  981. int fip = getfip();
  982. int noz = getnoz();
  983. int YLS = getYLS() * 10;
  984. int QLS = getQLS() * 10;
  985. int YL = getYL() * 100;
  986. int QL = getQL() * 100;
  987. int VL = getVL() * 1000;
  988. int TTC = getTTC();
  989. int ERR = getERROR();
  990. int PRESS = getPress();
  991. int PWM = getPWM();
  992. int OFFSET = getOffset();
  993. string begtime = getDate() + getbegtime();
  994. string endtime = getDate() + getendtime();
  995. char chlen[5] = { 0 };
  996. char chfip[3] = { 0 };
  997. char chstate[3] = { 0 };
  998. char chnum[3] = { 0 };
  999. char chnoz[3] = { 0 };
  1000. char chyls[5] = { 0 };
  1001. char chqls[5] = { 0 };
  1002. char chyl[7] = { 0 };
  1003. char chql[7] = { 0 };
  1004. char chvl[5] = { 0 };
  1005. char chttc[9] = { 0 };
  1006. char cherr[5] = { 0 };
  1007. char chpress[5] = { 0 };
  1008. char chpwm[5] = { 0 };
  1009. char choffset[5] = { 0 };
  1010. sprintf_s(chlen, "%04x", len);
  1011. sprintf_s(chfip, "%02x", fip);
  1012. sprintf_s(chstate, "%02x", state);
  1013. sprintf_s(chnum, "%02x", callbacknum);
  1014. sprintf_s(chnoz, "%02x", noz);
  1015. sprintf_s(chttc, "%08x", TTC);
  1016. sprintf_s(chyls, "%04x", YLS);
  1017. sprintf_s(chqls, "%04x", QLS);
  1018. sprintf_s(chyl, "%06x", YL);
  1019. sprintf_s(chql, "%06x", QL);
  1020. sprintf_s(chvl, "%04x", VL);
  1021. sprintf_s(cherr, "%04x", ERR);
  1022. sprintf_s(chpress, "%04x", PRESS);
  1023. sprintf_s(chpwm, "%04x", PWM);
  1024. sprintf_s(choffset, "%04x", OFFSET);
  1025. CString szInfo = "0101010101";
  1026. //szInfo += "0f";
  1027. szInfo += chlen;
  1028. szInfo += "0d";
  1029. szInfo += "02";//tag
  1030. szInfo += chfip;
  1031. szInfo += getDate().c_str();
  1032. szInfo += chstate;
  1033. szInfo += chnum;
  1034. for (int i = 0; i < callbacknum; i++)
  1035. {
  1036. szInfo += chnoz;
  1037. szInfo += chttc;
  1038. szInfo += chyl;//"0003e8"; //1000 / 100.0
  1039. szInfo += chyls;//"0015"; //21 / 10.0
  1040. szInfo += chql;//"0003e8"; //1000 / 100.0
  1041. szInfo += chqls;//"0014"; //20 / 10.0
  1042. szInfo += chvl;
  1043. szInfo += begtime.c_str();
  1044. string time = endtime;
  1045. time[time.length() - 1] = '0'+i;
  1046. endtime = time;
  1047. szInfo += endtime.c_str();
  1048. szInfo += cherr;
  1049. szInfo += chpress;
  1050. szInfo += chpwm;
  1051. szInfo += choffset;
  1052. }
  1053. BYTE tmpbuf[512] = { 0 };
  1054. int szlen = szInfo.GetLength();
  1055. for (int i = 0; i < szlen / 2; i++)
  1056. {
  1057. string str = szInfo.Mid(i * 2, 2);
  1058. tmpbuf[i] = strtol(str.c_str(), NULL, 16);
  1059. }
  1060. //重新计算crc
  1061. WORD nSum = 0;
  1062. nSum = chkcrc(tmpbuf, szlen / 2, 0xA001);
  1063. //numberToBuffer(nSum, 2, buffer + len - 2);
  1064. char chcrc[5];
  1065. sprintf_s(chcrc, "%04x", nSum);
  1066. szInfo += chcrc;
  1067. CString szIP, szPort;
  1068. UINT nPort;
  1069. m_ServerIP.GetWindowText(szIP);
  1070. m_ServerPort.GetWindowText(szPort);
  1071. nPort = atoi(szPort);
  1072. sendUDPData(szInfo, nPort, szIP);
  1073. InsertString("SEND回叫数据: " + szInfo);
  1074. }
  1075. void CChatRoomClientDlg::Filling_old()
  1076. {
  1077. CTime tm = CTime::GetCurrentTime();
  1078. CString strTime = tm.Format("%Y%m%d%H%M%S");
  1079. CString strPump;
  1080. ED_Pump.GetWindowText(strPump);
  1081. CString strNoz;
  1082. ED_Noz.GetWindowText(strNoz);
  1083. int fip = getfip();
  1084. int noz = getnoz();
  1085. int YLS = getYLS() * 10;
  1086. int QLS = getQLS() * 10;
  1087. int YL = getYL() * 100;
  1088. int QL = getQL() * 100;
  1089. int VL = getVL() * 1000;
  1090. int TTC = getTTC();
  1091. int PRESS = getPress();
  1092. int ERR = getERROR();
  1093. char chfip[3] = { 0 };
  1094. char chnoz[3] = { 0 };
  1095. char chyls[5] = { 0 };
  1096. char chqls[5] = { 0 };
  1097. char chyl[7] = { 0 };
  1098. char chql[7] = { 0 };
  1099. char chvl[5] = { 0 };
  1100. char chpress[5] = { 0 };
  1101. char cherr[5] = { 0 };
  1102. sprintf_s(chfip, "%02x", fip);
  1103. sprintf_s(chnoz, "%02x", noz);
  1104. sprintf_s(chyls, "%04x", YLS);
  1105. sprintf_s(chqls, "%04x", QLS);
  1106. sprintf_s(chyl, "%06x", YL);
  1107. sprintf_s(chql, "%06x", QL);
  1108. sprintf_s(chvl, "%04x", VL);
  1109. sprintf_s(cherr, "%04x", ERR);
  1110. sprintf_s(chpress, "%04x", PRESS);
  1111. CString szInfo = "010100010100";
  1112. szInfo += "0f";
  1113. szInfo += "02";
  1114. szInfo += chfip;
  1115. szInfo += chnoz;
  1116. szInfo += chyl; //2000 / 100.0
  1117. szInfo += chql; //1000 / 100.0
  1118. szInfo += chqls; //20 / 10.0
  1119. szInfo += chvl; //1000 / 1000.0
  1120. szInfo += chpress;// "0064"; //100
  1121. CString szIP, szPort;
  1122. UINT nPort;
  1123. m_ServerIP.GetWindowText(szIP);
  1124. m_ServerPort.GetWindowText(szPort);
  1125. nPort = atoi(szPort);
  1126. sendUDPData(szInfo, nPort, szIP);
  1127. InsertString("SEND实时加油数据: " + szInfo);
  1128. }
  1129. void CChatRoomClientDlg::OnEnChangeEditPress()
  1130. {
  1131. saveConfig("PRESS", getPress());
  1132. }
  1133. void CChatRoomClientDlg::OnBnClickedButtonOpenport()
  1134. {
  1135. int portno = 0;
  1136. CString strport;
  1137. GetDlgItem(IDC_COMBO1)->GetWindowText(strport);
  1138. portno = atoi(strport.GetString());
  1139. com.opencom(portno);
  1140. saveConfig("PORT", strport.GetString());
  1141. }
  1142. void CChatRoomClientDlg::Trade_VRC36()
  1143. {
  1144. CTime tm = CTime::GetCurrentTime();
  1145. CString strTime = tm.Format("%Y%m%d%H%M%S");
  1146. int len = 1 + (1 + 1) + 4 + (2 + 2 + 3 + 3 + 2) + 7 + 7 + 2 + 2 + 2 + 2;
  1147. int fip = getfip();
  1148. int noz = getnoz();
  1149. int YLS = getYLS() * 10;
  1150. int QLS = getQLS() * 10;
  1151. int YL = getYL() * 100;
  1152. int QL = getQL() * 100;
  1153. int VL = getVL() * 1000;
  1154. int TTC = getTTC();
  1155. int PRESS = getPress();
  1156. int ERR = getERROR();
  1157. int PWM = getPWM();
  1158. int CURRENT = getCurrent();
  1159. string begtime = getDate() + getbegtime();
  1160. string endtime = getDate() + getendtime();
  1161. char chlen[3] = { 0 };
  1162. char chfip[3] = { 0 };
  1163. char chnoz[3] = { 0 };
  1164. char chyls[5] = { 0 };
  1165. char chqls[5] = { 0 };
  1166. char chyl[7] = { 0 };
  1167. char chql[7] = { 0 };
  1168. char chvl[5] = { 0 };
  1169. char chttc[9] = { 0 };
  1170. char cherr[5] = { 0 };
  1171. char chpress[5] = { 0 };
  1172. char chpwm[5] = { 0 };
  1173. char chcurrent[5] = { 0 };
  1174. sprintf_s(chlen, "%02d", len);//bcd
  1175. sprintf_s(chfip, "%02x", fip);
  1176. sprintf_s(chnoz, "%02x", noz);
  1177. sprintf_s(chttc, "%08x", TTC);
  1178. sprintf_s(chyls, "%04x", YLS);
  1179. sprintf_s(chqls, "%04x", QLS);
  1180. sprintf_s(chyl, "%06x", YL);
  1181. sprintf_s(chql, "%06x", QL);
  1182. sprintf_s(chvl, "%04x", VL);
  1183. sprintf_s(cherr, "%04x", ERR);
  1184. sprintf_s(chpress, "%04x", PRESS);
  1185. sprintf_s(chpwm, "%04x", PWM);
  1186. sprintf_s(chcurrent, "%04x", CURRENT);
  1187. CString szInfo = "fa010100" + CString(chfip) + "0100";
  1188. //szInfo += "0f";
  1189. szInfo += chlen;
  1190. szInfo += "04";
  1191. szInfo += chfip;
  1192. szInfo += chnoz;
  1193. //szInfo += strTime;
  1194. //szInfo += "00000000";
  1195. // 00 07 D0 00 03 e8 05 12 01 2c 00 64
  1196. szInfo += chttc;
  1197. szInfo += chyl;//"0003e8"; //1000 / 100.0
  1198. szInfo += chyls;//"0015"; //21 / 10.0
  1199. szInfo += chql;//"0003e8"; //1000 / 100.0
  1200. szInfo += chqls;//"0014"; //20 / 10.0
  1201. //szInfo += "03e8"; //1000 / 1000.0
  1202. szInfo += chvl;
  1203. szInfo += begtime.c_str();
  1204. szInfo += endtime.c_str();
  1205. szInfo += cherr;
  1206. szInfo += chpress;
  1207. szInfo += chpwm;
  1208. szInfo += chcurrent;
  1209. BYTE tmpbuf[512] = { 0 };
  1210. int szlen = szInfo.GetLength();
  1211. for (int i = 1; i <= szlen / 2; i++)
  1212. {
  1213. string str = szInfo.Mid(i * 2, 2);
  1214. tmpbuf[i] = strtol(str.c_str(), NULL, 16);
  1215. }
  1216. //重新计算crc
  1217. WORD nSum = 0;
  1218. nSum = chkcrc(tmpbuf, szlen / 2, 0xA001);
  1219. //numberToBuffer(nSum, 2, buffer + len - 2);
  1220. char chcrc[5];
  1221. sprintf_s(chcrc, "%04x", nSum);
  1222. szInfo += chcrc;
  1223. BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 };
  1224. memset(buff, 0, 1024);
  1225. int sendlen = szInfo.GetLength();
  1226. for (int i = 0; i < sendlen; ++i)
  1227. {
  1228. }
  1229. for (int i = 0; i < sendlen; ++i)
  1230. {
  1231. CString str = szInfo.Mid(i * 2, 2);
  1232. sscanf_s(str, "%02x", &buff[i]);
  1233. //CString str2 = strData.Mid(i*interval, 2);
  1234. //strShow += str2 + " ";
  1235. //CStringW str3;
  1236. //str3 = str2;
  1237. //swscanf_s(str3, L"%2x", &buff[i]);
  1238. }
  1239. com.senddata(buff, sendlen/2);
  1240. }
  1241. void CChatRoomClientDlg::OnEnChangeEditPwm()
  1242. {
  1243. saveConfig("PWM", getPress());
  1244. }
  1245. void CChatRoomClientDlg::OnBnClickedVccerrVrc36()
  1246. {
  1247. CTime tm = CTime::GetCurrentTime();
  1248. CString strTime = tm.Format("%Y%m%d%H%M%S");
  1249. int errnum = 2;//组数
  1250. CString errinfo = "66016702";
  1251. int len = 1 + (1 + 1) + 4 + 7 + 7 + 1 + 2 * errnum;
  1252. int fip = getfip();
  1253. int noz = getnoz();
  1254. int YLS = getYLS() * 10;
  1255. int QLS = getQLS() * 10;
  1256. int YL = getYL() * 100;
  1257. int QL = getQL() * 100;
  1258. int VL = getVL() * 1000;
  1259. int TTC = getTTC();
  1260. int PRESS = getPress();
  1261. int ERR = getERROR();
  1262. int PWM = getPWM();
  1263. string begtime = getDate() + getbegtime();
  1264. string endtime = getDate() + getendtime();
  1265. char chlen[3] = { 0 };
  1266. char chfip[3] = { 0 };
  1267. char chnoz[3] = { 0 };
  1268. char chyls[5] = { 0 };
  1269. char chqls[5] = { 0 };
  1270. char chyl[7] = { 0 };
  1271. char chql[7] = { 0 };
  1272. char chvl[5] = { 0 };
  1273. char chttc[9] = { 0 };
  1274. char cherr[5] = { 0 };
  1275. char chpress[5] = { 0 };
  1276. char chpwm[5] = { 0 };
  1277. char cherrnum[3] = { 0 };
  1278. sprintf_s(chlen, "%02d", len);//bcd
  1279. sprintf_s(chfip, "%02x", fip);
  1280. sprintf_s(chnoz, "%02x", noz);
  1281. sprintf_s(chttc, "%08x", TTC);
  1282. sprintf_s(chyls, "%04x", YLS);
  1283. sprintf_s(chqls, "%04x", QLS);
  1284. sprintf_s(chyl, "%06x", YL);
  1285. sprintf_s(chql, "%06x", QL);
  1286. sprintf_s(chvl, "%04x", VL);
  1287. sprintf_s(cherr, "%04x", ERR);
  1288. sprintf_s(chpress, "%04x", PRESS);
  1289. sprintf_s(chpwm, "%04x", PWM);
  1290. sprintf_s(cherrnum, "%02x", errnum);
  1291. CString szInfo = "fa010100010100";
  1292. //szInfo += "0f";
  1293. szInfo += chlen;
  1294. szInfo += "0e";
  1295. szInfo += chfip;
  1296. szInfo += chnoz;
  1297. szInfo += chttc;
  1298. szInfo += begtime.c_str();
  1299. szInfo += endtime.c_str();
  1300. szInfo += cherrnum;
  1301. szInfo += errinfo;
  1302. BYTE tmpbuf[512] = { 0 };
  1303. int szlen = szInfo.GetLength();
  1304. for (int i = 1; i <= szlen / 2; i++)
  1305. {
  1306. string str = szInfo.Mid(i * 2, 2);
  1307. tmpbuf[i] = strtol(str.c_str(), NULL, 16);
  1308. }
  1309. //重新计算crc
  1310. WORD nSum = 0;
  1311. nSum = chkcrc(tmpbuf, szlen / 2, 0xA001);
  1312. //numberToBuffer(nSum, 2, buffer + len - 2);
  1313. char chcrc[5];
  1314. sprintf_s(chcrc, "%04x", nSum);
  1315. szInfo += chcrc;
  1316. BYTE buff[1024];// = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00 };
  1317. memset(buff, 0, 1024);
  1318. int sendlen = szInfo.GetLength();
  1319. for (int i = 0; i < sendlen; ++i)
  1320. {
  1321. }
  1322. for (int i = 0; i < sendlen; ++i)
  1323. {
  1324. CString str = szInfo.Mid(i * 2, 2);
  1325. sscanf_s(str, "%02x", &buff[i]);
  1326. //CString str2 = strData.Mid(i*interval, 2);
  1327. //strShow += str2 + " ";
  1328. //CStringW str3;
  1329. //str3 = str2;
  1330. //swscanf_s(str3, L"%2x", &buff[i]);
  1331. }
  1332. com.senddata(buff, sendlen / 2);
  1333. }
  1334. void CChatRoomClientDlg::OnEnChangeEditOffset()
  1335. {
  1336. saveConfig("OFFSET", getOffset());
  1337. }
  1338. void CChatRoomClientDlg::OnEnChangeEditNoz2()
  1339. {
  1340. saveConfig("noz2", getnoz2());
  1341. }
  1342. void CChatRoomClientDlg::OnEnChangeEditNoz3()
  1343. {
  1344. saveConfig("noz3", getnoz3());
  1345. }
  1346. void CChatRoomClientDlg::OnEnChangeEditNoz4()
  1347. {
  1348. saveConfig("noz4", getnoz4());
  1349. }
  1350. void CChatRoomClientDlg::OnBnClickedButton12()
  1351. {
  1352. CTime tm = CTime::GetCurrentTime();
  1353. CString strTime = tm.Format("%Y%m%d%H%M%S");
  1354. int len = 1 + 7 + 8;
  1355. int noz = getnoz();
  1356. int noz2 = getnoz2();
  1357. int noz3 = getnoz3();
  1358. int noz4 = getnoz4();
  1359. int fip = getfip();
  1360. char chlen[3] = { 0 };
  1361. char chfip[3] = { 0 };
  1362. char chnoz[3] = { 0 };
  1363. char chnoz2[3] = { 0 };
  1364. char chnoz3[3] = { 0 };
  1365. char chnoz4[3] = { 0 };
  1366. sprintf_s(chlen, "%02d", len);//bcd
  1367. sprintf_s(chfip, "%02x", fip);
  1368. sprintf_s(chnoz, "%02x", noz);
  1369. sprintf_s(chnoz2, "%02x", noz2);
  1370. sprintf_s(chnoz3, "%02x", noz3);
  1371. sprintf_s(chnoz4, "%02x", noz4);
  1372. CString szInfo = "fa010100" + CString(chfip) + "0100";
  1373. szInfo += chlen;
  1374. szInfo += "06";
  1375. szInfo += strTime;
  1376. szInfo += chnoz;
  1377. szInfo += "00";
  1378. szInfo += chnoz2;
  1379. szInfo += "00";
  1380. szInfo += chnoz3;
  1381. szInfo += "00";
  1382. szInfo += chnoz4;
  1383. szInfo += "00";
  1384. BYTE tmpbuf[512] = { 0 };
  1385. int szlen = szInfo.GetLength();
  1386. for (int i = 1; i <= szlen / 2; i++)
  1387. {
  1388. string str = szInfo.Mid(i * 2, 2);
  1389. tmpbuf[i] = strtol(str.c_str(), NULL, 16);
  1390. }
  1391. //重新计算crc
  1392. WORD nSum = 0;
  1393. nSum = chkcrc(tmpbuf, szlen / 2, 0xA001);
  1394. char chcrc[5];
  1395. sprintf_s(chcrc, "%04x", nSum);
  1396. szInfo += chcrc;
  1397. BYTE buff[1024];
  1398. memset(buff, 0, 1024);
  1399. int sendlen = szInfo.GetLength();
  1400. for (int i = 0; i < sendlen; ++i)
  1401. {
  1402. CString str = szInfo.Mid(i * 2, 2);
  1403. sscanf_s(str, "%02x", &buff[i]);
  1404. }
  1405. com.senddata(buff, sendlen / 2);
  1406. }
  1407. void CChatRoomClientDlg::OnEnChangeEditCurrent()
  1408. {
  1409. saveConfig("CURRENT", getCurrent());
  1410. }