0

初めてのコードを Verifone デバイスに作成しようとしています。このデバイスには、Verix OS と Arm プロセッサが搭載されています。私は「オペレーティングシステムプログラミングツールリファレンスマニュアル」に従っていましたが、そのコードはうまく機能します:

#include <string.h>
#include <svc.h>
char Greeting[] = "Hello!";
void main (void)
{
    int display = open(DEV_CONSOLE, O_WRONLY);
    write(display, Greeting, strlen(Greeting));
    normal_tone();
    close(display);
}

ただし、私のコードはうまく機能しません。なんで?これと他のバリエーションはコンパイルされますが、キーパッドによる入力は機能しません。

#include <string.h>
#include <svc.h>
#include <stdio.h>
int main (void)
{
    int display = open(DEV_CONSOLE, O_RDWR);
    char result[30];
    char ent[2]="\0\0";
    write(display, "\nEnter a number: ", 17);
    read(display, ent, 1);
    sprintf(result,"\nPressed key: %s", ent);
    write(display, result, strlen(result));
    normal_tone();
    close(display);
    return 0;
}

私はすでにscanf()、fscanf()、getchar()、fgetc()、fgets()を試しました...常に同様のことが起こります。read()、Scanf() との組み合わせによって異なりますが、read() 関数と類似の機能は、私の Verifone デバイスでは機能しませんでした。

4

1 に答える 1

0
int display = open(DEV_CONSOLE, O_WRONLY);

O_WRONLY書き込みのみを意味します。O_RDWR代わりに使用してみてください:

int display = open(DEV_CONSOLE, O_RDWR);
于 2018-03-19T23:39:57.377 に答える