Aufruffunktion aus macOS-Framework (z. B. IntelPowerGadget)Python

Python-Programme
Guest
 Aufruffunktion aus macOS-Framework (z. B. IntelPowerGadget)

Post by Guest »

Ich sage es gleich: Dies ist mein zweiter Tag, an dem ich mit Python arbeite. Die Frage ist also wahrscheinlich einfach. Aber seit 2 Tagen habe ich keine Antwort darauf gefunden.
Ich möchte Funktionen aus dem MacOS-Framework (IntelPowerGadget) nutzen.
Im Moment habe ich Folgendes geschrieben

Code: Select all

if sys.platform == 'darwin':
bundle = objc.loadBundle(
"IntelPowerGadget",
bundle_path="/Library/Frameworks/IntelPowerGadget.framework",
module_globals=globals(),
)
functions = [('PG_Initialize', objc._C_VOID),]
#('PG_ReadSample',...),
#('PGSample_GetPackageTemperature',...)]
objc.loadBundleFunctions(bundle, globals(), functions)
PG_Initialize()
Ich kann nicht herausfinden, wie ich PG_ReadSample (bool PG_ReadSample(int iPackage, PGSampleID* sampleID)) und PGSample_GetPackageTemperature(bool PGSample_GetPackageTemperature(PGSampleID sampleID, double* temp)) richtig beschreiben und aufrufen soll. .
Ich kann auch nicht genügend Dokumentation finden (ich würde mich über Links freuen – wenn ich in der nachschaue falscher Ort).
upd mit @ali-saberi Antwort:

Code: Select all

import objc
import ctypes
import sys

if sys.platform == 'darwin':
# Load the Intel Power Gadget framework
bundle = objc.loadBundle(
"IntelPowerGadget",
bundle_path="/Library/Frameworks/IntelPowerGadget.framework",
module_globals=globals(),
)

# Define PGSampleID as ctypes type (assuming it's an integer or a pointer type)
PGSampleID = ctypes.c_void_p  # Assuming PGSampleID is a pointer. Adjust if it's another type.

# Define the functions
functions = [
('PG_Initialize', objc._C_BOOL),
('PG_ReadSample',  objc._C_BOOL + objc._C_INT + objc._C_PTR + objc._C_ULNG_LNG),
('PGSample_GetPackageTemperature', objc._C_BOOL + objc._C_ULNG_LNG + objc._C_PTR + objc._C_DBL),
]

# Load the functions
objc.loadBundleFunctions(bundle, globals(), functions)

# Initialize the library
if not PG_Initialize():
print("Failed to initialize Intel Power Gadget")
sys.exit(1)

# Use PG_ReadSample
sample_id = PGSampleID()  # Placeholder for PGSampleID pointer
iPackage = 0  # Assume we're reading from package 0

if PG_ReadSample(iPackage, ctypes.byref(sample_id)):
print("Sample read successfully")

# Use PGSample_GetPackageTemperature
temperature = ctypes.c_double()
if PGSample_GetPackageTemperature(sample_id, ctypes.byref(temperature)):
print(f"Package Temperature: {temperature.value}°C")
else:
print("Failed to get package temperature")
else:
print("Failed to read sample")
Es gibt einen Fehler bei „if PG_ReadSample(iPackage, ctypes.byref(sample_id)):“:

“ValueError: depythonifying 'pointer', got 'CArgObject '"

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post