Fernsteuerung per Seriell-Status-Bits

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 … :slight_smile:

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

Hallo Pixar

Ich persönlich habe schlechte Erfahrungen gemacht direkt mit Events zuarbeiten. Konnte in einem Fall bei einem Harwaredefekt nicht einfach die Schnittstelle austauschen. Schöner lässt sich das ganze mit einem IOWarrior lösen. Dieses Kit ist genial und schnell zusammen gebaut.

http://www.codemercs.com/IOW40KIT_E.html

Kann Dir das Teil nur Empfehlen.
Michel

Keine Frage … der IOWarrior ist auch schon so gut wie bestellt … dachte aber es waere eine nette und zusaetzliche Loesung … die noch weniger Loetarbeit/Kosten hat. Ich nutze sie seit ueber 5 Jahren - unter anderem auch im Radioclient.