久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 測試測量 > 設計應用 > labview教程之如何實現內存空間共享

labview教程之如何實現內存空間共享

作者: 時間:2017-02-27 來源:網絡 收藏

  在C語言中,可以采用文件映射的方法,開辟一段內存空間,各個進程和線程可以利用這段共享內存空間進行數據交換,也就是寫讀操作,這里涉及到一個控制權限的問題,任何時刻,只能允許一個線程或者進程對內存空間進行操作,看一段代碼,是通過API實現的內存空間共享.

  #defineFILE_SIZE1024

  staticHANDLEhMapFile;

  staticLPVOIDlpMapAddress;

  staticLPCTSTRg_szEventName="EventName";

  voidWrite(char*data){

  if(lpMapAddress!=NULL){

  MEMSet(lpMapAddress,0,FILE_SIZE);

  sprintf((char*)lpMapAddress,"%s",data);

  }

  }

  voidRead(){

  if(lpMapAddress!=NULL){

  printf("%sn",lpMapAddress);

  }

  }

  voidProcess1(){//寫數據

  hMapFile=CreateFileMapping(

  INVALID_HANDLE_VALUE,//Currentfilehandle.

  NULL,//Defaultsecurity.

  PAGE_READWRITE,//Read/writepermission.

  0,//Max.objectsize.

  FILE_SIZE,//SizeofhFile.

  "MyFileMappingObject");//Nameofmappingobject.

  if(hMapFile==NULL)

  {

  printf("Couldnotcreatefile-mappingobject.");

  return;

  }

  //

  lpMapAddress=MapViewOfFile(hMapFile,//Handletomappingobject.

  FILE_MAP_ALL_ACCESS,//Read/writepermission

  0,//Max.objectsize.

  0,//SizeofhFile.

  FILE_SIZE);//Mapentirefile.

  if(lpMapAddress==NULL)

  {

  printf("Couldnotmapviewoffile.");

  return;

  }

  ::Sleep(10000);

  //Writedata

  ANDLEhEvent=::OpenEvent(

  EVENT_MODIFY_STATE,

  FALSE,

  g_szEventName);

  while(hEvent!=NULL){

  scanf("%s",lpMapAddress);

  ::SetEvent(hEvent);

  }

  ::CloseHandle(hEvent);

  hEvent=INVALID_HANDLE_VALUE;

  }

  在Labview如果想動態申請內存只能通過DLL或者CIN來實現,LABVIEW本身又不支持指針操作,實現非常困難,不過我們可以通過數組來實現內存的分配.

  共享內存同全局變量一樣,同樣存在數據競爭的問題,我們可以把共享內存看成是內存數據塊全局變量.

  LABVIEW中防止數據競爭的最好辦法是把讀寫操作在一個VI里,LABVIEW本身就會保證任意時刻只能有一個讀寫操作.

  對于全局可讀寫變量,LABVIEW可以用內置全局變量也可以用FUNCTIONGLOBAL(我前面的文章中專門談到了FUNCTIONGLOBAL和AE的概念,可以參照一下)

  在自動化控制領域,內存共享應用非常廣泛,對CAN總線控制卡,有雙口RAM的概念,對PLC有輸入輸出映射區,實際上指的都是固定的RAM空間,相對于計算機來說,就是一段內存空間.

  熟悉PLC的朋友都非常清楚,PLC是采用循環掃描的方式來運行程序的,掃描開始前,一次性地讀入外部開關的狀態,存入輸入映射區中,在一次掃描程序運行期間,它的狀態是不變的.

  我們在LABVIEW設計控制程序時,也完全可以借用這個方法,實際上很多DSC和外部設備通過OPC通訊都是采用固定間隔更新的方法.


上一頁 1 2 下一頁

評論


技術專區

關閉