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 to comment
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 to comment
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 to comment
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...