激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

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

 2020-4-23     作者:劉乾坤         
文章標簽:C/C++

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

文章標簽:C/C++
主站蜘蛛池模板: 热伊人99re久久精品最新地| 亚洲成熟| 日本一级特黄啪啪片| 成人免费小视频| 欧美金8天国| 啪视频| 久久精品国产999久久久| 999精品| 毛片3| 欧美日本一道高清二区三区| 爱爱视频免费网站| 韩国在线看免费观看高清| 亚洲欧美高清在线| 久草美女| 成人人免费夜夜视频观看| 欧美三级在线观看黄| 国产专区91| 黄色录像免费看| 国产综合久久一区二区三区| 欧美日韩中出| 在线精品国精品国产不卡| www噜噜偷拍在线视频| 日韩黄色一级| 男女激情在线观看| 国产精品一区在线免费观看| 成人免费男女视频网站慢动作| 国内精品久久久久影院老司| 欧美精品人爱c欧美精品| 日韩欧美一级大片| 尤物国产精品福利三区| 久久99热国产这有精品| 尤物视频最新网址| 亚洲这里只有精品| 在线视频97| 在线观看一区二区精品视频| 欧美日韩一区二区三区毛片 | 一区二区三区四区日韩| 91久久精品午夜一区二区| 99视频在线看| 91精品久久久| 久久99精品久久久久久黑人|