串口数据的接受

tony2278 2016-07-29 06:26:35

boost::scoped_array<int> buf(new int[51]) //其实就是定义了 int数组
打印结果:
XX8F80-

boost::scoped_array<char> buf(new char[51]) //其实就是定义了 char数组
打印结果:
FFFFFF80-

预期收到/串口软件收到:
80 8F (Hex方式显示) //其实就是2个数据


//打印
for(int i=0; i<50; i++)
{
printf("%02X-", buf[i]);
}



我应该怎样定义接收数组或者怎样转换已接受到的数据,才能使之像串口软件一样显示同样的数据呢?

...全文
158 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-08-01
  • 打赏
  • 举报
回复
引用 2 楼 tony2278 的回复:
谢谢赵老师!你的方法很管用!
运行结果:
00000001 - 80 8f
哪啊——是!
tony2278 2016-07-31
  • 打赏
  • 举报
回复
谢谢赵老师!你的方法很管用!
运行结果:
00000001 - 80 8f
赵4老师 2016-07-29
  • 打赏
  • 举报
回复
仅供参考:
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
代码下载地址: https://pan.quark.cn/s/0ba44e4274fa 本文首先阐述了关键帧提取技术的研究背景及其重要意义,并概述了国内外相关领域的研究进展,随后对当前较为广泛应用的若干关键帧提取方法进行了深入说明和细致剖析,同时对每一种方法都进行了相应的实验验证。 在常见的关键帧提取算法中,包括基于镜头边界识别的技术、基于图像内容分析的技术、基于聚类分析的技术、基于运动特征分析的技术以及基于压缩视频流处理的技术。 上述这些方法均具备各自的优缺点和一定的应用限制,通常只适用于特定的视频类型,缺乏普遍的适用性。 针对前述关键帧提取方法所存在的不足之处,本文提出了一种创新的关键帧提取方案,该方法依据图像信息熵和边缘匹配率来选取关键帧。 具体步骤如下:首先计算每帧图像的信息熵,并选取信息熵呈现局部极值时所对应的帧作为候选关键帧;接着运用特定算子提取候选关键帧的边缘特征,并对相邻帧进行边缘匹配;若相邻帧的边缘匹配率大于等于预设阈值,则判定当前帧为冗余关键帧,予以剔除。 该方案无需预先设定阈值参数,能够根据视频内容的实际特征动态确定关键帧的数量,展现出优异的适应性。 通过对各类视频进行测试,实验结果证实提取出的关键帧能够有效代表对应视频的主要内容,为视频检索和视频检测任务奠定了坚实的基础。
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 LinuxCNC作为一个开源的实时操作系统,其专门针对数控机床(CNC)进行了设计,并集成了多样化的运动控制功能以及插补算法。本资料将集中阐释“linuxcnc插补算法函数调用关系图”的核心内容,同时探讨与之紧密关联的轨迹规划与运动控制技术。在LinuxCNC系统中,插补算法占据着核心地位之一,其主要职责是将预先设定的离散点(通常是G代码)转化为连续且平滑的运动轨迹。插补算法致力于消除因步进电机或伺服电机的固定步距所引发的运动不连续现象,确保工具能够依照既定的曲线或曲面进行精确运动。所提及的“函数调用关系图”,一般表现为一种详尽的图表,它清晰地呈现了LinuxCNC中与插补算法相关的各类函数之间的相互调用方式,从而构建出整个插补过程的执行逻辑。此类图表对于洞察代码构造、进行故障排除以及优化性能具有不可替代的重要性。尽管该图表尚未完全成型,但它已经彰显了作者在深入研究LinuxCNC内部工作机制方面所付出的巨大努力。LinuxCNC的轨迹规划模块作为插补算法的前置环节,负责处理输入的G代码,并将其转化为适配于插补器操作的数据格式。此项工作不仅包含速度规划、加减速管理、轴同步以及碰撞预防等多个方面,还涵盖了其他相关任务。轨迹规划的核心目标在于生成既平滑又符合物理约束条件的运动指令。在标签中指出的“运动控制”,指的是确保机械设备依照既定轨迹实现精确且高效移动的整个流程,它融合了硬件接口配置、位置反馈机制以及实时响应能力等多个维度。LinuxCNC的运动控制系统与插补算法之间形成了紧密的协同关系,共同保障了高水准的运动控制能力。“cnc算法”这一术语涵盖了广泛的技术范畴,包括但不限于...

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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