2

C非標準ライブラリを使用して出力をLCD画面に表示するプロジェクトに取り組んでいます。コードはうまく機能していますが、問題が発生しました。

このプログラムの私の意図する目的は、テキストのコマンドライン文字列を取得し、それをASCII 10進値に変換して、それらを画面に表示することです。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は、2番目の引数としてcharを取ります。文字列ではなく、引数付きのフォーマット文字列ではなく、文字だけです。

変数xにcharがある場合は、次のようにします。

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