Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux上从Java访问PC硬件端口_Java_Linux_Port_Hardware Interface_Hardware Port - Fatal编程技术网

Linux上从Java访问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

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, 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()。