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
[35808] Re:고수님들께 여쭙니다.
방태윤 [nabty] 926 읽음    2004-06-21 00:10
일단 눈에 보이는건...
void __fastcall TXXThread::Execute(void)
{
    // 최초 버퍼 생성
    New_Buf( );
    while( !Terminated )
    {
        ReadValue = 채널로 부터 들어노는 integer 값 ;
        // 버퍼에 저장
        inbuf->ValueX[ inbuf->BufCount ] = ReadValue;
********inbuf->BufCount++ ; <==여기로 옮기거나 아니면 아래에서 499 로 비교하시던가...
        // 버퍼가 다 채워졌으면
        if( inbuf->BufCount >= 500 )
        {
            AddBufToList( inbuf );    // 리스트에 버퍼추가
            New_Buf( );               // 새 버퍼 할당
***필요없는듯 함..inbuf->BufCount = 0;      // 버퍼 인덱스 변수 0 으로 셋팅
        }
    }
****AddBufToList( inbuf );//마지막 꺼 리스트에 추가

}


초보탈출 님이 쓰신 글 :
: 안녕하세요.
: 고수님들께 여쭙니다.
:
: 아날로그 입력신호를 받는 하드웨어에서 초당 500개씩 정수형 값들이 들어오는데
: 입력을 받기시작해서 끝날때까지는 약 2~10분 정도 걸립니다.
: 들어오는 값들을 1초 단위로 끊어서 저장을 해야되는데 입력을 받기 시작해서 끝나는
: 시점을 알수가 없기때문에 메모리를 동적으로 할당을 해야될것 같아서 아래와 같이
: TList 를 이용하여 무식한 방법으로 코딩해 봤습니다.
:
: 그런데 컴파일 할때는 에러가 없는데 실행시엔 몇초안가 다운이 되버리네요. ㅠㅠ
: 고수님들 부디 해결방법을 부탁 드립니다. --;
:
:
: // 초당 500 개씩 들어오는 정수값들을 저장하기 위한 클래스
: /***************** BufferManage.h ***********************/
:
: #define BUF_LENGTH      500
:
: class TBufManage
: {
:     public:
:
:             __fastcall TBufManage( void );
:
:         int BufCount;  // 버퍼에 저장되는 값들을 인덱싱 하기위한 변수
:        
:         int ValueX[ BUF_LENGTH ]; //저장될 버퍼
: };
:
:
: // 클래스 구현 cpp 파일
: /*****************  BufferManage.cpp ***********************/
:
: #include "BufferManage.h"
:
:
: // 생성자
: __fastcall TBufManage::TBufManage( void )
: {
:     BufCount = 0;   
: }
:
:
:
:
: // 스레드 관련 cpp 파일
: /*****************  BufThread.cpp ***********************/
:
:
: TList * BufList;
: TBufManage *inbuf;
:
:
:         ...
:
: BufList = new TList;
:
:         ...
:
:
: void New_Buf( void )
: {
:     inbuf = new TBufManage();
: }
:
:
: void AddBufToList( TBufManage * buf )
: {
:     BufList->Add( buf );
: }
:
: // 스레드의 동작함수
: void __fastcall TXXThread::Execute(void)
: {
:     // 최초 버퍼 생성
:     New_Buf( );
:
:     while( !Terminated )
:     {
:         ReadValue = 채널로 부터 들어노는 integer 값 ;
:
:         // 버퍼에 저장
:         inbuf->ValueX[ inbuf->BufCount ] = ReadValue;
:
:         // 버퍼가 다 채워졌으면
:         if( inbuf->BufCount >= 500 )
:         {
:             AddBufToList( inbuf );    // 리스트에 버퍼추가
:             New_Buf( );               // 새 버퍼 할당
:
:             inbuf->BufCount = 0;      // 버퍼 인덱스 변수 0 으로 셋팅
:         }
:
:         inbuf->BufCount++ ;
:     }
: }
:
:

+ -

관련 글 리스트
35807 고수님들께 여쭙니다. 초보탈출 804 2004/06/20
35808     Re:고수님들께 여쭙니다. 방태윤 926 2004/06/21
35822         Re:Re:감사합니다. 박 재성 837 2004/06/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.