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
[24583] Re:Re:Re:도와주세여...(시리얼 통신)
이재수 [ljs9643] 1370 읽음    2003-03-04 12:24
CPort는 제가 뭘 실수 했는지..잘 깔리지 않아서리..쩝
일전에 만들었던...소스를 올립니다.
이 소스는 간단하게 만들었구요..

최보현.U&I 님의 U&I Serial 컴포넌트를 이용했습니다.
Binary 처리를 해주셨기 때문에...간단히 처리가 되거든요..
일단...보이는게 우선이라...
텍스트로 왔다갔다..하도록 구성했습니다.
참고되셨으면 좋겠네요..

참...이 컴포넌트에서...저는
TSerial.cpp에서
ReadCount = min(DWORD(InternalInBufSize), CommStatus.cbInQue);
가 에러가 발생하는 바람에...min 함수가 있을텐데..잘 안되어서리...쩝

        if( (DWORD)InternalInBufSize > CommStatus.cbInQue )
            ReadCount = CommStatus.cbInQue;
        else
            ReadCount = (DWORD)InternalInBufSize;

로 수정하여 사용했습니다.
이 소스는 기존 visual-c에서 시리얼제어하던 방식을 그대로 컴포넌트로 바꾸셨더군요..
일단 unsigned char 형태로 데이터를 수신하기 때문에..
스트림으로의 전환은 간단히 만들수 있습니다.

이 자리를 빌어 .. 컴포넌트를 만들어주신 최보현님께 감사를....^^

아....잠시..머리아플때 대충만든거라...에러 처리부분은 모두 없습니다..
시리얼포트 닫기도안했다는...쩝


헬프 님이 쓰신 글 :
: 답변 주셔서 정말 정말 감사합니당....
: unsigned char로 바꿔서 해보니 데이터가 깨져서 나오지는 안는군요..
: 그런데 데이터가 왜 모두 0만 출력되는걸까요? 어떤 숫자로 나와야하는데...
: 가르쳐주시면 감사하겠습니당.. ^^
:
: 이재수 님이 쓰신 글 :
: : 저도 작업하던게 있어서..테스트는 못해봤지만,
: : 요즘은 대부분 스트림으로 데이터를 주고 받기 때문에, 컴포넌트도 그렇게 만든것 같습니다.
: : 산업용기기에서 프로그래밍 할때,
: : unsigned char과 char 간의 문제로
: : 코드가 제대로 전달안된 걸 본적이 있습니다.
: : 시리얼에서는 텍스트와 바이너리의 차이는 없을꺼구요.
: : 받은 데이터를 unsigned char로 바꿔서 저장해 보시면 어떨까 합니다.
: :
: :
: :
: : 헬프 님이 쓰신 글 :
: : : CPort2.64로 시리얼 통신을 하고 있는데요...
: : :
: : : CPort2.64 파일 안의 예제를 돌려보면 데이타가 다 깨져서 나오거든요...
: : :
: : : 데이터가 깨져 나오는 이유가 텍스트로 받아서 그런것 같은데...
: : :
: : : 어떻게 해야 데이터를 바이너리로 받을 수 있을까요?(제가 빌더 초보라서 잘 모르겠거든요..)
: : :
: : : 시리얼 통신에 대해 잘 아시는분 없나여??
: : :
: : : 특히 예제 중에 아랫 부분을 모르겠거든요 좀 자세히 알려주시면 감사하겠습니다...
: : :
: : : void fastcall TForm1::Button_SendClick(TObject *Sender)
: : : {
: : :     AnsiString Str;
: : :
: : :     Str = Edit_Data->Text;
: : :     if (NewLine_CB->Checked)
: : :         Str = Str + "\r\n";
: : :     ComPort->WriteStr(Str);
: : : }
: : :
: : :     .....
: : :     .....
: : :     .....
: : :     .....
: : :
: : : void fastcall Tform1::ComPortRxChar(TObject *Sender, int Count)
: : : {
: : :     AnsiString Str;
: : :   
: : :     ComPort->ReadStr(Str, Count);
: : :     Memo->Text = Memo->Text + Str;
: : : }
: : :
: : :
: : :
: : :
: : :
: : :

+ -

관련 글 리스트
24556 도와주세여...(시리얼 통신) 헬프 925 2003/03/01
24660     Re:답변이 늦은거 같지만 한자 적습니다 주희 826 2003/03/09
24565     Re:도와주세여...(시리얼 통신) 이재수 1032 2003/03/03
24575         Re:Re:도와주세여...(시리얼 통신) 헬프 814 2003/03/04
24583             Re:Re:Re:도와주세여...(시리얼 통신) 이재수 1370 2003/03/04
24562     Re:도와주세여...(시리얼 통신) 왕대박 924 2003/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.