Mscomm控件收发二进制数据问题?

clong320 2004-09-13 02:41:45
Mscomm控件收发二进制数据问题?

--------------------------------------------------------------------------------

1.发送:
OleVariant TxBuff;
char buffer[256];

for(int i = 0; i < 256; i ++) buffer[i] = i;
TxBuff = VarArrayCreate(OPENARRAY(int,(0,256)),varByte);
for(int i = 0; i < 256; i ++) TxBuff.PutElement(buffer[i], i);
Mscomm1->Output = TxBuff;
上述代码发送二进近制数据成功;
2.接收:
OleVariant RxBuff;
char buffer[256];
RxBuff = VarArrayCreate(OPENARRAY(int,(0,256)),varByte);

RxBuff= MSComm->Input;
int j= RxBuff.ArrayHighBound(1);
for (i = 0; i <= j; i++) buffer[i]= RxBuff.GetElement(i);
运行时报错,RxBuff不是OleVariant数组。
请高手指点!!
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihongxing2002 2004-12-16
  • 打赏
  • 举报
回复
up
clong320 2004-09-15
  • 打赏
  • 举报
回复
OleVariant RxBuff;
char buffer[256];
试过了,去掉
RxBuff = VarArrayCreate(OPENARRAY(int,(0,256)),varByte);
后仍然出下面的错误:
Variant is not an Array!

用下面的方法测试到:
RxBuff = VarArrayCreate(OPENARRAY(int,(0,256)),varByte);
if(RxBuff.IsArray())Edit1->Text = "true";
else Edit1->Text = "false";
RxBuff= MSComm->Input;
if(RxBuff.IsArray())Edit2->Text = "true";
else Edit2->Text = "false";
int j= RxBuff.ArrayHighBound(1);
for (i = 0; i <= j; i++) buffer[i]= RxBuff.GetElement(i);

结果:Edit1中是true,Edit2中是false。
也就是经过RxBuff= MSComm->Input;
后RxBuff不是Array了。

手足无措ing!
phder 2004-09-14
  • 打赏
  • 举报
回复
去掉
RxBuff = VarArrayCreate(OPENARRAY(int,(0,256)),varByte);
这一句

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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