C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49537] Re:data
김형준 [phenix] 871 읽음    2007-06-04 16:21
느낌이 예전에 토크관련 질문올리신 분 같은데... 질문의 내용들이 좀... 많이 바쁘신것 같군요...

AverageData 함수는 DAQ 보드에서 평균값얻는 함수 입니다.
설정한 채널과 갯수 만큼 돌면서 평균값을 구하는군요.
이렇게 하면 여러 채널 읽을경우
1. 시간이 많이 걸리고 채널사이의 동기가 안되고
2. 데이타 외곡도 생길 우려가 있어
잘 사용안하는데...
보통 필요한 채널을 묶어 scan을 사용합니다.

두번째 함수는 모르겠군요.


ㅇ 님이 쓰신 글 :
: double AverageData(USHORT ch, int count)
: {
:     static PT_AIVoltageIn ptAIVoltageIn;             
:     static PT_AIConfig ptAIConfig;
:     float dVoltage, total = 0.0;
:     double ad_value = 0.0;
:
:     ptAIConfig.DasChan = ch;
:     if(ch != 0) ptAIConfig.DasGain = 0;  //+/- 10V
:     else ptAIConfig.DasGain = 1;         //+/- 5V
:
:     DRV_AIConfig(DriverHandle, (LPT_AIConfig)&ptAIConfig);
:
:     for(int i = 0; i < count; i++) {
:             dVoltage = 0.0;
:          ptAIVoltageIn.chan = ptAIConfig.DasChan;        // input channel
:          ptAIVoltageIn.gain = ptAIConfig.DasGain ;    // input range
:          ptAIVoltageIn.TrigMode = 0;                // 0 : internal trigger, 1 : external trigger
:          ptAIVoltageIn.voltage = &dVoltage;
:          DRV_AIVoltageIn(DriverHandle, (LPT_AIVoltageIn)&ptAIVoltageIn);
:          total += dVoltage;            
:     }                                  
:
:     ad_value = total / count;
:     return ad_value;
: }
: //---------------------------------------------------------------------------
: double ConvertData(USHORT ch, int avg)
: {
:     double value;
:      double temp[5];
:
:      value = AverageData(ch, avg);
:
:        temp[0] = adj_valx[action_direct][ch] - init_valx[action_direct][ch];
:      if(temp[0] == 0)  temp[0] = 0.01;
:
:        temp[1] = adj_valy[action_direct][ch] - init_valy[action_direct][ch];
:      temp[2] = temp[1] / temp[0];
:      temp[3] = (temp[2] * value) - (temp[2] * init_valx[action_direct][ch]);
:      temp[4] = temp[3] + init_valy[action_direct][ch];
:      if(temp[4] <= 0)  temp[4] = 0;
:
:      return temp[4];
: }
: 이해가 안되네여.. 대충 설명좀..

+ -

관련 글 리스트
49532 data 903 2007/06/04
49537     Re:data 김형준 871 2007/06/04
49538         Re:Re:data 카리스 914 2007/06/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.