串口二进制数据的提取

lly_oldf 2005-04-17 06:47:30
用微软的MSComm控件读取串口的二进制数据,

例如:串口接收到的数据是0x68 0x01 0x68 0x02 0x33 0x21 0x11 0x13

接收到以后,把他们放在一个int arr[8]数组中,使

arr[0]=0x68

arr[1]=0x01

arr[2]=0x68

arr[3]=0x02

arr[4]=0x33

arr[5]=0x21

arr[6]=0x11

arr[7]=0x13

应该如何编写代码?

希望大虾帮忙啊!!
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lly_oldf 2005-04-18
  • 打赏
  • 举报
回复
收到!虽然我自己已经解决了这个问题,但是还要谢谢各位!!!
happyct 2005-04-18
  • 打赏
  • 举报
回复
clong320的方法应该可用
clong320 2005-04-18
  • 打赏
  • 举报
回复
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{
AnsiString s;
int rev_len;
OleVariant RxBuff;
char buffer[256];
RxBuff = VarArrayCreate(OPENARRAY(int,(0,256)),varByte);


MSComm1->RThreshold = 0;

switch(MSComm1->CommEvent)
{
case comEvReceive:
RxBuff = MSComm1->Input;
int j= RxBuff.ArrayHighBound(1);
for (int i = 0; i <= j; i++) buffer[i]= RxBuff.GetElement(i);

rev_len = RxBuff.ArrayHighBound(1);
for(int i = 0; i < rev_len; i++) Buffer[i] = RxBuff.GetElement(i);

for(int i = 0; i < rev_len; i++) s += IntToHex(Buffer[i],2) + " ";
s = s.Trim();

if(!s.IsEmpty()) Memo1->Lines->Add(s);
break;
}
MSComm1->RThreshold = 1;

}
genliter 2005-04-17
  • 打赏
  • 举报
回复
这样
char arr[8];
mscomm->read(arr,..这里的参数记不清了);
然后就读到arr里了.
arr的每个元素就是你收到的每个值,当然此时直接显示,显示的十进制的,你可以用
IntToHex转化成16进制显示.
lly_oldf 2005-04-17
  • 打赏
  • 举报
回复
!!!!!!!!!救命啊~~~

13,824

社区成员

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

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