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
[72555] Re:rs232로 통신중입니다.측정값을받아 StringgrId로 뿌려주는데 문제가 생기네요
김시환 [godson2] 4093 읽음    2015-04-20 09:18
voltage 를 정수형으로 하시면 안됩니다.
키슬리 2000 모델은 응답값을 아스키형식의 더블형으로 보냅니다. 

ComPort2->Read(strbuff,Count);
--> ComPort2->Read(strbuff,200);
이부분에서 Count 는 strbuff의 크기를 주세요..

Read 함수의 Count는 수신버퍼의 데이타를 메모리로 옮겨올때 메모리 버퍼의 크기를
알려 주는 파라메터 입니다.

그리고 Read 함수 다음에 sleep(1)을 필요없습니다. 에러가 난 이유는 sleep 가 아니라 Sleep를
쓰셔야 할듯

수신된 데이타가 10개인데 메모리버퍼를 5개만 하면 5개만 버퍼로 옮겨오고 5개는 옮겨오지 않습니다.

가능하면 수신된 데이타보다 큰 버퍼를 잡은 후 수신된 데이타수보다 큰 값을 써 주세요..



앱돌이 님이 쓰신 글 :
: rs232로 계측기 KEITHLY2000과 통신중입니다.
:
:
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
:
:
:         AnsiString result;
:         FILE *fp;
:         char str1[200];
:         ComPort2->Open();
:         sprintf(str1,"MEAS:VOLT:DC?%c",0x0a);
:         ComPort2->Write(str1,StrLen(str1));
:
:
: /////////////바로 밑에 Stringgrid로 뿌려지게 만들었습니다./////////////////
: }
: void __fastcall TForm1::ComPort2RxChar(TObject *Sender, int Count)
: {
:
:          char strbuff[200];
:
:          memset(strbuff,0,Count);
:
:          ComPort2->Read(strbuff,Count);
:          sleep(1);
:
:          voltage = atof(strbuff);
:
:
:
: }
: voltage는 전역으로 int형입니다.
: 이렇게 작성하였는데요
:
: StringGrid에 0이 먼저 입력되고 그다음에 button3를 한번더 눌렀을때 측정값이 입력됩니다.
:
: 혹시나 하여 rx부분에 한줄간격으로 ShowMessage를 넣었더니2바퀴도는걸 확인했습니다
:
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
:
:
:         AnsiString result;
:         FILE *fp;
:         char str1[200];
:         ComPort2->Open();
:         sprintf(str1,"MEAS:VOLT:DC?%c",0x0a);
:         ComPort2->Write(str1,StrLen(str1));
:                            <---------------------------이곳에 ShowMessage를 넣었더니 0이 사라지고 정상적으로 입력이 되었습니다.
: 질문 1: ShowMessage를 없에고 싶은대 어떻게해야할까요?
: 질문 2: sleep(1)을 넣었더니 [C++ Warning] test.cpp(163): W8053 'sleep(unsigned int)' is obsolete 이런 경고창이뜹니다.
:             문제가 무엇인가요?
: 질문 3: sleep(1)을 빼면 다시 0이 입력됩니다. 지연시간없이 해결할 수 있는 방법은 없을가요?
: 질문 4: rx호출은 어떤식으로 이뤄지는건가요?

+ -

관련 글 리스트
72539 rs232로 통신중입니다.측정값을받아 StringgrId로 뿌려주는데 문제가 생기네요 앱돌이 3879 2015/04/17
72555     Re:rs232로 통신중입니다.측정값을받아 StringgrId로 뿌려주는데 문제가 생기네요 김시환 4093 2015/04/20
72540     Re:rs232로 통신중입니다.측정값을받아 StringgrId로 뿌려주는데 문제가 생기네요 라스코니 4188 2015/04/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.