我正在尝试将我的第一个代码发送到Verifone设备。该设备具有Verix OS和Arm Processor。 我遵循“操作系统编程工具参考手册”,其代码运行良好:
#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()......总是发生类似事情。 Write()和similars有时有时不工作,它取决于与read(),Scanf()的组合...但read()函数和similars在我的Verifone设备上从未起作用。
答案 0 :(得分:0)
int display = open(DEV_CONSOLE, O_WRONLY);
O_WRONLY
表示只写。请尝试使用O_RDWR
:
int display = open(DEV_CONSOLE, O_RDWR);