Advertisement
Guest User

Untitled

a guest
Jul 15th, 2014
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. #!/usr/bin/env /usr/local/bin/python
  2.  
  3. """Copyright 2010 Phidgets Inc.
  4. This work is licensed under the Creative Commons Attribution 2.5 Canada License.
  5. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.5/ca/
  6. """
  7.  
  8. __author__ = 'Adam Stelmack'
  9. __version__ = '2.1.8'
  10. __date__ = 'May 17 2010'
  11.  
  12. #Basic imports
  13. from ctypes import *
  14. import sys
  15. import random
  16. import pygame.mixer as mix;
  17. from threading import Timer
  18. #Phidget specific imports
  19. from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException
  20. from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, InputChangeEventArgs, OutputChangeEventArgs, SensorChangeEventArgs
  21. from Phidgets.Devices.InterfaceKit import InterfaceKit
  22. #setup sounds
  23. wraptriggers = True
  24. snds = []
  25. channels = []
  26. locks = []
  27. mix.init()
  28. threshold = 30
  29. interfaces = [326860,324254,326331]
  30. sndfiles = ["crack.wav","bell.wav","creak.wav","horn.wav","pong.wav","slide.wav","glass.wav","crash.wav","slap.wav","ratchet.wav","pluck.wav","thud.wav",]
  31. sndmap = [0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11]
  32. kits = [len(interfaces)];
  33. numsounds = 12
  34. mix.set_num_channels(numsounds)
  35.  
  36. for i in range(numsounds):
  37. snds.append( mix.Sound("snd/"+sndfiles[i]) )
  38. print("sound: %i"%i)
  39. channels.append(mix.Channel(i));
  40.  
  41.  
  42. def interfaceKitAttached(e):
  43. print(e.device)
  44. attached = e.device
  45. print("InterfaceKit %i Attached!" % (attached.getSerialNum()))
  46.  
  47. def interfaceKitDetached(e):
  48. detached = e.device
  49. print("InterfaceKit %i Detached!" % (detached.getSerialNum()))
  50.  
  51. def interfaceKitError(e):
  52. try:
  53. source = e.device
  54. print("InterfaceKit %i: Phidget Error %i: %s" % (source.getSerialNum(), e.eCode, e.description))
  55. except PhidgetException as e:
  56. print("Phidget Exception %i: %s" % (e.code, e.details))
  57.  
  58. def interfaceKitSensorChanged(e):
  59. source = e.device
  60. serial = source.getSerialNum()
  61. devid = interfaces.index(serial)
  62. index = e.index
  63. sndid = sndmap[index]+(devid*4)
  64. print("SensorChanged: sensor %i on device %i sound %s"%(index, devid, sndid))
  65. if not channels[sndid].get_busy() and e.value > threshold:
  66. print("Trigger %i on interface %i, playing sound %i" %(index, devid, sndid) )
  67. channels[sndid].play(snds[sndid]);
  68.  
  69.  
  70. def interfaceKitInputChanged(e):
  71. print ("INPUT CHANGED")
  72.  
  73. def interfaceKitOutputChanged(e):
  74. source = e.device
  75. print("InterfaceKit %i: Output %i: %s" % (source.getSerialNum(), e.index, e.state))
  76.  
  77. #Main Program Code
  78.  
  79.  
  80. print("Opening phidget object....")
  81.  
  82.  
  83. j = 0;
  84. for p in interfaces:
  85. try:
  86. print("Opening %i"%(p))
  87. kits[j] = InterfaceKit()
  88. kits[j].setOnAttachHandler(interfaceKitAttached)
  89. # interfaceKit.setOnDetachHandler(interfaceKitDetached)
  90. kits[j].setOnErrorhandler(interfaceKitError)
  91. kits[j].setOnInputChangeHandler(interfaceKitInputChanged)
  92. # interfaceKit.setOnOutputChangeHandler(interfaceKitOutputChanged)
  93. kits[j].setOnSensorChangeHandler(interfaceKitSensorChanged)
  94.  
  95.  
  96. kits[j].openPhidget(p)
  97. kits[j].waitForAttach(10000)
  98.  
  99. except PhidgetException as e:
  100. print("Phidget Exception %i: %s" % (e.code, e.details))
  101. print("Exiting....")
  102. exit(1)
  103.  
  104.  
  105.  
  106. chr = sys.stdin.read(1)
  107.  
  108. print("Closing...")
  109.  
  110. try:
  111. interfaceKit.closePhidget()
  112. except PhidgetException as e:
  113. print("Phidget Exception %i: %s" % (e.code, e.details))
  114. print("Exiting....")
  115. exit(1)
  116.  
  117. print("Done.")
  118. exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement