高手们朝这里看啊BCB数据转换出有关问题了望帮帮忙!
高手们朝这里看啊!!!BCB数据转换出问题了望帮帮忙!!!!
串口发过来的数据(应该是字符串吧)无法转换为16进制(在Memo上显示出来的是ASCII码值)!我用的是MSComm里OnComm事件!具体程序如下:希望高手帮忙修改修改!
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{
unsigned int len,k;
char a_cBuf[100];
OleVariant s; //声明一个用于接收数据的OleVariant变量。
AnsiString str; //声明一个AnsiString类型的变量
int val;
if(MSComm1->CommEvent==comEvReceive)
// 接收缓冲区中是否收到Rthreshold个字符。
{
if(MSComm1->InBufferCount)// 是否有字符驻留在接收缓冲区等待被取出
{
s=MSComm1->Input;//接收数据
str=s.AsType(varString);
strcpy(a_cBuf,str.c_str());
for(k=0;k<strlen(a_cBuf);k++)
{
Memo1->Text=Memo1->Text+" "+IntToHex(a_cBuf[k],2);
}
}
}
}
------解决方案--------------------
那个帖子就是楼主的旧帖子。
------解决方案--------------------
“ Memo1->Text=Memo1->Text+" "+IntToHex(a_cBuf[k],2); ”
看了一下
原来你串口发的数据本来就是ASCII码;
如:
a_cBuf[0] = 0x31 ;
a_cBuf[1] = 0x32 ;
a_cBuf[2] = 0x33 ;
你调用IntToHex(a_cBuf[k],2); 时当然显示的也是ASCII吗 31,32,33
------解决方案--------------------
调用我下面写的 把你得到的ASCII字符串转换一下即可
串口发过来的数据(应该是字符串吧)无法转换为16进制(在Memo上显示出来的是ASCII码值)!我用的是MSComm里OnComm事件!具体程序如下:希望高手帮忙修改修改!
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{
unsigned int len,k;
char a_cBuf[100];
OleVariant s; //声明一个用于接收数据的OleVariant变量。
AnsiString str; //声明一个AnsiString类型的变量
int val;
if(MSComm1->CommEvent==comEvReceive)
// 接收缓冲区中是否收到Rthreshold个字符。
{
if(MSComm1->InBufferCount)// 是否有字符驻留在接收缓冲区等待被取出
{
s=MSComm1->Input;//接收数据
str=s.AsType(varString);
strcpy(a_cBuf,str.c_str());
for(k=0;k<strlen(a_cBuf);k++)
{
Memo1->Text=Memo1->Text+" "+IntToHex(a_cBuf[k],2);
}
}
}
}
------解决方案--------------------
那个帖子就是楼主的旧帖子。
------解决方案--------------------
“ Memo1->Text=Memo1->Text+" "+IntToHex(a_cBuf[k],2); ”
看了一下
原来你串口发的数据本来就是ASCII码;
如:
a_cBuf[0] = 0x31 ;
a_cBuf[1] = 0x32 ;
a_cBuf[2] = 0x33 ;
你调用IntToHex(a_cBuf[k],2); 时当然显示的也是ASCII吗 31,32,33
------解决方案--------------------
调用我下面写的 把你得到的ASCII字符串转换一下即可
- C/C++ code
AnsiString ASCIIToString(AnsiString ASCII_Str) { char h; AnsiString shou ; for(int i=0; i <ASCII_Str.Length();i=i+2) { AnsiString hex= ASCII_Str.SubString(i+1,2).UpperCase(); int a = StrToInt("$"+hex); shou=(shou + char(a)).Trim() ; } return shou.Trim() ; } void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage(ASCIIToString("31")); }
------解决方案--------------------
楼主到底想要显示什么格式?比如一个字符串:"1234",接收方是想显示"1234",还是想显示"31 32 33 34"?先说清楚。