<track id="pxptv"></track>
<ruby id="pxptv"><progress id="pxptv"><p id="pxptv"></p></progress></ruby>

      <dfn id="pxptv"><sub id="pxptv"></sub></dfn>

      <del id="pxptv"></del>
      <pre id="pxptv"></pre>
      <strike id="pxptv"><address id="pxptv"><span id="pxptv"></span></address></strike>

        WinCE工控主板獲取主板電壓和CPU溫度的方法

         2020-4-23     作者:劉乾坤    

          英創WinCE工控主板在系統后,會實時測量主板供電電壓、主板溫度以及CPU溫度等參數,并保存到指定的內存映射文件對像中,應用程序可通過相應的內存映射文件對像快速訪問這些硬件參數。下表是系統目前支持的硬件參數項以及對應的內存映射文件對像名稱。


        硬件參數內存映射文件對像名稱數據更新頻率
        CPU溫度L"\\hwmon\\CPUTEMP"5次/秒
        主板溫度L"\\hwmon\\BoardTEMP"1次/秒
        主板供電電壓L"\\hwmon\\vcc"1次/秒


          內存映射文件提供一種完全不同的讀寫文件的方法,它是將文件內容映射到內存中的某個區域,讀寫文件直接操作內存即可,操作十分簡介、高效。以獲取ESM7000工控主板CPU溫度值為例的操作流程如下:

          1、使用CreateFileMapping函數打開名稱為L"\\hwmon\\CPUTEMP"的內存映射文件對像,如果返回失敗則表明系統不支持當前參數。

          2、通過MapViewOfFile函數獲取內存映射文件對像的數據內存指針。

          3、讀取指針內容獲取CPU溫度值。

          4、操作結束后使用UnmapViewOfFile函數取消內存視圖映射。

          5、關閉之前CreateFileMapping函數打開的文件句柄。


          完整的操作代碼如下:


        #include "stdafx.h"
         
        int _tmain(int argc, _TCHAR* argv[])
        {
               HANDLE       hMapFile1, hMapFile2, hMapFile3;
               BYTE      *pData1 = NULL, *pData2 = NULL, *pData3 = NULL;
               INT32    dwVcc = 0, dwBoardTEMP = 0, dwCPUTEMP = 0, i;
               TCHAR  szBuf[128];
         
               hMapFile1 = CreateFileMapping((HANDLE)(INVALID_HANDLE_VALUE), NULL, PAGE_READONLY, 0, 64, L"\\hwmon\\vcc");
               if(hMapFile1 != NULL && GetLastError() == ERROR_ALREADY_EXISTS)
                      pData1 = (BYTE *)MapViewOfFile(hMapFile1, FILE_MAP_READ, 0, 0, 64);
         
               hMapFile2 = CreateFileMapping((HANDLE)(INVALID_HANDLE_VALUE), NULL, PAGE_READONLY, 0, 64, L"\\hwmon\\BoardTEMP");
               if(hMapFile2 != NULL && GetLastError() == ERROR_ALREADY_EXISTS)
                      pData2 = (BYTE *)MapViewOfFile(hMapFile2, FILE_MAP_READ, 0, 0, 64);
         
               hMapFile3 = CreateFileMapping((HANDLE)(INVALID_HANDLE_VALUE), NULL, PAGE_READONLY, 0, 64, L"\\hwmon\\CPUTEMP");
               if(hMapFile3 != NULL && GetLastError() == ERROR_ALREADY_EXISTS)
                      pData3 = (BYTE *)MapViewOfFile(hMapFile3, FILE_MAP_READ, 0, 0, 64);
         
               for(i=0; i<5; i++)
               {
                      if(pData1)
                             memcpy(&dwVcc, pData1, 4);
                      if(pData2)
                             memcpy(&dwBoardTEMP, pData2, 4);
                      if(pData3)
                             memcpy(&dwCPUTEMP, pData3, 4);
         
                      wsprintf(szBuf, TEXT("CPU:%2.1fC Board:%2.1fC VCC=%1.2fV"), (dwCPUTEMP/1000.0), (dwBoardTEMP/1000.0),(dwVcc/1000.0));
                      RETAILMSG(1, (TEXT("%s\r\n"), szBuf));
                      Sleep(1000);
               }
         
               if(pData1)
                      UnmapViewOfFile(pData1);
               if(pData2)
                      UnmapViewOfFile(pData2);
               if(pData3)
                      UnmapViewOfFile(pData3);
               if(hMapFile1 != NULL)
                      CloseHandle(hMapFile1);
               if(hMapFile2 != NULL)
                      CloseHandle(hMapFile2);
               if(hMapFile3 != NULL)
                      CloseHandle(hMapFile3);
         
               return 0;
        }


          英創ESMARC系列工控主板在升級到最新內核后都可支持通過內存映射文件方式獲取主板相關硬件參數。

        亚洲欧美另类激情综合区>免费欧洲美女牲交视频>美熟志村玲子>国产三级级在线电影>精品免费国产一区二区>春闺梦里人无删减电影>男同纯h视频免费 最好的中文字幕视频>熟女倶乐部系列艶堂しほり>澳门永久AV免费网站>97免费人妻在线视频>日韩放荡少妇无码视频>午夜理论不卡>午夜黄一级大片>免费高清自慰区 97国产公开视频在线观看>志村玲子最激烈的一部>无码免费福利视频在线观看>国产人妻熟女偷在线视频>午夜理论片日本中文在线>一区二区三区高清视频 h文喂奶乳涨>日本网站av地址>三级理论中文字幕在线播放>娇妻被边走边做调教>狠狠摸狠狠澡456>国产在线精品一区二区不卡>青草青在线视频在线观看 三级黄线在线播放爱情>182tv香蕉视频永久网站>欧美香蕉视频播放二区>看着娇妻被调教的过程>人人婷婷开心情五月>欧美俄罗斯乱妇>免费成年人av影片 国产自拍在线青青草>亚洲人成视频在线播放>中文字幕第一页在线播放>国产乱子伦免费视频>婷婷97狠狠>日本乱理伦片在线观看>亚洲一级特黄大片在线播放