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
[26289] Re:Cport로 데이터 저장하는데 버그를 있네요^^
손효철 [] 917 읽음    2003-07-10 23:56
소스에서 보니 받은 부분과 쓰는 부분이 연결 안되어있네요 그리고 포트의
파라메터를 수신으로 한게 맞는지요 프로퍼티에서 수신문자가 얼마일때
인터럽트가 걸리게 셋팅했는지 안나타나 있군요

제가 쓸때는 수신시 1문자마다 인터럽트가 오게셋팅해도 읽어보면
여러자가 들어온상태이므로 계속 더하여야 합니다
rxchar 인터럽트는 계속 드나들며 발생하므로 그곳에서 맴돌게 만들면
프로그램이 서버림 (계속 버퍼를 읽어서 들어온것을 검사해야함)

그리고 통신의경우 헤더와 테일이 있을텐데 그것을 찾아서 올바른 데이타
패킷인지 처리하는 부분도 없는것 같고





초보자올림 님이 쓰신 글 :
: 고수님들의 조언 부탁 드립니다. ^^
:
: 데이터를 시리얼로 4096바이트를 일정 간격으로 받을려고 합니다.
:
: 물론 Cport 라이브러리를 사용하여 데이터를 받습니다.
:
: 그런데 4096바이트 데이터를 받고 나면 다음 데이터를 기다리다 보면
:
: 프로그램이 동작을 않습니다.
:
: 데이터 속도는 38400이구요. 이것 때문에 문제가 되는것이 아닌지...
:
: 프로그램은 간단히 아래와 같이...
:
: unsigned long Index, Count; 
:
: void __fastcall TForm1::FormPaint(TObject *Sender)
: {
:      if((Buffer = (unsigned char *)malloc(4096*1000)) == NULL) {
:           Close();
:           return;
:      }
: }
:
: void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count1)
: {
:      String Str;
:      unsigned char str[3];
:      unsigned long i;
:
:
:      for(i=Index;i<Index+Count1;i++) {
:           ComPort1->ReadStr(Str, 1);
:           strcpy(str,Str.c_str());
:           Buffer[i] = str[0];
:      }
:
:
:      Index += Count1;
:      Count = Index;
:
:      if(Index%4096 == 0){ // 4096 받을때 마다 버퍼 클리어
:           if(ComPort1->Connected == true) {
:                ComPort1->ClearBuffer(true, true);
:                ComPort1->Close();
:           }
:           if(ComPort1->Connected == false) {
:                ComPort1->Open();
:                ComPort1->ClearBuffer(true,true);
:            }
:      }
:
: }
:
:
: /////////////////////////////////////////
: /////// 바이러리로 저장 루틴...  ///////////
: /////////////////////////////////////////
:      FILE *fp;
:      unsigned char  cal_data;
:      unsigned long i;
:
:      if ((fp=fopen("dat1.aaa","wb+"))== NULL){
:           fprintf(stderr, "Cannot open output file.\n");
:           return ;
:      }
:
:      for(i=0;i<Count;i++) {
:           cal_data = Buffer[i];
:           fwrite(&cal_data,1,sizeof(unsigned char),fp);
:        //   fprintf(fp,"%c",cal_data);
:      }
:
:      fclose(fp);
:
: 저장 루틴에서 데이터가 제대로 저장이 되지 않네요.
:
: 고수님들의 예리한 눈으로 잘못 된 부분을 지적 좀 해 주세요^^
:
: 조언 기다리고 있겠습니다.
:
: 그럼 즐거운 하루 되세요

+ -

관련 글 리스트
26281 Cport로 데이터 저장하는데 버그를 있네요^^ 초보자올림 1212 2003/07/10
26289     Re:Cport로 데이터 저장하는데 버그를 있네요^^ 손효철 917 2003/07/10
26297         Re:Re:Cport로 데이터 저장하는데 버그를 있네요^^ 초보자올림 719 2003/07/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.