Aktuelle Zeit: 19.09.2020 17:31

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bluetooth-Kommunikation
BeitragVerfasst: 03.08.2020 17:11 
Offline

Registriert: 16.03.2006 11:20
Ich habe mir ein Entfernungsmessgerät (Bosch PLR50C) gekauft, weil ich in den nächsten Wochen hunderte Distanzen abmessen und in Excel verwalten darf. Das nette Spielzeug hat eine Bluetooth-Schnittstelle und es gibt eine Android App, die weniger nett gemacht ist (Bluetooth-Kopplung funktioniert einmal, ab dem zweiten App-Start geht nichts mehr - macht aber nichts, denn das Programm ist ohnehin nicht sehr hilfreich)...
...für Windows gibt es tatsächlich einen Bluetooth-Treiber, mit dem sich das Messgerät auch verbindet. Damit hat es sich aber, Bosch hat "vergessen", ein kleines Programm zu schreiben, welches empfangene Messwerte anzeigt oder in den Tastaturpuffer kopiert oder was auch immer.

Seht ihr irgendwelche Chancen, den Bluetooth-Treiber anzuzapfen, um an Messwerte 'ranzukommen?

Sobald man irgendwelche Daten einlesen könnte, sollte es nicht mehr so schwierig sein (Datenformat)...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bluetooth-Kommunikation
BeitragVerfasst: 03.08.2020 18:49 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Wenn es einen Treiber gibt, erkennt Windows das Gerät zumindest mal.
Kannst Du es hiermit evtl. finden (bzw. da ist noch ne neuere Version etwas weiter hinten)?
Wenn dann noch "AddSerialPortToDevice" funktionieren würde, wäre der Rest ja ein Kinderspiel (denke ich mal).

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bluetooth-Kommunikation
BeitragVerfasst: 04.08.2020 09:08 
Offline

Registriert: 16.03.2006 11:20
Kinderspiel :?
Also dein Scanner schaut verdammt gut aus, nach ein bis zwei Rescans wird der Client "Bosch PLR50C x4504" gefunden, und ein "Serial port connected" schaffe ich auch :)

Jetzt finde ich im Device-Manager plötzlich zwei COM-Ports für Bluetooth (COM6 und COM7), das erhöht schon einmal den Schwierigkeitsgrad...

...beide einmal auf gut Glück ausprobiert - man kann sich mit beiden verbinden und bei einer bekomme ich auch schon (irgendwelche) Daten, das könnte noch etwas werden :)

Wär spannend, ob erkennbar ist, welche COM-Schnittstelle mit welchem Treiber verbunden ist...


Code:

DataSection
   magic:
   Data.a $c0,$55,$02,$01,$00,$1a
EndDataSection

Port$ = "COM7"

#serial=0
If OpenSerialPort(#serial, Port$, 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)

   Debug "SerialPort opened with success"
   
   #timeout=100
   Ok = #False
   
   WriteSerialPortData(#serial,?magic,6)
   
   Timeout = #TimeOut
   Repeat

      If AvailableSerialPortInput(#Serial)
         If ReadSerialPortData(#Serial,@Byte,1)=1
            Debug Hex(byte)
         EndIf
         Delay(1)
      EndIf

   Until 0;Timeout = 0 Or Ok

Debug "closed"

   CloseSerialPort(#Serial)

Else
   Debug "Can't open the serial port: "+Port$
EndIf



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bluetooth-Kommunikation
BeitragVerfasst: 04.08.2020 10:10 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Ist es nicht so, dass Du einen COM-Port bekommst, sobald Du Dich verbindest und sobald Du AddSerialPortToDevice ausführst, ein zweiter kommt?
Wenn Du dann weisst, welcher von beiden für Dich nutzbar ist, sollte der Rest nicht so schwer sein.
In einer Windowsanwendung z.B. kannst Du ein Signal in der Eventschleife abfangen und bekommst den COM-Port frei Haus, ich habe das mal für ein Tool gemacht, weil ich wollte, dass das automatisch anfängt zu kommunizieren, sobald ein (USB-)COM-Port eingesteckt wird.
Falls Dich das interessiert, müsste ich mal auf die Suche gehen.

[Edit]
Per SetWindowCallBack() einsetzen:
Code:
Procedure CallBack_NewDevice(WindowID, Message, wParam, lParam)              ;add/delete live connecting USB devices (windows only)
   Protected Result, a$, F
   Protected *db.DEV_BROADCAST_HDR
   
   Result = #PB_ProcessPureBasicEvents
   Select Message
         
      Case #WM_DEVICECHANGE
         If wParam = #DBT_DEVICEARRIVAL
            *db = lParam
            If *db\dbch_devicetype = #DBT_DEVTYP_PORT
               a$     = PeekS(*db + 12)
               Debug "New COM Port: " + a$
            EndIf
         ElseIf wParam = #DBT_DEVICEREMOVECOMPLETE
            *db = lParam
            If *db\dbch_devicetype = #DBT_DEVTYP_PORT
               a$ = PeekS(*db + 12)
               Debug "COM Port unplugged: " + a$
            EndIf
         EndIf
         
   EndSelect
   
   ProcedureReturn Result
EndProcedure

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bluetooth-Kommunikation
BeitragVerfasst: 04.08.2020 11:01 
Offline

Registriert: 16.03.2006 11:20
Danke, ich komme vielleicht noch darauf zurück...
...momentan kämpfe ich mit den Prüfsummen, dann hole ich mir hoffentlich richtige Messwerte - wenn das funkt', nehme ich mir die COMs wieder vor :allright:

Code:
; Define

   EnableExplicit

   Enumeration
      #Serial
   EndEnumeration

   DataSection
      Magic:;                  Initial command
      Data.a $c0,$55,$02,$01,$00,$1a;      Set device as master      ($1a=CRC)

      ;                     Commands after device has been set as bluetooth master (last byte is CRC)
      GetMeasurementCount:
      Data.a $c0,$51,$02,$FF,$FF,$9c;      Get how many measurements are in device memory
      GetMeasurementMemory:
      Data.a $c0,$51,$02,$01,$01,$18;      Get measurement #1
      Data.a $c0,$51,$02,$01,$0a,$80;      Get measurement #10

      InputBuffer:
      Data.a 0,0,0
      Type:
      Data.a 0
      Count:
      Data.w 0
      One:
      Data.a 0
      Distance:
      Data.l 0
      Null:
      Data.l 0,0
      CRC:
      Data.a 0
   EndDataSection

   Global SerialPort.s="COM7"


   #CrcPolynomial=      166
   #CrcSeed=         170

; EndDefine

Procedure.i ByteCRC(byte,crc)

   ; http://www.ti.com/lit/an/slua363/slua363.pdf

   Protected bit_mask
   Protected carry_check
   Protected temp_data

   temp_data=byte;

   For bit_mask=0 To 7
      byte!crc
      crc<<1
      temp_data<<1
      carry_check=byte&$80
      If carry_check
         crc!#CrcPolynomial
      EndIf
      byte = temp_data
   Next bit_mask

   ProcedureReturn crc

EndProcedure
Procedure.i DataCRC(*memory,size)

   Protected seed=#CrcSeed

   While size
      seed=ByteCRC(PeekA(*memory),seed)
      size-1
      *memory+1
   Wend

   ProcedureReturn seed

EndProcedure

Debug bytecrc(0,1)
Debug DataCRC(?magic,5)
End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bluetooth-Kommunikation
BeitragVerfasst: 04.08.2020 17:45 
Offline

Registriert: 15.10.2004 17:42
Schau mal im Gerätemanager.
Normalerweise ist ein Port für RX und einer für TX,
also Empfangen und Senden.
Muß man evtl. ausprobieren, welcher wofür.

_________________
PB 5.60


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bluetooth-Kommunikation
BeitragVerfasst: 04.08.2020 17:47 
Offline

Registriert: 16.03.2006 11:20
Hey, schaut inzwischen alles schon ganz gut aus...

...ich bekomme inzwischen Werte von meinem Messgerät, die COM-Schnittstellen kann ich auch relativ schnell im Hintergrund abklopfen (im Gerätemanager sieht man praktisch keine Unterschiede, bei den "Treiberfähigkeiten" hat die funktionierende Schnittstelle das Flag CM_DEVCAP_REMOVABLE gesetzt, das kann aber auch Zufall sein), jetzt (also eher am Wochenende) muss ich nur noch alle Programmteile zusammenfügen...

Danke für deine Unterstützung - eigentlich war's wirklich ein Kinderspiel (komisch, dass der Hersteller so etwas nicht mitliefert...)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bluetooth-Kommunikation
BeitragVerfasst: 17.08.2020 23:40 
Offline
Moderator
Benutzeravatar

Registriert: 11.09.2004 13:09
Schade habe es zu spät gesehen sonst hätte ich auch geholfen..
Ich hatte vor vielen Jahren mal für den Motorola RS507 und später auch den RS6000 die entsprechende Widnows Software für damal noch Motorola entwickelt.
Im Endeffekt auch wie bei dir über COM gemacht. Funktioniert super und BT läst sich auch recht einfach unter Windows kontrolieren.

Ich wünsch Dir viel Spaß und erfolg mit deinem Scanner :-)

_________________
SkyBeat Piloten und ATC Informationssystem


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye