線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2424
推到 Plurk!
推到 Facebook!

利用chart畫圖,像示波器

尚未結案
unungigi3000
一般會員


發表:20
回覆:14
積分:6
註冊:2005-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-20 20:27:28 IP:140.124.xxx.xxx 未訂閱
各位前輩們,小弟是使用資料擷取卡,讀到很多組的數據,但實際只需到兩組,且他的數據會一直變動,小弟想利用讀到的數據,用chart畫出來,且會一直更新,像示波器那樣子!! 請各位前輩指導一下吧!! 還有程式裡,得到的值是DOUBLE的形式,小弟想放在chart裡,但卻無法轉換!! 小弟也剛接觸bcb,希望前輩多多教導 以下是讀數據的程式碼
//#include 
#pragma hdrstop    #include "DisplayForm.h"
#include "..\..\..\include\driver.h"    //---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmDisplay *frmDisplay;    extern      char        szErrMsg[80];               // Use for MESSAGEBOX function
extern      char        szBuffer[40];                                // Temperatory buffer
extern      LRESULT     ErrCde;                     // Return error code    extern LONG   DriverHandle ;         // driver handle
extern      PT_MAIVoltageIn  ptMAIVoltageIn;  // structure for AIVoltageIn table
extern      FLOAT       fVoltageArray[64];    //---------------------------------------------------------------------------
__fastcall TfrmDisplay::TfrmDisplay(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmDisplay::ScanTimerTimer(TObject *Sender)
{
   AnsiString buff;        if ((ErrCde = DRV_MAIVoltageIn(DriverHandle,
             (LPT_MAIVoltageIn)&ptMAIVoltageIn)) != 0)
    {
         DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
         Application->MessageBox((LPCSTR)szErrMsg,"Driver Message",MB_OK);
         DRV_DeviceClose((LONG far *)&DriverHandle);
         ScanTimer->Enabled = false;
         return;
     }       Canvas->Font->Color =  clBlue;
   for(int i=0;iTextOut(20 (i%4)*100,80 (i/4)*20,buff);
   }        
}
//---------------------------------------------------------------------------
void __fastcall TfrmDisplay::btnExitClick(TObject *Sender)
{
    ScanTimer->Enabled = false;
     ErrCde = DRV_DeviceClose((LONG far *)&DriverHandle);
    if (ErrCde != SUCCESS)
    {
        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
        Application->MessageBox((char *)szErrMsg, "Driver Message", MB_OK);
     }
     Close();
}
小弟就是不知道該把一直變動的數據給誰,然後怎麼經由某個東西,轉給chart畫出圖!! 或直接就可以由chart畫圖,達到示波器的功能!! 希望櫃前輩們教導一下,給個範例也ok!! ps:程式碼沒po完全,只po重點
pireer
初階會員


發表:73
回覆:80
積分:30
註冊:2004-12-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-21 15:20:45 IP:61.220.xxx.xxx 未訂閱
hi unungigi3000:    給你一段code你參考看看.
//因為我有很多曲線同時要畫出.所以做個迴圈檢查現再這資料是哪一個曲線的值.
for(i=0;i< StrToInt(AllCount); i  )
{
       //當有勾選時.才畫曲線
        if (TMGItem->Checked[i] == true)  
        {
            //判斷當值如果大於警戒上限或下限時.呼叫警告副程式
            if (TMG_BackupData[i][Temperature] < pWinTMG->TouchDown || TMG_BackupData[i][Temperature]  > pWinTMG->TouchUP ) 
            {
                if (FormSetWarning->CheckWarning->Checked == true)  WarningFunction();
            }
            
            //將收到的值.從第i的曲線畫出..陣列是INT型態
            Chart1->Series[i]->AddY(TMG_BackupData[i][Temperature]);
        }
這是我之前寫的溫度量測的一個接收迴圈. 你參考看看...有問題再提出..
系統時間:2024-04-27 23:50:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!