亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dgpslistener.cpp

?? Gps 數(shù)據(jù)采集
?? CPP
?? 第 1 頁 / 共 5 頁
字號(hào):
// DGPSListener.cpp -- listens to a dBlackBox plus DGPS receiver manufactured
// by GPS Gesellschaft f黵 professionelle Satellitennavigation GmbH

// Written by Walter Piechulla in April 2000

// Based on: Allen Denver. (December 11, 1995). Serial Communications 
// in Win32. Microsoft Windows Developer Support [The Article and code
// is located on the MSDN CDs shipped with MSVCPP Version 6.0]

// This also uses code from Geodesy Foundation Classes and NMEA0183 Parser written by 
// Sam Blackburn http://ourworld.compuserve.com/homepages/Sam_Blackburn/homepage.htm

#include "stdafx.h"
#include "DGPSListener.h"

// Globals originally in settings.c
DCB dcbTemp;

char* szBaud[] = 
{
  "110",
  "300",
  "600",
  "1200",
  "2400", 
	"4800",
  "9600",
  "14400",
  "19200",
	"38400",
  "56000",
  "57600",
  "115200", 
	"128000",
  "256000"
};

DWORD BaudTable[] =  
{
	CBR_110, 
  CBR_300, 
  CBR_600, 
  CBR_1200, 
  CBR_2400,
	CBR_4800, 
  CBR_9600, 
  CBR_14400, 
  CBR_19200, 
  CBR_38400,
	CBR_56000, 
  CBR_57600, 
  CBR_115200, 
  CBR_128000, 
  CBR_256000
};

char* szParity[] =   
{   
  "None", 
  "Even", 
  "Odd", 
  "Mark", 
  "Space" 
};

DWORD ParityTable[] = 
{  
  NOPARITY, 
  EVENPARITY, 
  ODDPARITY, 
  MARKPARITY, 
  SPACEPARITY  
};

char* szStopBits[] =  
{  
  "1", 
  "1.5", 
  "2"  
};

DWORD StopBitsTable[] =  
{ 
  ONESTOPBIT, 
  ONE5STOPBITS, 
  TWOSTOPBITS 
};

char* szDTRControlStrings[] = 
{ 
  "Enable", 
  "Disable", 
  "Handshake" 
};

DWORD DTRControlTable[] = 
{ 
  DTR_CONTROL_ENABLE, 
  DTR_CONTROL_DISABLE, 
  DTR_CONTROL_HANDSHAKE 
};

char* szRTSControlStrings[] = 
{ 
  "Enable", 
  "Disable", 
  "Handshake", 
  "Toggle" 
};

DWORD RTSControlTable[] = 
{   
  RTS_CONTROL_ENABLE, 
  RTS_CONTROL_DISABLE, 
	RTS_CONTROL_HANDSHAKE, 
  RTS_CONTROL_TOGGLE 
};

DWORD EventFlagsTable[] = 
{
	EV_BREAK, 
  EV_CTS, 
  EV_DSR, 
  EV_ERR, 
  EV_RING,
	EV_RLSD, 
  EV_RXCHAR, 
  EV_RXFLAG, 
  EV_TXEMPTY
};

// TimeoutsDefault
// We need ReadIntervalTimeout here to cause the read operations
// that we do to actually timeout and become overlapped.
// Specifying 1 here causes ReadFile to return very quickly
// so that our reader thread will continue execution.
COMMTIMEOUTS gTimeoutsDefault = { 0x01, 0, 0, 0, 0 };
// End Global originally in init.c

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow )
{
  MSG msg;

  if (!VersionCheck()) 
	{
    MessageBox(NULL,"DGPSListener can't run on this version of Windows.",NULL,MB_OK);
    return 0;
  }

  if (!InitializeApp(hInstance,nCmdShow)) 
  {
    MessageBox(NULL,"DGPSListener couldn't start!",NULL,MB_OK);
    return 0;
  }

  while (GetMessage(&msg,NULL,0,0)) 
  {
    if (!TranslateAccelerator(ghwndMain,ghAccel,&msg)) 
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
  }

  return 1;
}

BOOL VersionCheck()
{
  gOSV.dwOSVersionInfoSize = sizeof(gOSV);

  if (!GetVersionEx(&gOSV))
    return FALSE;

  if (gOSV.dwPlatformId == VER_PLATFORM_WIN32s)
    return FALSE;

  return TRUE ;
}

BOOL InitializeApp(HINSTANCE hInst,int nCmdShow)
{
  WNDCLASS wc = {0};

  GlobalInitialize();     // get all global variables initialized to defaults

  // setup program's main window class
  wc.lpfnWndProc      = (WNDPROC) MTTTYWndProc;
  wc.hInstance        = hInst;
  wc.hIcon            = LoadIcon(hInst,MAKEINTRESOURCE(IDI_APPICON));
  wc.hCursor          = LoadCursor(NULL, IDC_ARROW);
  wc.lpszMenuName     = MAKEINTRESOURCE(IDR_MTTTYMENU);
  wc.hbrBackground    = (HBRUSH) (COLOR_WINDOW + 1) ;
  wc.lpszClassName    = "MTTTYClass";

  if (!RegisterClass(&wc)) 
  {
    GlobalCleanup();
      return FALSE;
  }

  // setup program's tty child window class
  wc.lpfnWndProc      = (WNDPROC) TTYChildProc;
  wc.hInstance        = hInst;
  wc.hCursor          = LoadCursor(NULL, IDC_IBEAM);
  wc.hbrBackground    = (HBRUSH) (COLOR_WINDOW + 1);
  wc.lpszClassName    = "MTTTYChildClass";
  wc.lpszMenuName     = NULL;
  wc.hIcon            = NULL;

  if (!RegisterClass(&wc)) 
  {
    GlobalCleanup();
    return FALSE;
  }

  // create main window
  ghwndMain = CreateWindow("MTTTYClass", 
                           "DGPSListener",
                           WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
                           STARTXWINDOW, STARTYWINDOW,
                           MAXXWINDOW, MAXYWINDOW,
                           NULL, NULL, hInst, NULL);

  if (ghwndMain == NULL) 
  {
    GlobalCleanup();
    return FALSE;
  }

  ShowWindow(ghwndMain,nCmdShow);   
  UpdateWindow(ghwndMain);

  ghInst = hInst;
  ghAccel = LoadAccelerators(hInst,MAKEINTRESOURCE(IDR_MTTTYACCELERATOR));

  return TRUE;
}

int WINAPI MTTTYWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
  switch (message) 
  {
    case WM_CREATE:
         // since main window is created, I can now open all other windows
         InitTTYInfo();
         OpenTTYChildWindow(hwnd);
         OpenSettingsToolbar(hwnd);
         OpenStatusToolbar(hwnd);
         ChangeConnection(hwnd, CONNECTED(TTYInfo));
         break;

    case WM_DESTROY: 
         // since main windows is being destroyed, so same to other windows
         DestroyTTYInfo();
         DestroyWindow(ghWndToolbarDlg);
         DestroyWindow(ghWndStatusDlg);
         DestroyWindow(ghWndTTY);
				
         GlobalCleanup();
         PostQuitMessage(0);
         break;

    case WM_GETMINMAXINFO:
         {
           // make sure that main window doesn't get smaller than
           // the minimum child windows.
           LPMINMAXINFO lpTemp;
           POINT        ptTemp;

           lpTemp = (LPMINMAXINFO) lParam;
      
           ptTemp.x = (long) lpTemp->ptMinTrackSize.x;
           ptTemp.y = (long) gcyMinimumWindowHeight;

           lpTemp->ptMinTrackSize = ptTemp;
         }
         break;

    case WM_SIZE:
         {
           // main window size has changed,
           // so I need to change the positions of child windows
           WORD wTop;
           WORD wHeight;
           WORD wWidth = LOWORD(lParam);

           // put Settings window at top
           wHeight = SETTINGSFACTOR*gwBaseY;
           wTop = 0;
           MoveWindow(ghWndToolbarDlg,0,wTop,wWidth,wHeight,TRUE);

           // put Status window at bottom
           wHeight = STATUSFACTOR*gwBaseY;
           wTop = HIWORD(lParam) - wHeight;
           MoveWindow(ghWndStatusDlg,0,wTop,wWidth,wHeight,TRUE);

           // put DGPSListener window right in the middle
           // height = whole window - height of two previous windows
           wHeight = HIWORD(lParam) - ((STATUSFACTOR + SETTINGSFACTOR)*gwBaseY);
           wTop = SETTINGSFACTOR*gwBaseY;
           MoveWindow(ghWndTTY,0,wTop,wWidth,wHeight,TRUE);
         }
         break;

    case WM_COMMAND:       
         CmdDispatch(LOWORD(wParam),hwnd,lParam);        
         break;

    case WM_CHAR:
         SetFocus(ghWndTTY);
         SendMessage(ghWndTTY,WM_CHAR,wParam,lParam);
         break;

    case WM_CLOSE:
         if (DisconnectOK()) 
         {
           if (CONNECTED(TTYInfo)) 
           {
             if (TRANSFERRING(TTYInfo))
             {
               TransferFileTextEnd();
             }
               
             BreakDownCommPort();
           }
           
           DestroyWindow(hwnd);
         }
         break;

    default:
         return DefWindowProc(hwnd,message,wParam,lParam);
  }

  return 0L;
}

void CmdDispatch(int iMenuChoice,HWND hwnd,LPARAM lParam)
{
  static char szFileName[MAX_PATH] = {0};

  switch (iMenuChoice) 
  {
    case ID_HELP_ABOUTMTTTY:
         CmdAbout(hwnd);
         break;

    case ID_TRANSFER_SENDFILETEXT:
         {
           char * szFilter = "Text Files\0*.TXT\0";
           OPENFILENAME ofn = {0};

           ofn.lStructSize = sizeof(OPENFILENAME);
           ofn.hwndOwner = hwnd;
           ofn.lpstrFilter = szFilter;
           ofn.lpstrFile = szFileName;
           ofn.nMaxFile = MAX_PATH;
           ofn.lpstrTitle = "Send File";
           ofn.Flags = OFN_FILEMUSTEXIST;

           if (!GetOpenFileName(&ofn))
             break;
                
           if (TRUE)
             TransferFileTextStart(szFileName);
         }
         break;

    case ID_BLACKBOX_CAPTURERAW: // fallthrough
    case ID_TRANSFER_RECEIVEFILETEXT:
         {
           char * szFilter = "Text Files\0*.TXT\0";
           OPENFILENAME ofn = {0};

           ofn.lStructSize = sizeof(OPENFILENAME);
           ofn.hwndOwner = hwnd;
           ofn.lpstrFilter = szFilter;
           ofn.lpstrFile = szFileName;
           ofn.nMaxFile = MAX_PATH;
           ofn.lpstrTitle = "Receive File";
           ofn.Flags = OFN_OVERWRITEPROMPT;

           if (!GetSaveFileName(&ofn))
             break;

           ReceiveFileText(szFileName,false);
         }
         break;

    case ID_BLACKBOX_CAPTURECOOKED:
         {
           char * szFilter = "Text Files\0*.TXT\0";
           OPENFILENAME ofn = {0};

           ofn.lStructSize = sizeof(OPENFILENAME);
           ofn.hwndOwner = hwnd;
           ofn.lpstrFilter = szFilter;
           ofn.lpstrFile = szFileName;
           ofn.nMaxFile = MAX_PATH;
           ofn.lpstrTitle = "Receive File";
           ofn.Flags = OFN_OVERWRITEPROMPT;

           if (!GetSaveFileName(&ofn))
             break;

           ReceiveFileText(szFileName,true);
         }
         break; 

    case ID_TRANSFER_ABORTSENDING:
         // was abort sent from the abort button?
         if (LOWORD(lParam) == IDC_ABORTBTN) 
         {
           if (REPEATING(TTYInfo))  // am I in a transfer repeat?
           {
             TransferRepeatDestroy();
           } 
           else if (gdwReceiveState == RECEIVE_TTY)  // am I in a normal receive state, then stop sending
           {
             TransferFileTextEnd();
           }
           else  // if I am not in a normal receive state, then stop capturing
           {
             gfAbortTransfer = TRUE;
           }
         }
         else  // if I am not in a normal receive state, then stop capturing
         {
           TransferFileTextEnd();
         }
         break;

    case ID_TRANSFER_SENDREPEATEDLY:
         {
           DWORD dwFreq;
           char * szFilter = "Text Files\0*.TXT\0";
           OPENFILENAME ofn = {0};

           ofn.lStructSize = sizeof(OPENFILENAME);
           ofn.hwndOwner = hwnd;
           ofn.lpstrFilter = szFilter;
           ofn.lpstrFile = szFileName;
           ofn.nMaxFile = MAX_PATH;
           ofn.lpstrTitle = "Send File Repeatedly";
           ofn.Flags = OFN_FILEMUSTEXIST;

           if (!GetOpenFileName(&ofn))
             break;

           dwFreq = GetAFrequency();
                
           TransferRepeatCreate(szFileName,dwFreq);
         }
         break;

    case ID_TRANSFER_ABORTREPEATEDSENDING:
         TransferRepeatDestroy();
         break;

    case ID_TTY_CLEAR:
         ClearTTYContents();
         InvalidateRect(ghWndTTY, NULL, TRUE);
         break;

    // The following correspond to menu choices and buttons in the settings dlog
    case IDC_FONTBTN:
    case IDC_COMMEVENTSBTN:
    case IDC_FLOWCONTROLBTN:
    case IDC_TIMEOUTSBTN:
         SendMessage(ghWndToolbarDlg,WM_COMMAND,(WPARAM)iMenuChoice,(LPARAM)GetDlgItem(ghWndToolbarDlg,iMenuChoice));
         break;

    case ID_BLACKBOX_DUMPCOOKED:
         gdwReceiveState = RECEIVE_TTYBLACKBOXCOOKED;

         if (SetupCommPort() != NULL)
         {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一二三| 男女视频一区二区| 日韩一区二区在线看| 成a人片亚洲日本久久| 奇米四色…亚洲| 亚洲精品国产精品乱码不99 | 日韩久久久精品| a级高清视频欧美日韩| 精品一区二区日韩| 午夜精品成人在线视频| 亚洲欧洲精品天堂一级 | 久久精品亚洲乱码伦伦中文 | 欧美日韩综合色| 成人av先锋影音| 国产综合色视频| 毛片一区二区三区| 日本va欧美va瓶| 亚洲r级在线视频| 亚洲日本青草视频在线怡红院| www一区二区| 欧美一区二区网站| 欧美久久久久久久久久| 91精品办公室少妇高潮对白| 成人av电影在线| 成人一区二区三区视频| 国产精品123| 国产成人在线网站| 国产原创一区二区三区| 韩国女主播一区| 久久精品国产99国产| 麻豆国产欧美日韩综合精品二区| 午夜精品久久久久久久久 | 国产.精品.日韩.另类.中文.在线.播放| 日韩中文字幕1| 日韩经典一区二区| 日韩电影免费在线| 全部av―极品视觉盛宴亚洲| 日韩av在线发布| 麻豆一区二区99久久久久| 日本成人在线不卡视频| 午夜精品久久久久| 美女一区二区三区在线观看| 精品综合久久久久久8888| 六月丁香婷婷色狠狠久久| 看国产成人h片视频| 极品少妇xxxx精品少妇偷拍| 国产综合色精品一区二区三区| 国内成+人亚洲+欧美+综合在线| 国产一区二区三区综合| 国产成人99久久亚洲综合精品| 成人一区在线观看| eeuss鲁一区二区三区| 色婷婷综合久久久久中文一区二区| 色香色香欲天天天影视综合网| 欧美午夜精品免费| 欧美一区二区三区的| 久久久久久亚洲综合| 国产精品蜜臀在线观看| 亚洲精品成人精品456| 婷婷国产在线综合| 国产在线精品免费| 99精品热视频| 69p69国产精品| 久久久久久久国产精品影院| 亚洲欧洲av一区二区三区久久| 亚洲国产视频一区二区| 久久99精品久久久久婷婷| 9i看片成人免费高清| 在线观看欧美日本| 欧美不卡一区二区三区| 亚洲欧洲成人自拍| 日本特黄久久久高潮| 国产精品1区2区| 欧美性一级生活| 久久久精品免费观看| 亚洲制服丝袜一区| 国产久卡久卡久卡久卡视频精品| av电影在线观看一区| 3d成人h动漫网站入口| 中文久久乱码一区二区| 日韩精品乱码免费| www.日本不卡| 欧美一区二区女人| 综合激情成人伊人| 日本va欧美va瓶| 91首页免费视频| 日韩视频免费直播| 亚洲美女免费在线| 国产美女精品在线| 91精品国产麻豆| 中文字幕字幕中文在线中不卡视频| 日韩福利电影在线| 色先锋aa成人| 国产精品乱码人人做人人爱| 日韩和的一区二区| 在线观看亚洲精品| 国产精品高潮呻吟| 秋霞成人午夜伦在线观看| 色综合一区二区三区| 26uuu色噜噜精品一区| 亚洲成a人v欧美综合天堂下载| 成人av网站免费观看| 欧美精品一区二| 天天色天天爱天天射综合| 色婷婷av久久久久久久| 国产精品色呦呦| 国产一区91精品张津瑜| 欧美一级片免费看| 亚洲午夜久久久| 色综合天天综合狠狠| 国产欧美一区二区三区网站| 蜜桃av一区二区在线观看| 欧美放荡的少妇| 尤物在线观看一区| 成人a级免费电影| 久久免费美女视频| 奇米精品一区二区三区在线观看| 99在线视频精品| 国产精品美女www爽爽爽| 国产综合成人久久大片91| 日韩一区二区视频在线观看| 亚洲成a天堂v人片| 欧美色涩在线第一页| 亚洲欧美成人一区二区三区| 成人av免费观看| 中文字幕中文字幕一区| 风流少妇一区二区| 国产欧美一区二区三区在线老狼| 国产一区二区久久| 久久久精品国产免大香伊| 激情五月激情综合网| 日韩视频一区二区| 久久国产综合精品| 精品国产在天天线2019| 久久精品国内一区二区三区| 日韩欧美亚洲一区二区| 欧美aaaaaa午夜精品| 91精品国产综合久久久久久久久久| 一区二区日韩av| 欧美中文一区二区三区| 亚洲高清不卡在线| 欧美精品v国产精品v日韩精品| 天天亚洲美女在线视频| 91精品国产欧美一区二区18| 免费成人结看片| 日韩精品一区二区三区视频播放| 狠狠色丁香九九婷婷综合五月| 2024国产精品| 成人午夜视频免费看| 亚洲图片激情小说| 欧美日韩一区二区三区在线| 三级影片在线观看欧美日韩一区二区| 欧美军同video69gay| 美女视频一区二区| 国产欧美综合色| 一本色道亚洲精品aⅴ| 亚洲成av人影院| 欧美va亚洲va香蕉在线| 成人性生交大片免费| 亚洲精品国产a久久久久久| 欧美久久一二区| 激情小说亚洲一区| 国产精品久久国产精麻豆99网站| 色av成人天堂桃色av| 日韩成人一级片| 久久久www成人免费无遮挡大片| 成人少妇影院yyyy| 亚洲影视在线播放| 精品美女一区二区| 成人a级免费电影| 图片区日韩欧美亚洲| 国产亚洲欧美一级| 色诱亚洲精品久久久久久| 老司机精品视频一区二区三区| 国产精品久久久久久久久搜平片 | 欧美精品久久99久久在免费线 | 国产91高潮流白浆在线麻豆| 中文字幕日韩欧美一区二区三区| 欧美日韩三级视频| 国产精品一区专区| 图片区小说区国产精品视频| 久久亚洲影视婷婷| 欧美优质美女网站| 国产精品中文字幕日韩精品 | 久久成人羞羞网站| 亚洲视频 欧洲视频| 日韩美女视频在线| 欧美吻胸吃奶大尺度电影| 国产成人精品亚洲777人妖| 亚洲一区av在线| 国产精品日产欧美久久久久| 777a∨成人精品桃花网| 91免费在线播放| 韩国女主播成人在线观看| 亚洲电影第三页| **欧美大码日韩| 久久精品一区二区三区不卡 | 色综合网色综合| 国产成人综合网站| 蜜臂av日日欢夜夜爽一区|