Ich stelle mich zu blöd an einen (verfügbaren) Vergleichstyp für den BC307 aus dem Datenblatt zu finden. Kann mich da jemand auf die richtige Spur stupsen? Da ich kein Elektroniker bin bin ich auch nicht sicher was der Transistor leisten können muss. Wichtig ist wahrscheinlich das er den Strom den die Drehinkrementregler brauchen schalten können muss. Aber wieviel ist das? Der BC307 kann nur 100mA schalten?
Danke,
Carsten
Spinkit.dll und Python WAR:iowkit.dll und Python?
Moderator: Guido Körber
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
ich hab den bc 557 verbaut, mit dem erfolg, dass die hintergrundbeleuchtung von meinem Display geflackert hat. warum weiß ich leider nicht genau. hab das ganze jetzt umgangen, indem ich für die beleuchtung 5v vom PC Netzteil abgreife und mein USB damit in Ruhe lasse. Der fehler trat sowohl beim 500mA als auch beim 100mA Mode auf.
Der fehler muß nicht zwingend am Transistor liegen, ist aber durchaus möglich. evtl aber auch and er Ansteuerung von stilCD
Edit:
habt ihr schon mal StilCD ausprobiert? traten ähnliche probleme auf?
Gruß Martin
Der fehler muß nicht zwingend am Transistor liegen, ist aber durchaus möglich. evtl aber auch and er Ansteuerung von stilCD
Edit:
habt ihr schon mal StilCD ausprobiert? traten ähnliche probleme auf?
Gruß Martin
Erste Erfolge!
Hallo,
dank http://starship.python.net/crew/theller/ctypes/ und der Hilfe des Maintainers von ctypes konnte ich heute die spinkit.dll von Python aus benutzen.
Testprogramm:
Noch nicht ganz komplett und dazu hätte ich auch eine Frage:
BOOL SPINKIT_API SpinKitRead(SPINKIT_HANDLE devHandle, PSPINKIT_DATA SpinData)
und
BOOL SPINKIT_API SpinKitReadImmediate(SPINKIT_HANDLE devHandle, PSPINKIT_DATA SpinData)
Haben ja die gleichen Aufrufparameter, in dem Delphi Beispiel hat SpinKitRead aber noch einen Pipe Parameter? Ansonsten ist es doch so das ersteres erst zurückkommt wenn es wirklich einen Spin oder Button gab zweiteres sofort/nach timeout.
BOOL SPINKIT_API SpinKitSetTimeout(SPINKIT_HANDLE devHandle, ULONG timeout);
timeout ist in msec? (looks so)
Ich kenne ja den IOW nicht, daher nur mal so wofür sind die CMSend* Funktionen?
Gruß,
Carsten
dank http://starship.python.net/crew/theller/ctypes/ und der Hilfe des Maintainers von ctypes konnte ich heute die spinkit.dll von Python aus benutzen.
Code: Select all
# ---------------------------------------------------------------------------------------
# cmspinkit.py
# SpinWarrior Python Bindings v0.1
# 2. Februar 2006
# Carsten Wartmann (cw(at)imago-viva(Punkt)de)
# Requirements: ctypes, http://starship.python.net/crew/theller/ctypes/
# tested only on Win/Python2.3 so far
# ---------------------------------------------------------------------------------------
from ctypes import *
from ctypes.wintypes import BOOL
class SpinkitPyData:
def __init__(self):
self.Handle = -1
self.Spins = [0,0,0,0,0,0]
self.Buttons = [False,False,False,False,False,False,False]
SPINKIT_HANDLE = c_void_p
class SPINKIT_DATA(Structure):
_fields_ = [("Device", SPINKIT_HANDLE),
("Spins", c_int * 6),
("Buttons", BOOL * 7)]
SPINKIT_DATA_SIZE = sizeof(SPINKIT_DATA)
class SpinKit(object):
def __init__(self):
self.Handle = -1
def SpinKitOpenDevice(self):
"Open Spinkit Device"
self.Handle = windll.spinkit.SpinKitOpenDevice()
def SpinKitCloseDevice(self):
"Close Spinkit Device"
windll.spinkit.SpinKitCloseDevice(self.Handle)
def SpinKitGetNumDevs(self):
"Get Number of Devices"
return(windll.spinkit.SpinKitGetNumDevs())
def SpinKitGetDeviceHandle(self,devicenum):
"Get Devices Handle (Untested!)"
return(windll.spinkit.SpinKitGetDeviceHandle(devicenum))
def SpinKitGetSerialNumber(self):
"Get SerialNumber"
ser=create_unicode_buffer("xxxxxxxx")
windll.spinkit.SpinKitGetSerialNumber(self.Handle,ser)
return(ser.value)
def SpinKitVersion(self):
"Get Spinkit Version"
return(c_char_p(windll.spinkit.SpinKitVersion()).value)
def SpinKitReadImmediate(self,data):
"Read Immediate"
datac=SPINKIT_DATA()
if windll.spinkit.SpinKitReadImmediate(self.Handle,pointer(datac)):
data.Device=self.Handle
i=0
for spin in datac.Spins:
data.Spins[i]=spin
i=i+1
i=0
for button in datac.Buttons:
data.Buttons[i]=button
i=i+1
return(True)
else:
return(False)
Code: Select all
import cmspinkit
sk=cmspinkit.SpinKit()
sk.SpinKitOpenDevice()
print "Spin or press a button, CTRL-C to break"
print
print "Num Devs: ",sk.SpinKitGetNumDevs()
print "Version : ",sk.SpinKitVersion()
print "Chip Serial",sk.SpinKitGetSerialNumber()
print
data = cmspinkit.SpinkitPyData()
while 1:
if sk.SpinKitReadImmediate(data):
print "Spins: ",data.Spins, "Buttons:",data.Buttons
sk.SpinKitCloseDevice()
BOOL SPINKIT_API SpinKitRead(SPINKIT_HANDLE devHandle, PSPINKIT_DATA SpinData)
und
BOOL SPINKIT_API SpinKitReadImmediate(SPINKIT_HANDLE devHandle, PSPINKIT_DATA SpinData)
Haben ja die gleichen Aufrufparameter, in dem Delphi Beispiel hat SpinKitRead aber noch einen Pipe Parameter? Ansonsten ist es doch so das ersteres erst zurückkommt wenn es wirklich einen Spin oder Button gab zweiteres sofort/nach timeout.
BOOL SPINKIT_API SpinKitSetTimeout(SPINKIT_HANDLE devHandle, ULONG timeout);
timeout ist in msec? (looks so)
Ich kenne ja den IOW nicht, daher nur mal so wofür sind die CMSend* Funktionen?
Gruß,
Carsten
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Das ist ein Fehler der Delphianbindung. Es gibt keine zweite Pipe am SpinWarrior.
Die CM-Funktionen sind nicht Teil des SpinKit APIs. Sie sind nur vorlaeufig in dieser Vorversion enthalten.
Wir haben uns gerade dazu entschlossen dieses API nochmals zu ueberarbeiten.
Die Funktion SpinKitReadImmediate wird in SpinKitReadNonBlocking umbenannt.
Dies ist eine Angleichung an das naechste IowKit API und auch wesentlich intuitiver zu verstehen.
Die Delphi-Anbindung wird natuerlich auch korrigiert.
SpinKitRead liest blockierend (bis Timeout so gesetzt) waehrend SpinKitReadNonBlocking sofort zurueckkehrt, wenn keine Daten vorhanden sind.
Ich hoffe den neuen Download bis morgen anbieten zu koennen.
Die CM-Funktionen sind nicht Teil des SpinKit APIs. Sie sind nur vorlaeufig in dieser Vorversion enthalten.
Wir haben uns gerade dazu entschlossen dieses API nochmals zu ueberarbeiten.
Die Funktion SpinKitReadImmediate wird in SpinKitReadNonBlocking umbenannt.
Dies ist eine Angleichung an das naechste IowKit API und auch wesentlich intuitiver zu verstehen.
Die Delphi-Anbindung wird natuerlich auch korrigiert.
SpinKitRead liest blockierend (bis Timeout so gesetzt) waehrend SpinKitReadNonBlocking sofort zurueckkehrt, wenn keine Daten vorhanden sind.
Ich hoffe den neuen Download bis morgen anbieten zu koennen.
Hallo,
ich wollte nur mal vermelden, das ich die Python Anbindung auch auf Linux zum laufen gebaracht habe (also auch den Spinwarior in einer vmware-Maschine mit Debian Linux!).
Es waren ein paar kleine Änderungen nötig, da die Doku von ctypes doch recht Windows zentriert ist. Wie man dann das Skript wirklich PLatformunabhängig schreibt da muss ich noch etwas forschen, das hat aber eher niedrige Priorität.
Solange die Überarbeitung nur Namen ändert habe ich nix dagegen ;-)
Gruß,
Carsten
ich wollte nur mal vermelden, das ich die Python Anbindung auch auf Linux zum laufen gebaracht habe (also auch den Spinwarior in einer vmware-Maschine mit Debian Linux!).
Es waren ein paar kleine Änderungen nötig, da die Doku von ctypes doch recht Windows zentriert ist. Wie man dann das Skript wirklich PLatformunabhängig schreibt da muss ich noch etwas forschen, das hat aber eher niedrige Priorität.
Solange die Überarbeitung nur Namen ändert habe ich nix dagegen ;-)
Gruß,
Carsten