I try to connect my heart rate monitor with this code (in starter module):
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
I got the following logs:
Service_Create
StateChanged: 12
Manager.Scan
Next steps are always missing: device found, connect and receive data
The heart rate monitor works with other apps, so I have a mistake.
			
			
			
				B4X:
			
		
		
		#Region  Service Attributes
    #StartAtBoot: False
    #ExcludeFromLibrary: True
#End Region
Sub Process_Globals
    Dim Manager As BleManager2
    Dim bc As ByteConverter
    Dim HEART_RATE_SERVICE As String = "180d"
    Dim HEART_RATE_MEASUREMENT As String = "2a37"
    Dim firstRead As Boolean
End Sub
Sub Service_Create
    HEART_RATE_SERVICE = UUID(HEART_RATE_SERVICE)
    HEART_RATE_MEASUREMENT = UUID(HEART_RATE_MEASUREMENT)
    Manager.Initialize("manager")
    Log("Service_Create")
End Sub
Sub Manager_StateChanged (State As Int)
    Log($"StateChanged: ${State}"$)
    If State = Manager.STATE_POWERED_ON Then
        Log("Manager.Scan")
        Manager.Scan(Array(HEART_RATE_SERVICE))
    End If
End Sub
Sub Manager_DeviceFound (Name As String, DeviceId As String, AdvertisingData As Map, RSSI As Double)
    Log("Manager_DeviceFound")
    Manager.StopScan
    Log($"DeviceFound: ${Name}"$)
    Manager.Connect(DeviceId)
End Sub
Sub Manager_Connected (Services As List)
    Log("Connected")
    firstRead = True
    Manager.ReadData(HEART_RATE_SERVICE)
End Sub
Sub Manager_DataAvailable (ServiceId As String, Characteristics As Map)
    If firstRead Then
        firstRead = False
        Manager.SetNotify(HEART_RATE_SERVICE, HEART_RATE_MEASUREMENT, True)
        Return
    End If
   
    Dim b() As Byte = Characteristics.Get(HEART_RATE_MEASUREMENT)
    Dim hrLength As Int = 1 + Bit.UnsignedShiftRight(b(0), 7)
    Dim rate As Int
    If hrLength = 1 Then
        rate = Bit.And(0xff, b(1))
    Else
        Dim r() As Byte = Array As Byte(b(1), b(2))
        rate = bc.IntsFromBytes(r)(0)
    End If
    Log($"Rate: ${rate}"$)
End Sub
Sub UUID(id As String) As String
    Return "0000" & id.ToLowerCase & "-0000-1000-8000-00805f9b34fb"
End Sub
	I got the following logs:
Service_Create
StateChanged: 12
Manager.Scan
Next steps are always missing: device found, connect and receive data
The heart rate monitor works with other apps, so I have a mistake.
			
				Last edited: