【问题标题】:Printf and Scanf with arduino languagePrintf 和 Scanf 与 arduino 语言
【发布时间】:2013-08-16 15:37:40
【问题描述】:

我想在 arduino 语言中使用 printf 和 scanf。

我以这种方式正确运行 printf: http://playground.arduino.cc/Main/Printf

但我不能使用 scanf。我该如何使用它?

【问题讨论】:

    标签: arduino printf scanf


    【解决方案1】:

    您需要采取两步走的方法。

    首先,由于您正在为 Arduino 编码,并且将由 scanf 处理的数据是通过串行端口传输的,因此首先编写一个例程来读取串行端口以获取您需要的数据。你会发现这不是一个简单的任务,你最终会通过例程来读取整数、字母等的 ASCII 字符。

    在您编写了读取串行端口数据的代码之后,然后将其概括为一种可以使用变量参数列表调用的方法,这些变量参数列表被分析,并且您在第一步中编写的例程被适当地调用。

    简而言之,Arduino 没有等效的 scanf,因为它必须处理串行 I/O。

    但是,您可以通过将串行数据读入缓冲区然后使用 sscanf(字符字符串上的 scanf)来缩短上述工作,但是您需要再次编写执行以下操作的包装器串行 i/o 并使用您自己的包装器中的变量参数调用 sscanf,类似于您的链接正在执行的操作。

    【讨论】:

    • 严格来说,没有scanf,因为没有标准输入提供输入。在计算机上运行的程序通常以键盘的形式提供标准输入,并以控制台窗口的形式提供标准输出。如果没有这些,您必须将一些输入源耦合到 sscanf,就像您注意到的那样。
    • 您对此有何看法? appelsiini.net/2011/simple-usart-with-avr-libc如果我按照输入部分进行操作对我有帮助吗?
    • @DarkCoffee,我点击了链接,请注意在第二段中对何时使用 Arduino 库进行了评论。编写你自己的代码是很有启发性的,当你有足够的经验时,要么使用这个库,要么编写你的库来做同样的事情!快速查看链接没有发现任何关于使用scanf 和重定向标准输入的明确 cmets,因此在使用该库时可能仍然存在一些问题。在您有足够的经验编写自己的同一个库版本之前,您无法解决的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2017-07-06
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多