【发布时间】:2013-08-16 15:37:40
【问题描述】:
我想在 arduino 语言中使用 printf 和 scanf。
我以这种方式正确运行 printf: http://playground.arduino.cc/Main/Printf
但我不能使用 scanf。我该如何使用它?
【问题讨论】:
我想在 arduino 语言中使用 printf 和 scanf。
我以这种方式正确运行 printf: http://playground.arduino.cc/Main/Printf
但我不能使用 scanf。我该如何使用它?
【问题讨论】:
您需要采取两步走的方法。
首先,由于您正在为 Arduino 编码,并且将由 scanf 处理的数据是通过串行端口传输的,因此首先编写一个例程来读取串行端口以获取您需要的数据。你会发现这不是一个简单的任务,你最终会通过例程来读取整数、字母等的 ASCII 字符。
在您编写了读取串行端口数据的代码之后,然后将其概括为一种可以使用变量参数列表调用的方法,这些变量参数列表被分析,并且您在第一步中编写的例程被适当地调用。
简而言之,Arduino 没有等效的 scanf,因为它必须处理串行 I/O。
但是,您可以通过将串行数据读入缓冲区然后使用 sscanf(字符字符串上的 scanf)来缩短上述工作,但是您需要再次编写执行以下操作的包装器串行 i/o 并使用您自己的包装器中的变量参数调用 sscanf,类似于您的链接正在执行的操作。
【讨论】:
scanf 和重定向标准输入的明确 cmets,因此在使用该库时可能仍然存在一些问题。在您有足够的经验编写自己的同一个库版本之前,您无法解决的问题。