|
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;
: : : }
: : :
: : :
: : :
: : :
: : :
: : :
|