天嵌 ARM开发社区

 找回密码
 注册
查看: 2444|回复: 2

Qt串口 16进制

[复制链接]
vvb9137 发表于 2012-2-11 21:28:11 | 显示全部楼层 |阅读模式
麻烦大家帮我看看!  我想把一组十六进制的数例如"ef 01 ff ff ff ff 01 00 03 01 00 05"发送到设备来实现控制。  我写了个函数,可是好行不行。各位大虾帮我看看这样行不行,我是新手,对这些数据类型啊 进制啊搞得晕头转向了

void Widget::SenCmd(QString str)
{
    QByteArray senddata;
    int hexdata,lowhexdata;
    int hexdatalen = 0;
    int len = str.length();
    senddata.resize(len/2);
    char lstr,hstr;
    for(int i=0; i<len; )
    {
        //char lstr,
        hstr=str[i].toAscii();
        if(hstr == ' ')
        {
            i++;
            continue;
        }
        i++;
        if(i >= len)
            break;
        lstr = str[i].toAscii();
        hexdata = ConvertHexChar(hstr);
        lowhexdata = ConvertHexChar(lstr);
        if((hexdata == 16) || (lowhexdata == 16))
            break;
        else
            hexdata = hexdata*16+lowhexdata;
        i++;
        senddata[hexdatalen] = (char)hexdata;
        hexdatalen++;
    }
    senddata.resize(hexdatalen);
    myCom->write(senddata);
}

char Widget::ConvertHexChar(char ch)
{
    if((ch >= '0') && (ch <= '9'))
        return ch-0x30;
    else if((ch >= 'A') && (ch <= 'F'))
        return ch-'A'+10;
    else if((ch >= 'a') && (ch <= 'f'))
        return ch-'a'+10;
    else return (-1);
}

发送时直接:QString SFG_Identify="ef 01 ff ff ff ff 01 00 03 01 00 05";
                   SenCmd(SFG_Identify)
 楼主| vvb9137 发表于 2012-2-11 21:29:33 | 显示全部楼层
哪位大虾知道一定要帮帮小弟啊
回复

使用道具 举报

TQ-lkp 发表于 2012-2-12 02:59:12 | 显示全部楼层
要多看我们提供的源码,http://www.armbbs.net/forum.php? ... hlight=%B4%AE%BF%DA
这个程序功能十分强大,平常用的功能都有了,几乎每天都有人问串口的问题,仔细看下这个程序吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-5-4 10:43 , Processed in 2.046019 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表