• 6614阅读
  • 6回复

[提问]qt 串口编程 [复制链接]

上一主题 下一主题
离线2003wanglian
 
只看楼主 倒序阅读 楼主  发表于: 2011-01-15
工程中想实现一个功能:我是在arm9上做个界面,上面要显示一些相关信息,这些信息都是通过串口接收来自主控机所发的数据
          如:主机发送数据:A1+C9+03+01+4+CD+F5+BA+CD+21+AC
                    A1+C9:  字头
                    03:地址
                    01:射手的姓名
                    4:姓名的字节长度
                    CD+F5+BA+CD:  姓名的ASCII码,
                    21:异或和
                    AC:字尾
我现在只会接收数据,不知道如何提取出来我要用的数据“姓名”,请朋友们帮忙!!!

离线2003wanglian
只看该作者 1楼 发表于: 2011-01-15
请高手指点我具体使用那个函数,先谢谢拉!!!
离线sng2008

只看该作者 2楼 发表于: 2011-01-15
char  name[5] = {0};
memcpy(name,&(Msg[5]),4);
离线sng2008

只看该作者 3楼 发表于: 2011-01-15
也可以:
struct  SMsg
{
word  hd
unsigned char add;
unsigned char SName;
ussigned char Namelen;
unsigned char Name[4];
unsigned char sum;
unsigned char off;
}

SMsg msg;
com->rev(&msg, sizeof(SMsg))
;
然后直接访问Name成员。
离线guomeng0905
只看该作者 4楼 发表于: 2011-02-24
楼主,能把你的串口程序分享一下吗,我现在也是要用ARM9做个界面,通过串口接收数据,但是没头绪啊,可以加我QQ:734122618  把程序发过来也可以,非常感谢!
离线kozmers

只看该作者 5楼 发表于: 2011-02-25
// Set QString str to the buffer of  serial data accepted.
// ASCII character stream buffer must be used
QString str = buffer;
// A1+C9+03+01 process program yourself
////////////
str.remove(0, 4);  // remove first "A1+C9+03+01"
int lenthName = str.at(0).toInt();  // Get lenth of name
QString name =  str.mid(1, lenthName); // Get name content
return name;
离线mini6410

只看该作者 6楼 发表于: 2017-03-01
我在arm11上开发的,与pc通信,现在又个小问题,能接收,但是必须通过send按钮激发才行
快速回复
限100 字节
 
上一个 下一个