//////////////////for test
for(j=0; j<10; j++){
for(i=bTemp; i<(bTemp+(WAVE_COUNT/10)); i++){
switch(j){
case 0: WaveBuf[i]=(rand()%10+20)*-1; break;
case 1: WaveBuf[i]=(rand()%10+20)*-1; break;
case 2: WaveBuf[i]=rand()%10+20; break;
case 3: WaveBuf[i]=(rand()%10+20)*-1; break;
case 4: WaveBuf[i]=rand()%10+20; break;
case 5: WaveBuf[i]=(rand()%10+20)*-1; break;
case 6: WaveBuf[i]=rand()%10+20; break;
case 7: WaveBuf[i]=(rand()%10+20)*-1; break;
case 8: WaveBuf[i]=rand()%10+20; break;
case 9: WaveBuf[i]=(rand()%10+20)*-1; break;
}
}
bTemp+=(WAVE_COUNT/10);
}
질문
최남영
안녕하세요
현재 TChart를 이용해 Signal Spectrum 디스플레이 기능구현하고 있습니다.
Series에서 point와 mark를 visible하면 모든 포인트에 표시가 되는데 원하는 몇개 포인트에만 포인트를 출력하고싶은데 가능한 방법에 대해 문의드립니다.
#include "WaveForm.h"
#include "HMainForm.h"
#include "Define.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TWave *Wave;
#define WAVE_COUNT 200
short int WaveBuf[WAVE_COUNT];
short int PreWaveBuf[WAVE_COUNT];
short int PeakPointNum=0;
#define WAVE_START 0x01
#define WAVE_MAX_HOLE 0x02
#define WAVE_PEAKTOPEAK 0x04
unsigned char WaveFlag=0;
//---------------------------------------------------------------------------
__fastcall TWave::TWave(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TWave::FormClose(TObject *Sender, TCloseAction &Action)
{
char i;
ActiveFormStatus&=~WAVE_FORM;
Action = caFree;
}
//---------------------------------------------------------------------------
void __fastcall TWave::FormShow(TObject *Sender)
{
ActiveFormStatus|=WAVE_FORM;
}
//---------------------------------------------------------------------------
void __fastcall TWave::Button_WaveStartClick(TObject *Sender)
{
WaveFlag|=WAVE_START;
memset(PreWaveBuf, 0xFFF0,sizeof(PreWaveBuf));
}
//---------------------------------------------------------------------------
void __fastcall TWave::Button_WaveStopClick(TObject *Sender)
{
WaveFlag&=~WAVE_START;
}
//---------------------------------------------------------------------------
void PeakToPeakFunc(void)
{
Wave->Series1->Clear(); //Absolute_Peak
}
void WaveProc(void)
{
short int i,j, bTemp=0;
//////////////////for test
for(j=0; j<10; j++){
for(i=bTemp; i<(bTemp+(WAVE_COUNT/10)); i++){
switch(j){
case 0: WaveBuf[i]=(rand()%10+20)*-1; break;
case 1: WaveBuf[i]=(rand()%10+20)*-1; break;
case 2: WaveBuf[i]=rand()%10+20; break;
case 3: WaveBuf[i]=(rand()%10+20)*-1; break;
case 4: WaveBuf[i]=rand()%10+20; break;
case 5: WaveBuf[i]=(rand()%10+20)*-1; break;
case 6: WaveBuf[i]=rand()%10+20; break;
case 7: WaveBuf[i]=(rand()%10+20)*-1; break;
case 8: WaveBuf[i]=rand()%10+20; break;
case 9: WaveBuf[i]=(rand()%10+20)*-1; break;
}
}
bTemp+=(WAVE_COUNT/10);
}
/////////////////
if(WaveFlag&WAVE_START){
Wave->Series1->Clear(); //maxhold도 무조건 clear
if(WaveFlag&WAVE_MAX_HOLE){
for(i=0; i<WAVE_COUNT; i++){
if(PreWaveBuf[i]<WaveBuf[i]){
PreWaveBuf[i]=WaveBuf[i];
}
}
for(i=0; i<WAVE_COUNT; i++){
Wave->Series1->AddXY(i,(PreWaveBuf[i]));
}
}
else{
for(i=0; i<WAVE_COUNT; i++){
Wave->Series1->AddXY(i,(WaveBuf[i]));
}
}
}
}
void __fastcall TWave::ComboBox_MaxHoldChange(TObject *Sender)
{
if(Wave->ComboBox_MaxHold->ItemIndex==1){
WaveFlag|=WAVE_MAX_HOLE;
}
else{
WaveFlag&=~WAVE_MAX_HOLE;
}
}
//---------------------------------------------------------------------------
void __fastcall TWave::Button_PeakToPeakClick(TObject *Sender)
{
short int PeakPower=0xFFF0, i;
WaveFlag|=WAVE_PEAKTOPEAK;
if(WaveFlag&WAVE_MAX_HOLE){
for(i=0; i<WAVE_COUNT; i++){
if(PeakPower<PreWaveBuf[i]){
PeakPower=PreWaveBuf[i];
PeakPointNum=i;
}
}
}
else{
for(i=0; i<WAVE_COUNT; i++){
if(PeakPower<WaveBuf[i]){
PeakPower=WaveBuf[i];
PeakPointNum=i;
}
}
}
PeakToPeakFunc();
}
//---------------------------------------------------------------------------
이 댓글 링크
다른 사이트에 공유하기
5 answers to this question
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.