2

我正在开发一个使用非标准C库在 LCD 屏幕上显示输出的项目。我的代码运行良好,但遇到了问题。

我对这个程序的预期目的是获取一个命令行文本字符串并将其转换为 ASCII 十进制值,然后将它们显示在屏幕上。将文本输出到屏幕的方式是调用serialPutchar函数以显示字母H,因为serialPutchar(fd, 'H');我希望能够从变量中获取值并输出变量中的字母。

问题是,当我将其编写为serialPutchar(fd, "%c", H);或尝试时serialPutchar(fd, "%d", x);,出现以下错误:

testing.c: In function âmainâ:
testing.c:22:3: warning: passing argument 1 of âserialPutcharâ makes integer from pointer without a cast [enabled by default]
/usr/local/include/wiringSerial.h:30:14: note: expected âintâ but argument is of type âchar *â
testing.c:22:3: error: too many arguments to function âserialPutcharâ
/usr/local/include/wiringSerial.h:30:14: note: declared here

我猜它不能像你那样以那种方式使用printf,所以有没有替代方法,或者我只是有一个我没有发现的简单错误。我包含一个指向该wiringSerial库文档的链接。同样从我的错误输出中,我得到了错误testing.c In function main:和其他几行周围的奇怪字符。有没有办法防止这种情况?链接到这里的库下面是我输出的工作代码HELLO

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <wiringPi.h>
#include <wiringSerial.h>

int main (int argc, char *argv[])
{
  int fd ;
  if ((fd = serialOpen ("/dev/ttyAMA0", 9600)) < 0)
  {
    fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
    return 1 ;
  }

  if (wiringPiSetup () == -1)
  {
    fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;
    return 1 ;
  }
    int H = 1;
         serialPutchar(fd, 'H');
         serialPutchar(fd, 'E');
         serialPutchar(fd, 'L');
         serialPutchar (fd, 'L');
         serialPutchar (fd, 'O');
  }

:::更新:::

这是符合我描述的工作代码:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <wiringPi.h>
#include <wiringSerial.h>

int main (int argc, char *argv[])
{
  int fd ;
  if ((fd = serialOpen ("/dev/ttyAMA0", 9600)) < 0)
  {
    fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
    return 1 ;
  }

  if (wiringPiSetup () == -1)
  {
    fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;
    return 1 ;
  }
        for (int i=1; i<argc; i++){
         serialPrintf (fd, "%s",  argv[i]);
        }
  }
4

1 回答 1

2

putChar 将 char 作为其第二个参数。不是字符串,不是带参数的格式字符串,只是一个字符。

如果变量 x 中有一个字符,只需执行以下操作:

 serialPutchar(fd, x);
于 2013-02-28T01:44:18.493 回答