Hi,
hab vor Jahren mal selbst ein Live-Assist unter VB geschrieben und wollte mal fragen, ob die gleiche Technik evtl. in mAirList integiert werden kann. Events werden durch Aenderungen in den Status der seriellen Schnittestelle generiert. Man unterschreidet drei Stueck:
CDHolding (Pin 1), DSRHolding (Pin 6), CTSHolding (Pin 8). Aktiv werden sie jeweils indem man Pin 4 (+5Vcc, mit geeignetem Widerstand) auf den jeweils erwaehnten Pin zieht. Das geht super mit GPOs und ist sehr einfach zu loeten. Pro serieller Schnittestelle erhaelt man damit 3 Aktivatoren.
Hier noch die Code-Bespiele aus VB6. Ich denke fuer Delphi & Co ist es recht aehnlich. MSComm ist die Seriell-Schnittstelle die von einer Komponente in VB bereit gestellt wird.
Init:
If Com1 Then
' Open Com1
MSComm1.CommPort = 1
'9600 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "9600,N,8,1"
' Tell the control to read entire buffer when Input is used.
MSComm1.InputLen = 0
' Open the port.
MSComm1.PortOpen = True
End If
Sobald ein Even auf der Schnittstelle festgestellt wird, wird diese Funktion aufgerufen. Es gibt im Beispiel 3 Player (M_Player) und je nach Status des Player wird dieser gestartet, gestoppt, oder in Pause gepackt … ich denke es sollte nicht zu schwer sein, es an die Anforderungen in mAirList anzupassen. Die gesamte Logik ist ja schon da. Und es muessen nur die richtigen Funktionen gerufen werden …
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvCD ' Change in the CD line. PORT 1
ComOpenCD = MSComm1.CDHolding
'ComOpen = Zustand von Pin 4 & 1
For i = 0 To 2
If Fader(i) = 1 And Port(i) = 0 And MMAudioPlayerX1(i).Tag <> "MyPreview" Then
If ComOpenCD Then
M_Player_abspielen_Click (i) 'abspielen
Else
If M_Player_resume(i).Checked Then
If MMAudioPlayerX1(i).State = 6 Then M_Player_pause_Click (i)
Else
M_Player_stoppen_Click (i)
End If
End If
End If
Next i
Case comEvDSR ' Change in the DSR line. PORT 2
ComOpenDSR = MSComm1.DSRHolding
'ComOpen = Zustand von Pin 4 & 6
For i = 0 To 2
If Fader(i) = 1 And Port(i) = 1 And MMAudioPlayerX1(i).Tag <> "MyPreview" Then
If ComOpenDSR Then
M_Player_abspielen_Click (i) 'abspielen
Else
If M_Player_resume(i).Checked Then
If MMAudioPlayerX1(i).State = 6 Then M_Player_pause_Click (i)
Else
M_Player_stoppen_Click (i)
End If
End If
End If
Next i
Case comEvCTS ' Change in the CTS line. PORT 3
ComOpenCTS = MSComm1.CTSHolding
'ComOpen = Zustand von Pin 4 & 8
For i = 0 To 2
If Fader(i) = 1 And Port(i) = 2 And MMAudioPlayerX1(i).Tag <> "MyPreview" Then
If ComOpenCTS Then
M_Player_abspielen_Click (i) 'abspielen
Else
If M_Player_resume(i).Checked Then
If MMAudioPlayerX1(i).State = 6 Then M_Player_pause_Click (i)
Else
M_Player_stoppen_Click (i)
End If
End If
End If
Next i
End Select
End Sub