在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > labview教程之如何實(shí)現(xiàn)內(nèi)存空間共享

            labview教程之如何實(shí)現(xiàn)內(nèi)存空間共享

            作者: 時(shí)間:2017-02-27 來(lái)源:網(wǎng)絡(luò) 收藏

              在C語(yǔ)言中,可以采用文件映射的方法,開辟一段內(nèi)存空間,各個(gè)進(jìn)程和線程可以利用這段共享內(nèi)存空間進(jìn)行數(shù)據(jù)交換,也就是寫讀操作,這里涉及到一個(gè)控制權(quán)限的問(wèn)題,任何時(shí)刻,只能允許一個(gè)線程或者進(jìn)程對(duì)內(nèi)存空間進(jìn)行操作,看一段代碼,是通過(guò)API實(shí)現(xiàn)的內(nèi)存空間共享.

              #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(){//寫數(shù)據(jù)

              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如果想動(dòng)態(tài)申請(qǐng)內(nèi)存只能通過(guò)DLL或者CIN來(lái)實(shí)現(xiàn),LABVIEW本身又不支持指針操作,實(shí)現(xiàn)非常困難,不過(guò)我們可以通過(guò)數(shù)組來(lái)實(shí)現(xiàn)內(nèi)存的分配.

              共享內(nèi)存同全局變量一樣,同樣存在數(shù)據(jù)競(jìng)爭(zhēng)的問(wèn)題,我們可以把共享內(nèi)存看成是內(nèi)存數(shù)據(jù)塊全局變量.

              LABVIEW中防止數(shù)據(jù)競(jìng)爭(zhēng)的最好辦法是把讀寫操作在一個(gè)VI里,LABVIEW本身就會(huì)保證任意時(shí)刻只能有一個(gè)讀寫操作.

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

              在自動(dòng)化控制領(lǐng)域,內(nèi)存共享應(yīng)用非常廣泛,對(duì)CAN總線控制卡,有雙口RAM的概念,對(duì)PLC有輸入輸出映射區(qū),實(shí)際上指的都是固定的RAM空間,相對(duì)于計(jì)算機(jī)來(lái)說(shuō),就是一段內(nèi)存空間.

              熟悉PLC的朋友都非常清楚,PLC是采用循環(huán)掃描的方式來(lái)運(yùn)行程序的,掃描開始前,一次性地讀入外部開關(guān)的狀態(tài),存入輸入映射區(qū)中,在一次掃描程序運(yùn)行期間,它的狀態(tài)是不變的.

              我們?cè)贚ABVIEW設(shè)計(jì)控制程序時(shí),也完全可以借用這個(gè)方法,實(shí)際上很多DSC和外部設(shè)備通過(guò)OPC通訊都是采用固定間隔更新的方法.


            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: labview內(nèi)存空間共

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉