wang_serialDlg.cpp
资源名称:GPSserial.rar [点击查看]
上传用户:zhqmouse
上传日期:2022-05-26
资源大小:47k
文件大小:5k
源码类别:
GPS编程
开发平台:
Visual C++
- // wang_serialDlg.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "wang_serial.h"
- #include "wang_serialDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- Cwang_serialDlg::Cwang_serialDlg(CWnd* pParent /*=NULL*/)
- : CDialog(Cwang_serialDlg::IDD, pParent)
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- m_pGps = NULL; //GPS类对象
- }
- void Cwang_serialDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- }
- BEGIN_MESSAGE_MAP(Cwang_serialDlg, CDialog)
- //}}AFX_MSG_MAP
- ON_MESSAGE(WM_GPS_RECV_BUF,OnRecvSerialData)
- ON_MESSAGE(WM_GPS_STATE_CHANGE_MESSAGE,OnGpsStateChange)
- ON_MESSAGE(WM_GPS_RECV_VALID_LONGLAT,OnRecvValidGps)
- ON_BN_CLICKED(IDC_OPEN_COMM, &Cwang_serialDlg::OnBnClickedOpenComm)
- ON_BN_CLICKED(IDC_CLOSE_COMM, &Cwang_serialDlg::OnBnClickedCloseComm)
- ON_BN_CLICKED(IDC_CLEAR, &Cwang_serialDlg::OnBnClickedClear)
- END_MESSAGE_MAP()
- // Cwang_serialDlg 消息处理程序
- BOOL Cwang_serialDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- SetIcon(m_hIcon, TRUE);
- SetIcon(m_hIcon, FALSE);
- // TODO: 在此添加额外的初始化代码
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
- #if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
- void Cwang_serialDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
- {
- if (AfxIsDRAEnabled())
- {
- DRA::RelayoutDialog(
- AfxGetResourceHandle(),
- this->m_hWnd,
- DRA::GetDisplayMode() != DRA::Portrait ?
- MAKEINTRESOURCE(IDD_WANG_SERIAL_DIALOG_WIDE) :
- MAKEINTRESOURCE(IDD_WANG_SERIAL_DIALOG));
- }
- }
- #endif
- LONG Cwang_serialDlg::OnRecvSerialData(WPARAM wParam,LPARAM lParam)
- {
- char * aRecv = (char *)wParam;
- CString strRecv = L"";
- CString strRecv1 = L"";
- CEdit *pEdtRecv = (CEdit*)GetDlgItem(IDC_EDIT5);
- strRecv = CString(aRecv);
- pEdtRecv->SetWindowTextW(strRecv);
- delete[] aRecv;
- aRecv = NULL;
- return 0;
- }
- // 显示GPS状态变化
- LONG Cwang_serialDlg::OnGpsStateChange(WPARAM wParam,LPARAM lParam)
- {
- //GPS状态
- GPSDEV_STATE gpsStatus = (GPSDEV_STATE)wParam;
- CString strHint = L" ", strRecv=L" ";
- //
- CStatic *pLblStatus = (CStatic*)GetDlgItem(IDC_GPS_S);
- switch (gpsStatus)
- {
- //GPS有效数据
- case GPS_VALID_DATA:
- {
- strHint = L" Valid Data";}
- break;
- //GPS无效数据
- case GPS_INVALID_DATA:
- {
- strHint = L"Invalid Data ";}
- break;
- //GPS串口设备未打开
- case GPS_DEV_NOTOPENED:
- {
- strHint = L"Com Port closed";}
- break;
- //GPS串口设备打开
- case GPS_DEV_OPENED:
- {
- strHint = L"Com Port opened";}
- break;
- //GPS无数据
- case GPS_NODATA:
- {
- strHint = L"Empty";}
- break;
- default:
- break;
- }
- //设置GPS状态标题
- pLblStatus->SetWindowTextW(strHint);
- return 0;
- }
- // 显示GPS有效数据
- LONG Cwang_serialDlg::OnRecvValidGps(WPARAM wParam,LPARAM lParam)
- {
- //得到GPS数据
- GPSData *pGps = (GPSData*)wParam;
- HANDLE hAppend,hFile;
- char buff[256];
- CString LL;
- DWORD dwBytesRead,dwBytesWritten;
- CEdit *pEdtLong = (CEdit*)GetDlgItem(IDC_EDIT_LONGITUDE);
- CEdit *pEdtLat = (CEdit*)GetDlgItem(IDC_EDIT_LATITUDE);
- CEdit *pEdtSpe = (CEdit*)GetDlgItem(IDC_EDIT_SPEED);
- CEdit *pEdtDat = (CEdit*)GetDlgItem(IDC_EDIT_DATE);
- CString strLong = CString(pGps->longitude); //Longitude
- pEdtLong->SetWindowTextW(strLong);
- CString strLat = CString(pGps->latitude); //Latitude
- pEdtLat->SetWindowTextW(strLat);
- CString strspe = CString(pGps->speed); //speed
- pEdtSpe->SetWindowTextW(strspe);
- CString strdat = CString(pGps->date); //date
- pEdtDat->SetWindowTextW(strdat);
- delete pGps;
- pGps = NULL;
- LL=':'+ strLong +':'+strLat;
- ///////////////////////////////
- int len = LL.GetLength ();
- char *psave = new char[len];
- for(int i=0; i < len; i++)psave[i] =(char)LL.GetAt(i);
- hFile = CreateFile (TEXT("\DATA.TXT"), GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);
- if (hFile == INVALID_HANDLE_VALUE){ OnBnClickedCloseComm();return 0;}
- ReadFile (hFile, buff, 256, &dwBytesRead, NULL);
- CString strRecv = CString(buff).Mid(len,100);
- CStatic *pEdtRecv = (CStatic*)GetDlgItem(IDC_STATICM);
- pEdtRecv -> SetWindowTextW(strRecv);
- CloseHandle (hFile);
- hAppend = CreateFile (TEXT("\DATA.TXT"), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hAppend == INVALID_HANDLE_VALUE) { OnBnClickedCloseComm();return 0;}
- WriteFile (hAppend, psave, len, &dwBytesWritten, NULL);
- CloseHandle (hAppend);
- return 0;
- }
- ////===============================================
- void Cwang_serialDlg::OnBnClickedOpenComm()
- {
- CString strTmp;
- if (m_pGps != NULL)
- { m_pGps->Close(); delete m_pGps; m_pGps = NULL; }
- m_pGps = new CGPS();
- if (m_pGps->Open(this,1,4800)){ }
- else {AfxMessageBox(L"Open GPS unit fail");return ;}
- GetDlgItem(IDC_OPEN_COMM)->EnableWindow(FALSE);
- GetDlgItem(IDC_CLOSE_COMM)->EnableWindow(TRUE);
- }
- void Cwang_serialDlg::OnBnClickedCloseComm()
- {
- if (m_pGps != NULL)
- { m_pGps->Close();delete m_pGps;m_pGps = NULL;}
- Sleep(1000);
- GetDlgItem(IDC_OPEN_COMM)->EnableWindow(TRUE);
- GetDlgItem(IDC_CLOSE_COMM)->EnableWindow(FALSE);
- }
- void Cwang_serialDlg::OnBnClickedClear()
- {
- CEdit *pEdtRecv = (CEdit*)GetDlgItem(IDC_EDIT5);
- pEdtRecv->SetWindowTextW(L"");
- }