|
송신영 님이 쓰신 글 :
: 앱돌이 님이 쓰신 글 :
: : 초보 질문좀 받아주세요
: :
: : rs232로 계측기와 연결하여 버튼을 눌렀을시 전압을 StringGrid에 뿌려주려주는 소스입니다.
: :
: : char strr[200];
: : char DMMRecData[200]; //변수는 전역으로 잡았습니다.
: :
: : void __fastcall TForm1::Button3Click(TObject *Sender)
: : {
: :
: : AnsiString result;
: : FILE *fp;
: : ComPort2->Open();
: : sprintf(strr,"MEAS:VOLT:DC?%c",0x0a);
: : ComPort2->Write(strr,StrLen(strr));
: : }
: :
: :
: :
: :
: : void __fastcall TForm1::ComPort2RxChar(TObject *Sender, int Count)
: : {
: :
: : ComPort2->Read(strr,Count);
: : memcpy(DMMRecData,strr,Count);
: : StringGrid1->Cells[3][1] = DMMRecData;
: :
: :
: : }
: :
: : 11v인가한 결과입니다.
: : 메모로 확인해보니
: : Memo2
: : +
: : 1
: : .
: : 0
: : 9
: : 9
: : 0
: : 1
: : 4
: : 5
: : 4
: : E
: : +
: : 0
: : 1
: :
: :
: : 이런식으로 작성되었습니다.
: :
: : /////////////////////////////MEMO소스///////////////////////////////
: :
: : void __fastcall TForm1::ComPort2RxChar(TObject *Sender, int Count)
: : {
: :
: : ComPort2->Read(strr,Count);
: : memcpy(DMMRecData,strr,Count);
: : Memo2->Lines->Add(DMMRecData);
: :
: :
: : }
: :
: :
: :
: : 1. 질문 : 메모로 출력되는것을 한줄로 바꿀수 있는 방법이있나요?
:
: => ComPort2RxChar() 콜백 함수는 데이터가 수신될 때 마다 호출 되는것인데요.
: 아마도 통신 속도를 매우 느리게 설정한것 같습니다.
: 데이터를 수신할 때마다 출력해서 그런 결과가 나온것이구요.
: 데터를 모두 수신하기 전에는 출력하지 말아야 정상적으로 한줄로 나옵니다.
: 데이터를 모두 수신하였는지 확인하는 방법은 타겟 장비로부터 보내주는 데이터 포멧을 알아야합니다.
: STX, ETX를 사용한다든지.. 그래서 ETX가 들어올 때 가지 데이터를 죽 받아서 저장해 두었다가
: 하나의 문장으로 완성해서 데이터를 처리해야합니다.
: 시리얼 통신에서는 항상 데이터가 한꺼번에 들어온다고 생각하면 절대 안됩니다.
: 중간에 몇번씩은 잘려서 들어온다고 생각하세요. 특히 통신 속도를 느리게 하면 더 그렇습니다.
:
: : 2. 질문 : 11v인가하였는데 +1.0이런식으로 나왔는데 어떻게 수정해야할까요?
:
: => 타겟 장비로 부터 보내는 데이터 형식을 바꿔달라고 해야합니다.
: 아니면 데이터 요청을 보낼때 어떤 형식이 있어서 리턴 받는 값의 형식을 지정해서 보낼 수 도 있구요.
: 이건 앞에 1번에서 말씀드린것 같이 해당 타겟 장비의 통신 메뉴얼을 참고하셔야합니다.
:
: : 3. stringgrid로 옮기기위해서는 어떻게 해야할까요?
:
: => 작성하신 코드처럼 하시면 될것 같은데요.
: 완성된 문장을 만드는게 중요하고, 완성된 문장이 만들어지면 어디에 출력하는 가는 쉬운 문제니....
:
: :
: : 공부중에 너무 속상하내요 안되니...
: :
: : 답변부탁드립니다.
: :
: :
: : ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
친절한 설명 감사드립니다.
3. 질문에서는 stringgrid로 뿌려지는지 확인을 해보려고 작성한거였는데 뿌려지질않네요 ㅜㅜ
2번 질문 조금만 자세히 설명부탁드려요 될가요
|