天道酬勤,学无止境

hardware-interface

Any way to use HTML as an interface to a C/C++ program?

I'm developing a product that is interfaced over USB. I want to write a control app for it, but I cannot program a GUI for poo, so I came up with the idea of using a web page (local to the app's install directory) as the interface to the program. So, the line of communication would be: User --> HTML page (not hosted - it's local) --> C++ program --> USB port I'd like to do it this way because it's portable, at least UI wise, and I can write HTML fluently. My question is this: would it be possible to use an HTML page to talk to the USB port through a C++ program? If not, I'll learn GTK - it's

2021-11-18 15:32:52    分类:问答    html   c   hardware   usb   hardware-interface

在 Linux 上从 Java 访问 PC 硬件端口(PC hardware port access from Java on Linux)

问题 什么是相当于 C 字节大小的 PC 架构硬件端口输入/输出功能的 Java-on-Linux? 对于输出,有outb如下所示: tmp = inb(0x61); if (tmp != (tmp | 0x01)) outb(0x61, tmp | 0x01); 对于输入,有inb如下: tmp = (inb(0x61) & 0xfe); outb(0x61, tmp); 目的:我想实现一些比这更少开销的东西: try { Runtime.getRuntime().exec("beep") } catch (IOException e) {} 作为将代码 7(钟形字符)发送到标准输出的替代方法,因为这在 Ubuntu 中似乎已被积极禁用。 Toolkit 的哔哔声也静音。 回答1 我想你叫错​​了火车。 Java 是一种面向对象的高级语言,可编译为虚拟机架构。 汇编器 I/O 指令是特定于硬件处理器的。 两者之间没有直接的等价关系。 您可能希望的最好结果是将您的 Java 代码(使用管道、共享内存、套接字等)与执行所需 I/O 的本机 Linux 应用程序连接起来。

2021-10-31 14:56:30    分类:技术分享    java   linux   port   hardware-interface   hardware-port

无法让 OpenHardwareMonitorLib.dll 工作(Can't get OpenHardwareMonitorLib.dll to work)

问题 我发现很少有关于如何让 OHM 在 C# 中工作的例子 using System; using System.Collections.Generic; using System.Linq; using System.Text; using OpenHardwareMonitor.Hardware; namespace OpenHardwareMonitorReport { class Program { static void Main(string[] args) { Computer computer = new Computer(); computer.Open(); var temps = new List<decimal>(); foreach (var hardware in computer.Hardware) { if (hardware.HardwareType != HardwareType.CPU) continue; hardware.Update(); foreach (var sensor in hardware.Sensors) { if (sensor.SensorType != SensorType.Temperature) { if (sensor.Value != null) temps.Add((decimal)sensor.Value

2021-10-29 19:57:59    分类:技术分享    c#   dll   hardware-interface   openhardwaremonitor

Can't get OpenHardwareMonitorLib.dll to work

I've found very few examples of how to get OHM working in c# using System; using System.Collections.Generic; using System.Linq; using System.Text; using OpenHardwareMonitor.Hardware; namespace OpenHardwareMonitorReport { class Program { static void Main(string[] args) { Computer computer = new Computer(); computer.Open(); var temps = new List<decimal>(); foreach (var hardware in computer.Hardware) { if (hardware.HardwareType != HardwareType.CPU) continue; hardware.Update(); foreach (var sensor in hardware.Sensors) { if (sensor.SensorType != SensorType.Temperature) { if (sensor.Value != null)

2021-10-29 17:35:55    分类:问答    c#   dll   hardware-interface   openhardwaremonitor

Windows 或 Linux 等现代操作系统如何知道芯片组特定的内存映射?(How does a modern operating system like Windows or Linux know the chipset specific memory map?)

问题 外围设备的内存映射由芯片组定义。 然而,像 linux 和 Windows 这样的现代操作系统几乎可以从每个芯片启动(如果为正确的架构编译)。 据我所知,像USB Host这样的内存映射设备不包括在架构标准中。 操作系统如何仍能启动、加载驱动程序和运行? 我想必须有一些描述芯片组的规范。 公式略有不同:芯片组的识别是如何工作的,什么标准定义了芯片组和处理器之间的通信,以便它可以在不同的硬件上工作,以及内核如何知道不同外设的正确物理地址? 回答1 开放系统通常使用设备树,它是所连接硬件及其连接方式的规范。 还有另一个系统ACPI支持传统 PC。 任一系统都允许操作系统定位和配置它需要的总线和相关外围设备。 从来没有 100% 这么容易。 例如,操作系统可以知道总线 1 上地址 1000 处有一个 scsi 控制器; 但是如果 scsi 驱动程序的代码不在加载的 os 映像中,那么这些知识就没什么用了,因为它无法加载驱动程序。 ACPI 的英特尔规范试图通过将微型驱动程序实现嵌入到平台、设备本身或两者的固件中来解决此问题。 由于设备不一定知道它将在哪种类型的 CPU 上运行,这些微型驱动程序是用主机操作系统需要解释器的虚拟指令集编写的。 UEFI 提供了一种替代方法,通过一种更通用的机制来解决引导依赖性,以将微型引导驱动程序用于相同目的。

2021-10-27 01:49:28    分类:技术分享    operating-system   hardware   hardware-interface   chipset

如何获取和更改投影机镜头系统的值?(How to get and change the values of the projector lens system?)

问题 我正在尝试编写一个 Gatan DigitalMicrograph 脚本来控制样品前后入射电子束的倾斜。 我认为可以通过使用 EMGetBeamTilt、EMSetBeamTilt 和 EMChangeBeamTilt 等命令来获取和更改预样品镜头系统的值。 但是,我不知道如何获取或控制投影仪镜头等后验镜头系统的状态。 应该编写什么命令或代码来控制投影机镜头系统? 如果您分享一些智慧,我们将不胜感激。 非常感谢您提前。 回答1 不幸的是,DM 脚本只能通过通用接口访问数量有限的显微镜硬件组件。 通用命令通过由显微镜供应商实施的软件接口与显微镜通信,因此每个命令的确切行为(即当值改变时驱动哪些镜头)完全在显微镜软件的控制范围内,而不是DM。 访问特定镜头或显微镜特定控件的命令通常不可用。 自 GMS 2.3 以来,所有可用命令(虽然它们通常也可以在早期版本中找到)得到官方支持和记录。 您可以在 F1 帮助文档(在线系统上)中找到完整的命令列表:

2021-10-19 00:52:28    分类:技术分享    hardware-interface   dm-script

How to get and change the values of the projector lens system?

I am trying to write a Gatan DigitalMicrograph script to control the tilting of incident electron beam before and after a specimen. I think that the values of pre-specimen lens system can be got and changed by using commands such as EMGetBeamTilt, EMSetBeamTilt and EMChangeBeamTilt. However, I don't know how to get or control the status of the post-specimen lens system such as a projector lens. What command or code should be written in order to control the projector lens system? It will be appreciated if you share some wisdom. Thank you very much in advance.

2021-10-18 16:42:51    分类:问答    hardware-interface   dm-script

哪些三星设备不支持 android 的原生指纹 API?(Which Samsung devices do not support android's native fingerprint API?)

问题 我假设在棉花糖之前没有操作系统的手机支持指纹 API。 我的问题是: (a) 是否所有/任何带有棉花糖的三星手机都支持安卓指纹 API (b) 操作系统升级为 marshmallow 的三星手机是否支持 Android 指纹 API? 我读过这些: 在三星 S5 上使用 Android 6.0 指纹 API 时未检测到指纹扫描仪 未找到三星 Galaxy Note 4 指纹 三星 Note 4 的 Android 指纹 API isHardwareDetected 返回 false 指纹传感器 6.0 以上且未使用 Android 指纹 SDK 的设备 但没有确定的答案。 另外三星的网站提到所有三星设备都支持 Pass SDK 但没有提到 android 指纹 API 支持 回答1 从我的答案下方的评论中更清楚地了解要求后,这里是更新的答案 Pass 是负责三星设备指纹功能的 SDK。 您可以做什么,您可以检查设备是否正在使用Pass SDK。 下面是检查它的代码: FingerprintManager fingerprintManager = (FingerprintManager) getApplicationContext().getSystemService(Context.FINGERPRINT_SERVICE); boolean

2021-10-16 11:28:20    分类:技术分享    android   version   hardware-interface   android-fingerprint-api   samsung-mobile-sdk

PC hardware port access from Java on Linux

What is the Java-on-Linux equivalent to the C byte-sized PC-architecture hardware port input/output functions? For output there is outb as in this: tmp = inb(0x61); if (tmp != (tmp | 0x01)) outb(0x61, tmp | 0x01); For input there is inb as in this: tmp = (inb(0x61) & 0xfe); outb(0x61, tmp); Purpose: I want to implement something that imposes less overhead than this: try { Runtime.getRuntime().exec("beep") } catch (IOException e) {} as an alternative to sending code 7 (the bell char) to the standard output because that seems to have been aggressively disabled in Ubuntu. Toolkit's beep is also

2021-10-01 01:50:53    分类:问答    java   linux   port   hardware-interface   hardware-port

如何在Python中获取mmap-ed内存的地址?(How to get the address of mmap-ed memory in Python?)

问题 我无法弄清楚如何在 Python 中获取标准mmap对象的虚拟地址(来自 mmap 模块)。 记录的方法似乎只以字节数组或字符串的形式访问内存。 但是我需要一次精确访问 2 或 4 个字节的 mmap 内存 - 因为我的应用程序中的这个内存被映射到硬件寄存器(想想 /dev/mem 或 GPIO 等)。 使用ctypes模块可以以这种方式访问​​内存 - 但为此我需要映射的指针- 或虚拟地址。 目前我通过使用 libc 中的本机 open() 和 mmap() 函数来克服这个问题(感谢相同的 ctypes),但我宁愿不这样做。 为什么 mmap 模块不会提供获取内存地址的简单方法? 希望我错过了一些明显的东西...... -- dd 回答1 mmap对象支持可写缓冲区接口,因此您可以使用ctypes类具有的from_buffer类方法以mmap对象作为参数来获取共享mmap文件内存的ctypes对象。 buf = mmap.mmap(fd, mmap.PAGESIZE, mmap.MAP_SHARED, mmap.PROT_WRITE) int_pointer = ctypes.c_int.from_buffer(buf) 回答2 这是我需要在 Linux 上使用 Python 2.7 运行的更完整的代码: import os, io from mmap import *

2021-09-29 02:27:45    分类:技术分享    python   cpython   hardware-interface