aehm....
Mach es doch so:
Nimms ne boolean die speichert ob im vorherigen durchlauf irgendein movement ausgefuehrt wurde (also die boolean auf true, wenn irgendwas ausser s gesendet wurde).
Wenn der JS in der Mitte ist, wird ueberpreuft ob die boollean true is, dann wird "s" gesendet und dann die boolean auf false gesetzt. Schau mal ob das was bringt.

Eigentlich mag ich VB nicht aber di Grundlagen scheinen ja einfach zusein:
Code:
Private Sub JoyLoop() 
Dim preMedMsg As String 
Dim JS As New clsJoy 
Dim tStr As String 
Dim doS As Boolean = false
Do While active = True 

 Text15.Text = JS.JoyPOV 
 Text16.Text = active 
 Select Case JS.JoyPOV 
 Case 65535 
   If doS then
    MSComm1.Output = "s" 
    doS = false
   End If
 Case 0 
   MSComm1.Output = "f" 
   doS = true 
 Case 18000 
   MSComm1.Output = "b" 
   doS = true 
 Case 27000 
   MSComm1.Output = "l" 
   doS = true 
 Case 9000 
   MSComm1.Output = "r" 
   doS = true 
 End Select 
 If JS.JoyButState = 4 Then 
   MSComm1.Output = "4" 
   Sleep 500 
 End If 
DoEvents 
Loop 
End Sub

MfG
Surma