今天在用VC调aglient示波器时,有一个示例中的语句ViScanf没有看懂,求指教

素才 2012-07-25 11:35:40
viScanf(vi, "%#b\n", &data_length, ieeeblock_data);

%#b是什么意思?
&data_length, ieeeblock_data这两个是干什么的?看了好几遍,也查了相关文档,还是不知所云,求指点!

该语句来自安捷伦示波器的官方文档E8251-90355.pdf的程序示例部分,该段程序如下:
/* Query for an IEEE definite-length block result.
* --------------------------------------------------------------- */
int do_query_ieeeblock(query)
char *query;
{
char message[80];
int data_length;
strcpy(message, query);
strcat(message, "\n");
err = viPrintf(vi, message);
if (err != VI_SUCCESS) error_handler();
data_length = IEEEBLOCK_SPACE;
err = viScanf(vi, "%#b\n", &data_length, ieeeblock_data);
if (err != VI_SUCCESS) error_handler();
if (data_length == IEEEBLOCK_SPACE )
{
printf("IEEE block buffer full: ");
printf("May not have received all data.\n");
}
check_instrument_errors();
return(data_length);
}
...全文
225 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
月落满江 2012-08-18
  • 打赏
  • 举报
回复
既然看到了就解释一下吧,权当参考
正是因为这个%#b中的“#”,所以决定了后面两个变量(必须是两个)的类型。%b与%s功能类似,只不过这个地方是aglient某种特定数据类型数组的引用而已。

1、因数组涉及到大小,所以后面这个data_length定义的就是这个数组的最大长度,只不过因为“#”的原因,这里需要的是一个整形的引用,即&data_length

2、ieeeblock_data就是用来保存visanf()操作后的数据

27,516

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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