Jump to content

iTunes COM Problem


Recommended Posts

Hi Zusammen,

 

hoffe Ihr könnt mir nochmals Behilflich sein. Mein Problem ist folgendes: Ich möchte mit dem RotaryPoti die Lautstärke von iTunes regeln. Mein Code ist in Python geschrieben und schaut momentan so aus:

 

# -*- coding: utf-8 -*-  

HOST = "localhost"
PORT = 4223

from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_rotary_poti import RotaryPoti
import win32com.client

iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Application")

def volume(position):
    iTunes.SoundVolume = (position+150)/3 # Bereich von 0 bis 100

if __name__ == "__main__":
    ipcon = IPConnection(HOST, PORT)

    poti = RotaryPoti("91N")
    ipcon.add_device(poti)
    
    poti.set_position_callback_period(10)
    poti.register_callback(poti.CALLBACK_POSITION, volume)

    raw_input()
    
    ipcon.destroy()

 

Leider geht das ganze nicht so wie ich möchte.

 

Die lange Liste der Fehler sieht so aus:

 

Exception in thread Thread-2:

Traceback (most recent call last):

  File "C:\Python27\lib\threading.py", line 530, in __bootstrap_inner

    self.run()

  File "C:\Python27\lib\threading.py", line 483, in run

    self.__target(*self.__args, **self.__kwargs)

  File "build/bdist.linux-x86_64/egg/tinkerforge/ip_connection.py", line 225, in callback_loop

    device.registered_callbacks[function_id](self.data_to_return(data[4:], form))

  File "C:\Users\Kevin\Desktop\Eclipse Projekte\iTunes Tinkertrol\iTunes.py", line 14, in volume

    iTunes.SoundVolume = (position+150)/3 # Bereich von 0 bis 100

  File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 474, in __setattr__

    self._oleobj_.Invoke(*(args + (value,) + defArgs))

com_error: (-2147221008, 'CoInitialize wurde nicht aufgerufen.', None, None)

 

Programmiert wird mit Python 2.7 in Eclipse mit dem PyDev Plugin

 

Link zu diesem Kommentar
Share on other sites

Du nutzt ja win32com. Steht da etwas in der Doku zum Thema initialisierung?

Es sieht so aus als wurde die COM-Bibliothek nicht initialisiert, das sollte dir vermutlich die Bibliothek win32com abnehmen, ich vermute dir wird ein methodenaufruf fehlen.

 

Ein kurzes google führt mich zu diesem Tipp:

iTunes.initialize()

(ich kenne die bibliothek win32com nciht)

Link zu diesem Kommentar
Share on other sites

Also ich habs zwar nicht mit itunes gemacht aber mit der windows systemlautstärke --> funktioniert recht einfach über commandline und nircmd http://www.nirsoft.net/utils/nircmd.html, damit kann man auch Bildschirmhelligkeit etc. relativ einfach regeln.

 

Bsp:

import os

position = poti.get_position()

os.system("nircmd setsysvolume "+str((435)*position))

 

 

 

 

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...