|
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호출은 어떤식으로 이뤄지는건가요?
|