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

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

?? vfp環境下實時數據采集的實現.txt

?? Vfp 文檔 一些經典編程文章 可供初學者學習編程時使用
?? TXT
字號:
VFP 環 境 下 實 時 數 據 采 集 的 實 現 
東 南 大 學 熱 能 所(210096)---- 周 衛 平 

--------------------------------------------------------------------------------
---- VFP 作 為 新 一 代 數 據 庫 管 理 系 統, 在 數 據 的 存 取、 編 輯、 顯 示、 處 理 等 方 面 具 有 強 大 和 豐 富 的 工 具, 在 國 內 外 得 到 了 廣 泛 應 用。 在 許 多 工 業 應 用 中, 往 往 要 對 現 場 模 擬 數 據 進 行A/D 轉 換 且 實 時 處 理, 由 于VFP 不 能 對 端 口 進 行 直 接 訪 問, 因 而 無 法 實 現 數 據 采 集。 幸 好VFP 提 供 了DDE 功 能。DDE 是Windows 應 用 程 序 之 間 進 行 動 態 信 息 傳 遞 和 共 享 的 一 個 消 息 協 議, 利 用DDE 可 實 現Windows 的 服 務 程 序 和 客 戶 程 序 的 相 互 獨 立 運 行, 具 有 很 好 的 實 時 性。 在 實 踐 中, 我 們 利 用 高 級 語 言BorLand C++ for Windows 實 現96 路A/D 數 據 采 集, 并 以 此 為 服 務 程 序; 在VFP 環 境 下 建 立 客 戶 程 序, 將 服 務 程 序 傳 遞 過 來 的 數 據 及 時 進 行 運 算 處 理 后, 存 入 數 據 庫, 并 作 為 各 種 表 單、 報 表、 曲 線 的 數 據 源。 該 方 法 在VB 或ACCESS 97 環 境 下 同 樣 適 用, 只 要 將 客 戶 程 序 稍 加 修 改 即 可。 下 面 就 如 何 實 現VFP 環 境 下 的 實 時 數 據 采 集 作 一 介 紹。 
1. 建 立 數 據 采 集 服 務 程 序 
---- 服 務 程 序 包 括 二 個 基 本 部 分: 其 一 是WinMain 入 口 函 數, 它 主 要 完 成 一 此 初 始 化 任 務, 建 立 一 個 名 為hwnd 的 原 始 數 據 顯 示 窗 口, 服 務 程 序 名 為PFBCdas。 其 二 是 應 用 程 序 功 能 函 數MainWndProc。 下 面 是 程 序 清 單( 因 篇 幅 關 系, 在 此 省 去WinMain 函 數)。 
#define AD_Interval 1000    //采樣周期為 1000ms
#define  base   0x280          // A/D采樣板基地址
/*  base+k (k=1,2,...14)為A/D板各寄存器地址    */
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int     i, j, k ,  AD_Status, idTimer;
int   AD_Data[8][16];         // A/D數據存儲單元 
int     DdeAdviseStatus=0;
char    buf[64], DDEbuf[2048];       //數據暫存緩沖器 
char    szAppName[]="PFBCdas";    //服務程序名
char    szDdeTopic[]="AD001";     //主題名 
char    szDdeItem[]="DATA";      // 數據項名
long FAR PASCAL _export MainWndProc(HWND, UINT, UINT, LONG) ;
long FAR PASCAL _export MainWndProc (HWND hwnd, UINT message, UINT 
                                  wParam, LONG lParam)    
//應用程序功能函數   
     {
     ATOM        aAppName,aTopic;
     ATOM        aItem;
     GLOBALHANDLE        hDdeData;
     DDEDATA FAR *lpDdeData;
     static HWND hwndClient;
     switch (message)
        {       
     case WM_CREATE:
        idTimer=SetTimer(hwnd,NULL,AD_Interval,NULL); 
                         //打開定時器
        outportb(base+11,0x10);  //選擇軟件觸發方式
        outportb(base+9,1);      //選擇輸入信號放大倍數為10
        outportb(base+14,0);
        outportb(base+13,0);     //清A/D完成位
        outportb(base+10,0);    //選擇通道0
        return 0;
   case WM_TIMER:
        for(i=0;i<6;i++)
          for(j=0;j<16;j++)       //采樣點為6*16=96個
          {
           outportb(base+13,j);                  
           outportb(base+10,i);   
           outportb(base+12,0);     //啟動A/D轉換
           do AD_Status=inportb(base+5);
           while ((AD_Status&0x10)==0x10); 
//判轉換是否結束?                                                                 
AD_Data[i][j]=(inportb(base+5)&0x0f)*256+inportb(base+4); 
                /*  讀A/D轉換后的數字值  */
            }
           _strdate(buf);                 //取采樣日期
           strcpy(DDEbuf,buf);
           strcat(DDEbuf,",");
           _strtime(buf);                //取采樣時間
           strcat(DDEbuf,buf);
           strcat(DDEbuf,",");
           for(i=0;i<6;i++)
            for(j=0;j<16;j++)
            {
             char  temp[32];
             strcat(itoa(AD_Data[i][j],buf,10),",");
              /*各采樣數據之間以逗號分隔*/
             strcat(DDEbuf,buf);
             }
           if(DdeAdviseStatus!=0)      //如果建立了DDE服務
           {
           aItem = GlobalAddAtom (szDdeItem) ;
                       //添加DDE數據項為全局原子
           hDdeData = GlobalAlloc (GHND | GMEM_DDESHARE,
                         sizeof (DDEDATA) + strlen (DDEbuf)) ;
               /*給采樣數據分配全局內存塊*/
           lpDdeData = (DDEDATA FAR *) GlobalLock (hDdeData) ;
           lpDdeData->fResponse = 0 ;
           lpDdeData->fRelease  = 1 ;
           lpDdeData->fAckReq   = 0 ;
           lpDdeData->cfFormat  = CF_TEXT ;
                          //采樣數據為文本格式
           lstrcpy ((LPSTR) lpDdeData->Value,DDEbuf) ;
               /*將采樣數據從緩沖器放至DDE內存*/
           GlobalUnlock (hDdeData) ;
           if(!PostMessage(hwndClient,WM_DDE_DATA,hwnd,
              MAKELONG(hDdeData,aItem)))  //發送DDE數據
           {
            GlobalFree(hDdeData); 
                  //若發送失敗,則釋放資源
            GlobalDeleteAtom(aItem);        
             }
             }
            return 0;
   case WM_DDE_INITIATE:        //DDE初始化
          hwndClient=wParam;
          hdc=GetDC(hwnd);
          aAppName=GlobalAddAtom(szAppName);
          aTopic=GlobalAddAtom(szDdeTopic);
          if ((LOWORD (lParam) == NULL || LOWORD (lParam) == aAppName)
            && (HIWORD (lParam) == NULL || HIWORD (lParam) == aTopic))
          {           // 發送服務程序名和主題名
        SendMessage(hwndClient,WM_DDE_ACK,hwnd,
                       MAKELONG(aAppName,aTopic));
               } 
          else
          {
           GlobalDeleteAtom (aAppName) ;
           GlobalDeleteAtom (aTopic) ;
              }
           return 0 ;
   case WM_DDE_TERMINATE:     //關閉DDE服務
        hwndClient=wParam;      
        PostMessage (hwndClient, WM_DDE_TERMINATE, hwnd, 0L) ;
        return 0 ;
   case WM_DDE_ADVISE:        //建立DDE服務
        DdeAdviseStatus=1;           //已建立DDE服務標志
        hwndClient=wParam;
        aItem=HIWORD(lParam);
        if(!PostMessage(hwndClient,  WM_DDE_ACK,  hwnd,
          MAKELONG(0x8000,aItem)))          //發送DDE應答
        {
         GlobalDeleteAtom(aItem);
                }
         return 0;
   case WM_DESTROY:             //程序失敗處理
        PostQuitMessage (0) ;
        return 0 ;
           }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
     }
2. 建 立VFP 環 境 下 的 客 戶 端 程 序 
---- 首 先 建 立 和 服 務 程 序 之 間 的 通 道, 然 后 將 服 務 程 序 傳 遞 來 的 數 據 放 至 字 符 串DATA 內, 再 通 過 自 定 義 函 數recdata 將 采 樣 數 據 存 入 數 據 庫 中 待 用。 下 面 是 客 戶 程 序 清 單。 
PROCEDURE   getdata
PUBLIC  mchannel
mchannel = DDEInitiate('PFBCdas','AD001') 
&&建立客戶程序和服務程序間的通道 
IF   mchannel !=-1
  =DDEadvise(mchannel,'DATA','recdata',2)
                &&建立DDE熱連接,數據項為DATA
ENDIF
RETURN

PROCEDURE  recdata      &&用戶自定義函數
PARAMETERS  channel,action,item,data,format,status
PRIVATE   newdata
newdata=""
IF  action='ADVISE'        &&若連接成功
   newdata=DATA            &&將采樣數據傳遞至newdata
   do process with newdata      &&調用數據處理程序 
ELSE
   IF  action='TERMINATE'                       
        = DDETerminate(mchannel)   &&關閉通道
   ENDIF
ENDIF
RETURN

PROCEDURE    process
PARAMETER    newdata
PRIVATE  i,loc1,loc2
DIMENSION  gdata(98)
 * 從字符串 newdata中取采樣值
gdata(97)=CTOD(left(newdata,8))        &&取日期值
gdata(98)=SUBSTR(newdata,10,8)         &&取時間值
* 從字符串newdata的相鄰逗號間取采樣值,
                    并將采樣值轉化為毫伏值
FOR  i=3  TO  98
   loc1=ATC(",", newdata, (i-1))
   loc2=ATC(",", newdata, (i))
   gdata(i-2)=VAL(SUBSTR(newdata,(loc1+1),(loc2-loc1)))
                   *0.024414062
ENDFOR
IF  USED("onedata")
        SELECT  onedata
ELSE
        SELECT  0
USE  onedata  ALIAS  onedata
                    &&打開數據庫onedata
ENDIF
APPEND  FROM  ARRAY  gdata
               &&將數組gdata中的轉換數據添加到數據庫中 
RETURN  
---- 聯 系 地 址: 南 京 市 東 南 大 學 熱 能 工 程 研 究 所 
---- 郵 編:210096 
---- 聯 系 人: 周 衛 平 
---- 電 話:(025)3794191 
---- EMAIL 地 址:qhye@seu.edu.cn 



--------------------------------------------------------------------------------
中國計算機世界出版服務公司版權所有 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜久久久久久久久| 欧美高清在线一区| 91丨九色丨蝌蚪丨老版| 精品一区二区三区香蕉蜜桃| 婷婷亚洲久悠悠色悠在线播放| 亚洲小说欧美激情另类| 亚洲一区日韩精品中文字幕| 亚洲精品ww久久久久久p站| 亚洲欧美日韩电影| 一区二区三区免费| 午夜视频一区二区三区| 日本成人在线一区| 久久se精品一区二区| 国产福利不卡视频| 97超碰欧美中文字幕| 欧美日韩综合在线免费观看| 欧美一区二区三区日韩视频| 日韩三级在线观看| 国产欧美日产一区| 亚洲人成在线观看一区二区| 亚洲综合一二三区| 激情偷乱视频一区二区三区| 国产成人精品免费视频网站| 99久久免费国产| 欧美美女直播网站| 久久久久亚洲综合| 亚洲午夜免费电影| 国产另类ts人妖一区二区| 97精品久久久久中文字幕| 欧美猛男超大videosgay| 26uuuu精品一区二区| 亚洲天堂2016| 九九九精品视频| 色综合久久88色综合天天6| 欧美一区二区三区人| 亚洲人成在线播放网站岛国| 麻豆高清免费国产一区| 色综合中文字幕国产 | 性做久久久久久免费观看欧美| 秋霞成人午夜伦在线观看| 高清不卡在线观看av| 3d动漫精品啪啪1区2区免费 | 91精品国产综合久久精品| 国产精品视频免费| 日本vs亚洲vs韩国一区三区| 91伊人久久大香线蕉| 欧美成人福利视频| 亚洲观看高清完整版在线观看| 国产激情精品久久久第一区二区| 欧美视频一区二区三区四区| 国产欧美一区二区精品婷婷| 日韩av网站在线观看| 欧美午夜一区二区三区免费大片| 欧美国产日本韩| 韩国女主播成人在线| 欧美一级黄色录像| 婷婷国产在线综合| 欧美中文字幕不卡| 亚洲视频在线一区| 波多野结衣的一区二区三区| 国产亚洲人成网站| 狠狠色丁香久久婷婷综| 欧美一二三四在线| 五月婷婷综合激情| 欧洲精品一区二区三区在线观看| 中文字幕亚洲成人| 99久久精品久久久久久清纯| 日本一区二区在线不卡| 韩国三级中文字幕hd久久精品| 日韩一卡二卡三卡国产欧美| 天天影视涩香欲综合网| 欧美在线观看视频一区二区三区| 一区二区免费在线播放| 91老师片黄在线观看| 亚洲激情av在线| 欧美性欧美巨大黑白大战| 亚洲综合视频网| 精品1区2区3区| 日本免费在线视频不卡一不卡二| 欧美少妇性性性| 视频在线在亚洲| 日韩免费观看高清完整版在线观看| 美女视频网站黄色亚洲| 精品日韩在线观看| 国产成人午夜精品影院观看视频| 国产亚洲精品中文字幕| 91香蕉视频mp4| 亚洲一级二级在线| 欧美一区二区三区性视频| 激情小说亚洲一区| 国产三区在线成人av| 国产成人在线视频播放| 亚洲欧美福利一区二区| 欧美日韩国产免费一区二区| 久久精品免费看| 国产精品情趣视频| 欧美日韩激情在线| 国内久久婷婷综合| 亚洲男人都懂的| 91.com视频| 国产91精品在线观看| 亚洲午夜久久久久久久久久久| 日韩一级二级三级精品视频| 成人妖精视频yjsp地址| 亚洲大尺度视频在线观看| 精品国产一区二区三区四区四| 不卡欧美aaaaa| 日韩国产一区二| 日韩一区有码在线| 欧美精品99久久久**| 粉嫩av一区二区三区| 亚洲一线二线三线视频| 久久精品夜色噜噜亚洲aⅴ| 一本大道久久a久久精二百| 蜜臀久久99精品久久久久久9| 国产精品―色哟哟| 欧美一区午夜视频在线观看| 成人app软件下载大全免费| 日本不卡高清视频| 一区二区三区av电影 | 成人免费小视频| 91精品国产综合久久久久久久 | 欧美久久免费观看| 不卡av免费在线观看| 麻豆视频观看网址久久| 伊人色综合久久天天| 久久精品免视看| 91精品啪在线观看国产60岁| 色综合久久综合| 成人天堂资源www在线| 蜜桃精品视频在线| 天天亚洲美女在线视频| 亚洲美女区一区| 中文字幕亚洲视频| 国产三级精品三级在线专区| 91精品视频网| 88在线观看91蜜桃国自产| 欧美午夜精品一区二区蜜桃| 9色porny自拍视频一区二区| 国产suv精品一区二区三区| 久久不见久久见免费视频1| 午夜精品视频一区| 亚洲精品中文在线影院| 中文字幕一区二区三区色视频 | 久久久天堂av| 久久色.com| 精品国产百合女同互慰| 精品久久久久香蕉网| 欧美大片一区二区三区| 日韩欧美中文字幕公布| 欧美一区二区三区爱爱| 欧美一级午夜免费电影| 日韩欧美另类在线| 精品国产一区二区精华| 久久夜色精品国产噜噜av| 久久理论电影网| 国产亚洲人成网站| 中文字幕第一区二区| 亚洲婷婷综合色高清在线| 国产精品久久久久一区| 亚洲欧美视频在线观看| 一区二区三区精品| 天天色天天操综合| 免费成人在线观看| 国产精品一区免费在线观看| 国产91丝袜在线播放九色| 成人av动漫网站| 欧美色图片你懂的| 日韩欧美国产高清| 国产亚洲一本大道中文在线| 国产精品久久久久久久久久久免费看| 亚洲欧美在线另类| 亚洲第一综合色| 国产乱子伦视频一区二区三区| 国产精品99久久久久久宅男| 91在线视频播放| 欧美肥妇bbw| 久久精品夜夜夜夜久久| 亚洲卡通欧美制服中文| 免费在线一区观看| 99在线热播精品免费| 911精品产国品一二三产区| 国产视频一区在线播放| 亚洲一区二区三区在线播放| 久久国产尿小便嘘嘘| aa级大片欧美| 欧美va亚洲va国产综合| 亚洲欧洲精品一区二区精品久久久| 午夜精彩视频在线观看不卡| 国产传媒欧美日韩成人| 欧美酷刑日本凌虐凌虐| 久久精品免费在线观看| 午夜精品成人在线视频| av中文字幕亚洲| 欧美大片免费久久精品三p | 国产免费观看久久| 精品国产a毛片| 日本一区二区视频在线| 亚洲影视资源网| 国产一区二区三区综合|