首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

Mscomm控件

2012-02-22 
请教高手Mscomm控件在用Mscomm控件的时候,发送16进制数据,然后从串口检测软件得到的数据是4B 56 2B 03 00,

请教高手Mscomm控件
在用Mscomm控件的时候,发送16进制数据,然后从串口检测软件得到的数据是4B 56 2B 03 00,函数如下:
void __fastcall TForm1::Button2Click(TObject *Sender) 
  {
  MSComm1->InputMode=1;
  char str[5]={0x4B,0x56,0x2B,0x03,0xCF};

  MSComm1->Output=StringToOleStr(str);//(Memo1->Text);// 
 
  MSComm1->InputMode=0;
  }
另外,我把函数改成下面:
 { 
  MSComm1->InputMode=1;
   

  MSComm1->Output=StringToOleStr("4B 56 2B 03 CF");// 
  MSComm1->InputMode=0;

 }
然后从串口检测软件得到的数据是34 42 20 35 36 20 32 42 20 30 33 20 43 46 ,就是说4对应34,B对应42,空格对应20,可是我只想得到4B 56 2B 03 CF,请高手们解答,跪拜!

[解决办法]
"4B 56 2B 03 CF",你这不就一下发了15个字节么,当然是34 42 20 35 36 20 32 42 20 30 33 20 43 46了。楼主可以这样试试:
MSComm1->Output=StringToOleStr("\x4B\x56\x2B\x03\xCF");
[解决办法]
楼主想发Bin的数据,结果发成了Hex的数据。按1楼的代码尝试一下。
[解决办法]
大侠们都说了注意空格的影响
[解决办法]
1楼的代码应该可以的。
[解决办法]
刚才看了一下
MSComm1->InputMode=1;这个模式改一下
再按一楼的方法发

[解决办法]
你的串口数据设的是7位吧,改为8位。
[解决办法]
非ASCII字符在文本方式下发不了?像这这种情况我都是用2进制的,为什么要用字符串发送呢?

热点排行