123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- // ReadSensorDlg.cpp : implementation file
- //
- #include "stdafx.h"
- #include "ReadSensor.h"
- #include "ReadSensorDlg.h"
- #include "afxdialogex.h"
- #include "global.h"
- #include "ComHandle.h"
- #include <string>
- using namespace std;
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- // CReadSensorDlg dialog
- ComHandle g_com;
- float g_pressure;
- float g_tem;
- int g_readtype;
- CReadSensorDlg::CReadSensorDlg(CWnd* pParent /*=NULL*/)
- : CDialogEx(CReadSensorDlg::IDD, pParent)
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- }
- void CReadSensorDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_RICHEDIT21, m_richedit);
- DDX_Control(pDX, IDC_COMBO1, CB_Port);
- DDX_Control(pDX, IDC_EDIT1, ED_PRESSURE);
- DDX_Control(pDX, IDC_EDIT2, ED_TEM);
- DDX_Control(pDX, IDC_CHECK1, BTN_Loop);
- DDX_Control(pDX, IDC_EDIT3, ED_LoopTime);
- }
- BEGIN_MESSAGE_MAP(CReadSensorDlg, CDialogEx)
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_BN_CLICKED(IDC_OPENCOMM, &CReadSensorDlg::OnBnClickedOpencomm)
- ON_BN_CLICKED(IDC_READ_PRESSURE, &CReadSensorDlg::OnBnClickedReadPressure)
- ON_BN_CLICKED(IDC_READ_TEM, &CReadSensorDlg::OnBnClickedReadTem)
- ON_BN_CLICKED(IDC_READ_ALL, &CReadSensorDlg::OnBnClickedReadAll)
- ON_BN_CLICKED(IDC_CHECK1, &CReadSensorDlg::OnBnClickedCheck1)
- ON_MESSAGE(WM_DATARECEIVED, OnMyMessage)
- ON_WM_TIMER()
- ON_EN_CHANGE(IDC_EDIT3, &CReadSensorDlg::OnEnChangeEdit3)
- ON_BN_CLICKED(IDC_CLEAR, &CReadSensorDlg::OnBnClickedClear)
- ON_BN_CLICKED(IDC_Reflash, &CReadSensorDlg::OnBnClickedReflash)
- END_MESSAGE_MAP()
- // CReadSensorDlg message handlers
- BOOL CReadSensorDlg::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
- // Set the icon for this dialog. The framework does this automatically
- // when the application's main window is not a dialog
- SetIcon(m_hIcon, TRUE); // Set big icon
- SetIcon(m_hIcon, FALSE); // Set small icon
- // TODO: Add extra initialization here
- g_com.linkRichEdit(&m_richedit);
- 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, FILE_SHARE_WRITE, 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);
- }
- for (int i = 0; i < CB_Port.GetCount(); i++)
- {
- CString str;
- CB_Port.GetLBText(i, str);
- if (string(str.GetString()) == strport)
- {
- CB_Port.SetCurSel(i);
- }
- }
- BTN_Loop.SetCheck(getConfig_INT("Loop"));
- ED_LoopTime.SetWindowText(getConfig("LoopTime").c_str());
- if (BTN_Loop.GetCheck())
- {
- CString str;
- ED_LoopTime.GetWindowText(str);
- int time = atoi(str);
- if (time > 0)
- {
- SetTimer(1, time, NULL);
- }
- }
- g_readtype = getConfig_INT("ReadType");
- OnBnClickedOpencomm();
- return TRUE; // return TRUE unless you set the focus to a control
- }
- // If you add a minimize button to your dialog, you will need the code below
- // to draw the icon. For MFC applications using the document/view model,
- // this is automatically done for you by the framework.
- void CReadSensorDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // device context for painting
- SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
- // Center icon in client rectangle
- 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;
- // Draw the icon
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialogEx::OnPaint();
- }
- }
- // The system calls this function to obtain the cursor to display while the user drags
- // the minimized window.
- HCURSOR CReadSensorDlg::OnQueryDragIcon()
- {
- return static_cast<HCURSOR>(m_hIcon);
- }
- void CReadSensorDlg::OnBnClickedOpencomm()
- {
- int portno = 0;
- CString strport;
- CB_Port.GetWindowText(strport);
- portno = atoi(strport.GetString());
- g_com.opencom(portno);
- if (!strport.IsEmpty())
- {
- saveConfig("port", strport.GetString());
- }
- }
- void CReadSensorDlg::OnBnClickedReadPressure()
- {
- ED_PRESSURE.SetWindowText("");
- ED_TEM.SetWindowText("");
- g_readtype = 0;
- saveConfig("ReadType", g_readtype);
- BYTE buf[] = { 0x02, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x38};
- g_com.senddata(buf, _countof(buf));
- }
- void CReadSensorDlg::OnBnClickedReadTem()
- {
- ED_PRESSURE.SetWindowText("");
- ED_TEM.SetWindowText("");
- g_readtype = 1;
- saveConfig("ReadType", g_readtype);
- BYTE buf[] = { 0x02, 0x03, 0x00, 0x04, 0x00, 0x02, 0x85, 0xF9 };
- g_com.senddata(buf, _countof(buf));
- }
- void CReadSensorDlg::OnBnClickedReadAll()
- {
- ED_PRESSURE.SetWindowText("");
- ED_TEM.SetWindowText("");
- g_readtype = 2;
- saveConfig("ReadType", g_readtype);
- BYTE buf[] = { 0x02, 0x03, 0x00, 0x00, 0x00, 0x04, 0x44, 0x3A };
- g_com.senddata(buf, _countof(buf));
- }
- void CReadSensorDlg::OnBnClickedCheck1()
- {
- saveConfig("Loop", BTN_Loop.GetCheck());
- if (BTN_Loop.GetCheck())
- {
- ED_LoopTime.EnableWindow(FALSE);
- CString str;
- ED_LoopTime.GetWindowText(str);
- int time = atoi(str);
- if (time > 0)
- {
- SetTimer(1, time, NULL);
- }
- }
- else
- {
- ED_LoopTime.EnableWindow(TRUE);
- KillTimer(1);
- }
- }
- LRESULT CReadSensorDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
- {
- char pre[10] = { 0 };
- char tem[10] = { 0 };
- if (g_readtype == 0)
- {
- sprintf_s(pre, "%.4f", g_pressure);
- ED_PRESSURE.SetWindowText(pre);
- }
- else if (g_readtype == 1)
- {
- ED_TEM.SetWindowText(to_string(g_tem).c_str());
- }
- else if (g_readtype == 2)
- {
- ED_PRESSURE.SetWindowText(to_string(g_pressure).c_str());
- ED_TEM.SetWindowText(to_string(g_tem).c_str());
- }
- return 1;
- }
- void CReadSensorDlg::OnTimer(UINT_PTR nIDEvent)
- {
- // TODO: Add your message handler code here and/or call default
- if (g_readtype == 0)
- {
- OnBnClickedReadPressure();
- }
- else if (g_readtype == 1)
- {
- OnBnClickedReadTem();
- }
- else if (g_readtype == 2)
- {
- OnBnClickedReadAll();
- }
- CDialogEx::OnTimer(nIDEvent);
- }
- void CReadSensorDlg::OnEnChangeEdit3()
- {
- CString str;
- ED_LoopTime.GetWindowText(str);
- int time = atoi(str);
- if (time > 0)
- {
- saveConfig("LoopTime", time);
- }
- if (BTN_Loop.GetCheck())
- {
- if (time > 0)
- {
- SetTimer(1, time, NULL);
- }
- }
- }
- void CReadSensorDlg::OnBnClickedClear()
- {
- ED_PRESSURE.SetWindowText("");
- ED_TEM.SetWindowText("");
- g_readtype = 10;
- //saveConfig("ReadType", g_readtype);
- BYTE buf[] = { 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0xF9 };
- g_com.senddata(buf, _countof(buf));
- }
- void CReadSensorDlg::OnBnClickedReflash()
- {
- CB_Port.ResetContent();
- g_com.closecom();
- 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);
- }
- for (int i = 0; i < CB_Port.GetCount(); i++)
- {
- CString str;
- CB_Port.GetLBText(i, str);
- if (string(str.GetString()) == strport)
- {
- CB_Port.SetCurSel(i);
- }
- }
- OnBnClickedOpencomm();
- }
|