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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dgpslistener.cpp

?? Gps 數據采集
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
// 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)
         {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品不卡在线视频| 狠狠色丁香婷婷综合| 中文字幕一区二区三区在线播放| 精品国产乱码久久久久久浪潮| 欧美日韩aaaaa| 欧美理论在线播放| 91麻豆精品国产综合久久久久久 | 国产成人免费高清| 国产揄拍国内精品对白| 精品一区二区日韩| 久久99热狠狠色一区二区| 美女网站在线免费欧美精品| 蜜桃视频在线一区| 国产一区久久久| 懂色av一区二区三区免费观看| 岛国精品一区二区| 91免费视频大全| 色诱视频网站一区| 欧美专区在线观看一区| 欧美日韩免费电影| 日韩一区二区在线观看视频播放| 日韩精品一区二| 国产三级欧美三级| 亚洲欧美视频在线观看视频| 亚洲精品中文字幕在线观看| 亚洲午夜私人影院| 蜜臀久久99精品久久久久久9| 久久国产精品色| 豆国产96在线|亚洲| 色综合久久久久久久| 欧美天天综合网| 精品va天堂亚洲国产| 中文字幕一区视频| 亚洲二区视频在线| 久久99久久久久| 成人动漫中文字幕| 欧美在线看片a免费观看| 日韩午夜小视频| 日本一区二区免费在线观看视频| 日韩伦理av电影| 日韩国产一二三区| 国产一区二区成人久久免费影院 | 日韩片之四级片| 亚洲电影一级黄| 亚洲乱码精品一二三四区日韩在线 | 国产日韩欧美精品在线| 久久久欧美精品sm网站| 欧美大片顶级少妇| 亚洲欧洲av在线| 亚洲电影在线免费观看| 亚洲精品第一国产综合野| 激情小说亚洲一区| 日本视频免费一区| 亚洲成人激情综合网| 国内不卡的二区三区中文字幕| 99re热视频这里只精品| 制服丝袜成人动漫| 亚洲欧洲成人自拍| 国内久久精品视频| 91国在线观看| 国产亚洲午夜高清国产拍精品| 亚洲激情图片一区| 精品一区二区三区在线观看国产| 97精品久久久午夜一区二区三区| 日韩欧美精品在线| 亚洲福利电影网| 99国产欧美另类久久久精品| 精品嫩草影院久久| 午夜国产精品一区| 99v久久综合狠狠综合久久| 欧美一区二区成人6969| 亚洲人成精品久久久久| 国产麻豆视频精品| 日韩一级二级三级| 一区二区三区精品视频| 国产老肥熟一区二区三区| 欧美日韩极品在线观看一区| 国产精品久久久久天堂| 国产又黄又大久久| 91精品综合久久久久久| 亚洲精品视频在线观看网站| 国产精品一二三四五| 欧美tk—视频vk| 免费亚洲电影在线| 欧美日韩精品一区二区| 亚洲色图在线看| 懂色av一区二区三区蜜臀| 欧美一区二区高清| 午夜精品福利一区二区蜜股av| 91一区二区三区在线观看| 国产欧美1区2区3区| 免费观看久久久4p| 91麻豆精品国产91久久久久 | 亚洲国产精品久久一线不卡| 99久久免费精品高清特色大片| 国产视频一区在线观看| 精品中文字幕一区二区| 欧美一级一级性生活免费录像| 午夜亚洲国产au精品一区二区 | 国产精品成人免费在线| 高清不卡一区二区在线| 久久夜色精品国产噜噜av | 欧美视频一二三区| 亚洲最大色网站| 色狠狠综合天天综合综合| 欧美极品aⅴ影院| 欧美日韩一区二区三区不卡| 日韩中文字幕av电影| 欧美电视剧在线看免费| 国产成人午夜视频| 亚洲精品国产第一综合99久久| 欧美日韩国产经典色站一区二区三区| 日本不卡在线视频| 国产情人综合久久777777| 成人午夜激情在线| 亚洲v精品v日韩v欧美v专区| 亚洲精品在线观看网站| 欧洲一区二区av| 伊人性伊人情综合网| 91九色最新地址| 亚洲国产成人av好男人在线观看| 在线观看一区二区视频| 亚洲成人中文在线| 欧美日韩国产高清一区二区三区| 天堂蜜桃91精品| 精品国产91亚洲一区二区三区婷婷 | 国产精品美女久久久久高潮| av高清不卡在线| 一区二区在线观看视频| 欧美日韩激情一区二区三区| 日本美女一区二区| 精品国产亚洲一区二区三区在线观看| 国产伦精品一区二区三区在线观看| 久久精品亚洲麻豆av一区二区| 成人黄色大片在线观看| 夜夜嗨av一区二区三区网页| 欧美伦理影视网| 国产中文字幕精品| 日韩一区在线免费观看| 欧美乱妇15p| 国产老肥熟一区二区三区| 亚洲欧洲综合另类| 欧美一级二级在线观看| 成人午夜伦理影院| 午夜精品久久久久久久久久久| 亚洲精品一区二区精华| 99久久免费视频.com| 日韩高清一区二区| 国产精品乱子久久久久| 欧美精选一区二区| 国产成人av资源| 亚洲成人av福利| 国产日韩影视精品| 欧美裸体bbwbbwbbw| 国产aⅴ精品一区二区三区色成熟| 一区二区三区美女| 久久综合九色综合97婷婷| 97se狠狠狠综合亚洲狠狠| 久久国产精品第一页| 夜夜嗨av一区二区三区四季av| 欧美一级国产精品| 91亚洲精品久久久蜜桃| 久久99久久99| 亚洲成av人片观看| 欧美激情一区在线| 91精品国模一区二区三区| 波多野结衣中文字幕一区二区三区| 奇米综合一区二区三区精品视频| 国产人成亚洲第一网站在线播放 | 日韩精品一卡二卡三卡四卡无卡| 欧美国产日产图区| 日韩一级完整毛片| 日本精品裸体写真集在线观看| 国产在线精品视频| 午夜欧美2019年伦理| 国产精品麻豆99久久久久久| 日韩欧美国产wwwww| 欧美亚洲国产一区二区三区va| 国产精品一区三区| 日本aⅴ精品一区二区三区| 亚洲女子a中天字幕| 欧美日韩久久一区| 国产精品毛片无遮挡高清| 日本大香伊一区二区三区| 成人av片在线观看| 精品国产一区二区三区忘忧草 | 欧美人动与zoxxxx乱| 中文字幕乱码一区二区免费| 亚洲福利视频一区| 在线一区二区三区| 久久久亚洲国产美女国产盗摄| 亚洲午夜在线视频| 91精品办公室少妇高潮对白| 国产精品美女久久久久高潮| kk眼镜猥琐国模调教系列一区二区| 国产精品久久久久久久久果冻传媒 | 亚洲日本欧美天堂| 久久久99精品免费观看| 日韩精品一区二区三区在线播放| 欧美精品久久一区二区三区|