VSC++中变量的问题?

DDSMJB 2018-01-22 10:31:04
各位大神,楼主小白,想请教一个问题,有个程序打印出的数据是printf("#%d -> %.6f, %.6f, %.6f, %.6f\n", dev_index, qx, qy, qz, qw) 我想把第一位的%d变成我接收传感器的dev.address。源程序部分如下:
#include <string>
#include <vector>
#include <list>
#include <iterator>
#include <iostream>
#include <functional>

#include "libSuyunBleInvoker.h"
#include "SUYUN_WBLE_Callback.h"

libSuyunBleInvoker invoker;

std::vector<BTDevice> scaned_devices;

int connect_index = 0;

void OnScanResult( std::list<BTDevice>* devices ) {
// clear out of date devices infomation
scaned_devices.clear();

// save devices infomation
std::copy( devices->begin(), devices->end(), std::back_inserter( scaned_devices ) );

// print device infomation
if( scaned_devices.size() > 0 ) {
printf( "Scan Result:\n" );

for( auto & dev : scaned_devices ) {
printf( "Device: %s, %s, %ddBm\n", dev.name, dev.address, dev.rssi );
}

// connect sensor one by one, when connected or not, it calls OnEvent function
invoker.connect_device( connect_index, scaned_devices[ connect_index ].address );
} else {
printf( "No device found.\n" );
}
}

// print quaternion components received from ble sensor
void OnData( const int dev_index, float qx, float qy, float qz, float qw, const int sr, const int bp ) {
printf( "#%s -> %.6f, %.6f, %.6f, %.6f\n", dev.address, qx, qy, qz, qw );
}

这个我手动改成了printff( "#%s -> %.6f, %.6f, %.6f, %.6f\n", dev.address, qx, qy, qz, qw ),不过报错dev.address未定义。。
...全文
393 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2018-01-22
  • 打赏
  • 举报
回复
注意作用域 scaned_devices 已经是全局变量了, 函数中传入了 dev_index, 就可以取到 BTDevice *pDev = &scaned_devices[dev_index]; pDev->XXXXX
csulizhang 2018-01-22
  • 打赏
  • 举报
回复
有,把dev定义成全局变量赋值,或者是吧dev.address的值传进OnData方法中打印出来
DDSMJB 2018-01-22
  • 打赏
  • 举报
回复
引用 1 楼 zhangli00 的回复:
你所谓的dev,只是在方法OnScanResult里面定义的局部变量,而且还是在for循环里面才能使用的变量,OnData这个方法里面根本就没有dev这个东西,更不用说dev.address了,
那就没有别的办法可以在打印数据中添加dev.address了吗?
csulizhang 2018-01-22
  • 打赏
  • 举报
回复
你所谓的dev,只是在方法OnScanResult里面定义的局部变量,而且还是在for循环里面才能使用的变量,OnData这个方法里面根本就没有dev这个东西,更不用说dev.address了,
DDSMJB 2018-01-22
  • 打赏
  • 举报
回复
引用 8 楼 zgl7903 的回复:
f = fopen("d:\\mydata.txt", "w+"); //追加模式
fseek(f, 0, SEEK_END); //移动到文件尾部
for (i = 0;i<N;i++) { …… }
fclose(f);


打印数据设定是这样。接收数据是没有顺序的。
DDSMJB 2018-01-22
  • 打赏
  • 举报
回复
引用 8 楼 zgl7903 的回复:
f = fopen("d:\\mydata.txt", "w+"); //追加模式
fseek(f, 0, SEEK_END); //移动到文件尾部
for (i = 0;i<N;i++) { …… }
fclose(f);

老师,还是有问题,我最终想保存的,是5个传感器的数据,每个前面都有各位的地址,每保存一次就刷新一次,而我的打印和保存也不是按顺序的,所以保存的时候是等5个传感器的数据都到了,保存一次

zgl7903 2018-01-22
  • 打赏
  • 举报
回复
f = fopen("d:\\mydata.txt", "w+"); //追加模式 fseek(f, 0, SEEK_END); //移动到文件尾部 for (i = 0;i<N;i++) { …… } fclose(f);
DDSMJB 2018-01-22
  • 打赏
  • 举报
回复
引用 6 楼 zgl7903 的回复:
void OnData( const int dev_index, float qx, float qy, float qz, float qw, const int sr, const int bp ) { BTDevice *pDev = &scaned_devices[dev_index]; printf( "#%s -> %.6f, %.6f, %.6f, %.6f\n", pDev->address, qx, qy, qz, qw ); }
谢谢您的回复,是这样,我现在完整的程序是要把打印的数据保存到txt中,5个传感器的数据,程序我写成这样,打印的数据没问题,每个传感器数据前面都是所对应的地址,就是保存到txt中的数据乱了,您能帮我看看么?。 void OnData(const int dev_index, float qx, float qy, float qz, float qw, const int sr, const int bp) { FILE *f; const int N = 5; static float nqx[N]; static float nqy[N]; static float nqz[N]; static float nqw[N]; int i; printf("#%d -> %.6f, %.6f, %.6f, %.6f\n", dev_index, qx, qy, qz, qw); if (0 <= dev_index && dev_index<N) { nqx[dev_index] = qx; nqy[dev_index] = qy; nqz[dev_index] = qz; nqw[dev_index] = qw; f = fopen("d:\\mydata.txt", "w"); for (i = 0;i<N;i++) { fprintf(f, "%d %.6f, %.6f, %.6f, %.6f\n", i, nqx[i], nqy[i], nqz[i], nqw[i]); } fclose(f); } else { printf("#%d not in [0..%d]!\n", dev_index, N - 1); } }
zgl7903 2018-01-22
  • 打赏
  • 举报
回复
void OnData( const int dev_index, float qx, float qy, float qz, float qw, const int sr, const int bp ) { BTDevice *pDev = &scaned_devices[dev_index]; printf( "#%s -> %.6f, %.6f, %.6f, %.6f\n", pDev->address, qx, qy, qz, qw ); }
DDSMJB 2018-01-22
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903 的回复:
注意作用域 scaned_devices 已经是全局变量了, 函数中传入了 dev_index, 就可以取到 BTDevice *pDev = &scaned_devices[dev_index]; pDev->XXXXX
谢谢您,因为我之前没接触过C++,所以请问下您的这个语句完整写应该是什么,要加在哪里,对于小白来说。有些吃力。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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