使用BCB控件遇到的问题
这是使用BCB 中的IdTelnet组件,将设配的返回的信息显示在 TRichEdit Memo1这个控件,按正常的数据power的值应该是1002 W,但是Telnet的返回值在Memo1显示为002 W,整条信息显示如{"status":"success", "response":{"status":"on","power":"002 W","current":"9.0 A"}};如果是电流是2A,按正常的数值power为104 W,Telnet的返回值在Memo1显示为04 W,整条信息显示如{"status":"success", "response":{"status":"on","power":"04 W","current":"2.0 A"}};如果是0.2A ,在Memo1显示的是正常的值 如{"status":"success", "response":{"status":"on","power":"20 W","current":"0.2 A"}};如果不出现0 ,返回值显示OK如{"status":"success", "response":{"status":"on","power":"1124 W","current":"9.5 A"}};这是怎么回事,有知道的吗?
附上一部分代码:
void __fastcall TTelnetForm::btnConnectClick(TObject *Sender)
{
String str,str1;
IdTelnetDemo->Host = edtServer->Text;
str = edtServer->Text;
IdTelnetDemo->Port = StrToInt(spnedtPort->Text);
str1 = spnedtPort->Text;
//Application->MessageBox(str.c_str(),"IPShow");
//Application->MessageBox(str1.c_str(),"PortShow");
IdTelnetDemo->Connect();
}
//---------------------------------------------------------------------------
void __fastcall TTelnetForm::btnDisconnectClick(TObject *Sender)
{
IdTelnetDemo->Disconnect();
}
//---------------------------------------------------------------------------
void __fastcall TTelnetForm::Memo1KeyPress(TObject *Sender, char &Key)
{
if(IdTelnetDemo->Connected())
{
IdTelnetDemo->SendCh(Key);
Key = 0;
}
}
//---------------------------------------------------------------------------
void __fastcall TTelnetForm::IdTelnetDemoDataAvailable(AnsiString Buffer)
{
int Start, Stop;
String str;
str=IntToStr(Memo1->Lines->Count);
if(Memo1->Lines->Count == 0)
Memo1->Lines->Add("");
Start = 1;
Stop = Buffer.Pos(IntToStr('\n')); //the character count to a CR in the buffer
if(Stop == 0)
Stop = Buffer.Length() + 1;
while(Start <= Buffer.Length())
{
Memo1->Lines->Strings[Memo1->Lines->Count -1] =
Memo1->Lines->Strings[Memo1->Lines->Count -1] +
Buffer.SubString(Start,Stop-Start);
if(Buffer.SubString(Stop,1)=='\n')
{
Memo1->Lines->Add("");
SendMessage(Memo1->Handle,WM_KEYDOWN, VK_UP,1);
}
Start = Stop + 1;
if(Start > Buffer.Length())
{
break;
}
if(Buffer.SubString(Start,1)=='\n')
{
Start++;
}
Stop = Start;
while((Buffer.SubString(Stop, 1)!= '\n')&&(Stop <= Buffer.Length()))
{
Stop++;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTelnetForm::IdTelnetDemoConnected(TObject *Sender)
{
sbrStatus->SimpleText = "Connected";
}
//---------------------------------------------------------------------------
void __fastcall TTelnetForm::IdTelnetDemoConnect()
{
sbrStatus->SimpleText = "Connect";
}
//---------------------------------------------------------------------------
void __fastcall TTelnetForm::PingFunctionClick(TObject *Sender)
{
IdTelnetDemo->SendCh('\r');
String status = "status";
SendCommand(status);
Memo1->Lines->Add("");
}
使用Telnet连接上设配后,发送command如status,读取设配信息,然后将返回值显示在 TRichEdit Memo1这个控件;就出现了上面所述的问题,有大神知道怎么解决这个问题吗?