Linux上从Java访问PC硬件端口
Linux上的Java相当于C字节大小的PC体系结构硬件端口输入/输出函数是什么 对于输出,有如下所示的Linux上从Java访问PC硬件端口,java,linux,port,hardware-interface,hardware-port,Java,Linux,Port,Hardware Interface,Hardware Port,Linux上的Java相当于C字节大小的PC体系结构硬件端口输入/输出函数是什么 对于输出,有如下所示的outb: tmp = inb(0x61); if (tmp != (tmp | 0x01)) outb(0x61, tmp | 0x01); tmp = (inb(0x61) & 0xfe); outb(0x61, tmp); 对于输入,有如下所示的inb: tmp = inb(0x61); if (tmp != (tmp | 0x01)) outb(0x61
outb
:
tmp = inb(0x61);
if (tmp != (tmp | 0x01))
outb(0x61, tmp | 0x01);
tmp = (inb(0x61) & 0xfe);
outb(0x61, tmp);
对于输入,有如下所示的inb
:
tmp = inb(0x61);
if (tmp != (tmp | 0x01))
outb(0x61, tmp | 0x01);
tmp = (inb(0x61) & 0xfe);
outb(0x61, tmp);
目的:我想实现比这少一些开销的东西:
try { Runtime.getRuntime().exec("beep") } catch (IOException e) {}
作为将代码7(贝尔字符)发送到标准输出的替代方案,因为在Ubuntu中,这似乎已经被严重禁用。工具箱的嘟嘟声也是静音的。我想你找错火车了 Java是一种面向对象的高级语言,用于编译虚拟机体系结构。汇编程序I/O指令是特定于硬件处理器的。两者之间没有直接的等价关系
您最希望的是将Java代码(使用管道、共享内存、套接字等)与执行所需I/O的本机Linux应用程序接口。在Linux中,一切都是文件。您可以在Linux上运行C(显然),因此证明并非所有Linux I/O都是面向文件的。不!Kangkan建议您打开一些设备文件,例如
/dev/tty0
或/dev/lp0
。另请参阅,如果您需要确切的功能,请使用jni—编写一个小的C函数,将其构建到共享库中,加载它,然后调用它。更新:我的目的已经说明。所以您实际的问题是:“如何从Java创建一个系统蜂鸣?”这对您来说似乎是一个非常不同的问题“在Linux上从Java访问PC硬件端口”。仍然输入/输出我所需要的,因为试图以其他方式发出声音是一种巨大的时间浪费。我已经尝试了很多。示例代码不是汇编程序:它是处理器无关代码。任何涉及inb()/outb()的代码它与处理器无关。I/O操作是x86独有的。有些C编译器不是x86,因此必须有非x86的inb()和outb()。