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

关于MSComm串口通信的!1,该如何解决

2012-02-25 
关于MSComm串口通信的!!1这个是我的程序。为什么2台机器相互接收长度超过8就接收不了,还有接到ARM板上,发送

关于MSComm串口通信的!!1
这个是我的程序。为什么2台机器相互接收长度超过8就接收不了,还有接到ARM板上,发送几次才能收到其中1个数据!!!不知道为什么,达人请指点。谢谢
void   __fastcall   TForm1::Button1Click(TObject   *Sender)
{
if(Form1-> MSComm1-> PortOpen==true)
Form1-> MSComm1-> PortOpen=false;
Form1-> MSComm1-> Settings= "9600,0,8,1 ";
Form1-> MSComm1-> InputMode=comInputModeText;
Form1-> MSComm1-> CommPort=1;
Form1-> MSComm1-> InBufferCount=0;
Form1-> MSComm1-> SThreshold=1;
Form1-> MSComm1-> RThreshold=1;
//---------------------------------------
void   __fastcall   TForm1::Button2Click(TObject   *Sender)
{
if(MSComm1-> PortOpen==false)
{MSComm1-> PortOpen=true;
Application-> MessageBox( "信息提示框 ", "串口打开成功 ",MB_OK);
}
}
//---------------------------------------
void   __fastcall   TForm1::Button5Click(TObject   *Sender)
{
if(MSComm1-> PortOpen==true)
MSComm1-> PortOpen=false;
}
//---------------------------------------
void   __fastcall   TForm1::Button6Click(TObject   *Sender)
{   OleVariant   varSend;
char   cBuff[200];
varSend=RichEdit2-> Lines-> Text;
for(int   i=0;i <=200;i++)
varSend.PutElement(cBuff[i],i);
MSComm1-> Output=varSend;
}
//---------------------------------------
void   __fastcall   TForm1::MSComm1Comm(TObject   *Sender)
{
OleVariant   varReseive;
if(MSComm1-> CommEvent==2);
varReseive=MSComm1-> Input;
RichEdit1-> Lines-> Text=varReseive;
}

[解决办法]
OleVariant varSend;
char cBuff[200];
varSend=RichEdit2-> Lines-> Text;-----没有给cBuff赋值??
for(int i=0;i <=200;i++)
varSend.PutElement(cBuff[i],i);
MSComm1-> Output=varSend;


这个地方可以这样写就可以了,你试试看,我没有办法测试:
MSComm1-> Output=OleVariant(RichEdit2-> Lines-> Text);

另外一个问题是:mscomm只能发值小于128的字符,不能发比128大的字符,就是说发文字可以的,但是乱码之类的东西发过去都是0,这是我的经验。

热点排行