mscomm 怎么收不到数据 (急,在线等)

wanglovec 2008-01-29 01:04:46
发送代码

if (Form1->MSComm->PortOpen ==false)
{
Form1->MSComm->PortOpen =true;
}

int send[12]={0xcc,0x1,2,3,4,5,6,7,8,9,10,11};
OleVariant VarBuff;
int n=12;

VarBuff=VarArrayCreate(OPENARRAY(int,(0,n)),varByte); //注意 int,(0,n-1)) 不应为 int,(0,n))
for (int i=0;i<n;i++)
{
VarBuff.PutElement(send[i],i);
}
Form1->MSComm->Output =VarBuff;



接收代码

if (MSComm->CommEvent==comEvReceive) //接收缓冲区中收到Rthreshold(可设置的属性值)个字符
{
OleVariant RxBuff;
try
{
RxBuff=Form1->MSComm->Input;

if (Form1->MSComm->InBufferCount==12) // 收到 InBufferCount为0????
{
for (int i=0;i<Form1->MSComm->InBufferCount;i++)
{
buff[i]=RxBuff.GetElement(i);
}
Disp();
}
}
catch(Exception &exception)
{
ShowMessage("对不起,数据传输过程中出现错误!");
}
}
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_love_pc 2008-01-29
  • 打赏
  • 举报
回复
RThreshold 属性


在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。

语法

object.Rthreshold [ = value ]

Rthreshold 属性语法包括下列部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的对象。
value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。


说明

当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。

例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。

数据类型

Integer
i_love_pc 2008-01-29
  • 打赏
  • 举报
回复
建议参考一下MSDN:Mscomm控件

RxBuff=Form1->MSComm->Input;//这个时候已经将接收缓冲区中的数据清空了。
wanglovec 2008-01-29
  • 打赏
  • 举报
回复
RThreshod 设置为 12

是否表示每次 收12 个字节?

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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