MSComm为什么只能收到一个数据呢?

tanzhihua198612 2011-06-18 11:22:32
代码如下:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{

char c[4];
char *Rx_Buffer; //接收缓冲的字节
OleVariant temp; //声明变体变量
if(!MSComm1->InBufferCount)return;//接收缓冲无数据了,则不在执行下面步骤

if(Uart_Open)//使能显示(显示使能&串口打开)
{
temp=MSComm1->Input;
VarArrayRedim((Variant&)temp,1);
Rx_Buffer=(unsigned char*)temp.GetElement(0);

if(Rx_Buffer[0]==0x55)
{
Send_Box->Lines->Text="握手成功!!!";
}
else
Send_Box->Lines->Text="握手失败!!!";
}


}
//---------------------------------------------------------------------------
//发送数据
void __fastcall TForm1::Send_ButtonClick(TObject *Sender)
{
char *str;//取得发送文本
OleVariant temp; //声明变体变量
unsigned char c=0;
char CMD[10]="\0";
CMD[0]=0x55;
CMD[1]=CMO;
CMD[2]='\0';
str=CMD;
if(Uart_Open)
{
temp=VarArrayCreate(OPENARRAY(int,(0,0)),varByte);//创造单个变体int,(0,10))发送11个数据
for(int n=0;n<1;n++)

c=str[n];

temp.PutElement(c,0);//字符传入变体变量;
MSComm1->Output=temp;//发送

}

}

请指点
...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanzhihua198612 2011-06-21
  • 打赏
  • 举报
回复
void __fastcall TForm1::Send_ButtonClick(TObject *Sender)
{
byte Command[2] = { 0x55, 1 };

OleVariant vBuff = VarArrayCreate(OPENARRAY(int, (0, 2)), varByte);
for (int i = 0; i < 2; i++)
vBuff.PutElement(Command[i], i);

MSComm1->Output = vBuff;
}
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{

BYTE recvBuff[2];//返回命令数据缓冲区,大小根据实际情况而定
OleVariant ovRecvBuf;//万能变量
ovRecvBuf=MSComm1->Input;
ovRecvBuf=VarArrayCreate(OPENARRAY(int,(0,2)),varByte);
for(int i=0;i<2;i++)//从万能数组中提取接收数据到缓冲区
{
recvBuff[i]=ovRecvBuf.GetElement(i);

if(recvBuff[0]==0x55)

Send_Box->Lines->Text="握手成功!!!";

else
Send_Box->Lines->Text="握手失败!!!";
}
}
大侠们帮我看下这段程序 收不到下位机的应答了
我不懂电脑 2011-06-20
  • 打赏
  • 举报
回复
串口是流式协议,需要自己定义包头包尾,判断是否接收完成,不一定能一次收完全部数据。
ccrun.com 2011-06-20
  • 打赏
  • 举报
回复
不要用char数组做缓冲,用byte
tst1255 2011-06-20
  • 打赏
  • 举报
回复
MSComm1控件有事件,可以定义数据到达事件,在事件里接收数据。
用Timer事件查询,效率低,延时可能也大。
tanzhihua198612 2011-06-20
  • 打赏
  • 举报
回复
妖哥 你可以留我联系方式不 有些问题还需要指点下

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧