c - 如何在ARM应用程序上使用read()函数或类似函数到Verix OS的Verifone设备



我正在尝试将我的第一个代码制作到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]="";
    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((...总是发生类似的事情。Write(( 和类似的有时有效有时不起作用,这取决于与 read((、Scanf((...但是read((函数和类似功能从未在我的Verifone设备上工作过。

int display = open(DEV_CONSOLE, O_WRONLY);

O_WRONLY表示仅写入。请尝试改用O_RDWR

int display = open(DEV_CONSOLE, O_RDWR);

最新更新