We are looking to access and use Bluetooth profiles in our WPF application using C# in Visual Studio 2017.
Issue details:
Platform: Windows 10 Pro - version 1803.
Issue brief: We are trying to access Bluetooth profiles via desktop(c#) of connected phones, however on windows 10 the profile show enable but the profiles are not working eg: HFP connects, however, the voice is not heard
We have tested this on following Bluetooth devices:
1.Bluetooth CSR 4.0 Dongle (CSR8510 A10) (Note: this Bluetooth connects and show HFP and works as expected, however, the Bluetooth does not show on the device list and hence we cannot connect programmatically using c#)
2.IOGEAR's Bluetooth 4.0 (Model GBU521W6) (Shows on device list and our application can detect a device, however, HFP is not working as expected both from the application or from normal device section)
Required Profiles:
1.Hands-Free Profile (HFP)
2.Message Access Profile (MAP)
3.Phone Book Access Profile (PBAP)
We have Already Tried with following:
Updating drivers
Tried uninstall install many times
Used android, ios, and windows phone's
Side note: Our application with same code works on windows 7
MAP abd PBAP is not a problem because both are OBEX based (which is RFCOMM).
However there can be some problems with HandsFree. It works great with BlueSoile drivers. But with standard microsoft may not work.
The first step it to use BluetoothSetServiceState with HFP UUID to tell windows to install drivers for your device's HFP profile. If function succeed you should see 2 audio devices appeared in your system: one is Inout and other is Output. You can find them using any media API (DirectSound, legacy API).
To be able to work with PBAP and MAP you need anyhow connect to your device through RFCOMM. WinSock or any other way is good.
Please note that the method above works only with Microsoft Bluetooth drivers. Other drivers (BlueSoleil, Toshiba) have absolutely different API so you have to add it into your application if need to support them.
Or you can simple take a look on BluetoothFramework
Related
I'm developing a windows application with using scanner Zebra MC33.
There is SDK pack which is described here: https://www.zebra.com/us/en/support-downloads/software/developer-tools/scanner-sdk-for-android.html
But my model MC33 is not in a list of approved devices. And test desktop app (supply in pack with SDK) does not detect my device.
Can somebody recommed what to do and if Zebra inc. plan to release SDK for my device (MC33) as well?
UPDATE: during debug my app catch answer code
112 = "ERROR_DEVICE_UNAVAILABLE" = " Required device is unavailable"
I work for Zebra and would concur with the comments below your question. The SDK you are using is designed for our range of handheld rugged scanners but the MC33 is considered a Mobile Computer and uses a different SDK.
I don't quite understand what you are trying to achieve by I'm developing a windows application with using scanner Zebra MC33. That device runs Android so if you want to send scan data to an application running on Windows you will first need to capture those scans on the device and then send them (through IP or BT for example) to your Windows desktop app. There are a few ways to do this (https://techdocs.zebra.com/help/) is a good entry point - you could use DataWedge to send the data over IP or you could write an Android app to send the data over a BT socket. There is a Xamarin SDK for C# development on the device that is popular with Windows developers but I don't think you mean that.
apologies if the question is quite basic, I am inexperienced in USB programming and I might be missing some conceptual detail here.
For our industrial solution we are supposed to provide communication between our PC wpf application and windows embedded HH 8.1 application. Ideally we would like this to be over USB.
I see a lot of sample code to connect directly to USB devices from host role.
However in our case the Windows Embedded HH device (Panasonic FZ-E1) will have the device role listening. I could not find any way to register to raw data sent from our PC application via USB events. I examined UMDF (user mode driver framework) which has examples about writing drivers for usb devices, yet it seems like it is for device manufacturers and us not being the manufacturer for Panasonic HH we should not/cannot use our own driver and we have to use the WinUSB driver it already has in place.
Windows Embedded 8.1 HH has some USB apis unlike windows phone, yet all the functionality provided in the API seems like connecting to external USB devices with the host role. When we use USBlyzer I see that there is some USB traffic towards the device from the PC so it looks it should be possible for the HH to have the listening device role. What am I missing here, any ideas?
Any help/direction is greatly appreciated.
P.S: I also tried windows connectivity api examining the source code of windows phone power tools yet it seems like the the dlls for addon packages here to handle transfer via agents is not there for newer versions of windows phone anymore.
I'm trying to connect my Microsoft Band 2 to Windows 10 via bluetooth to start working through the sample projects given in the sdk, but I can't seem to get connected.
I've worked through all the solutions mentioned in the link below, but none seem to apply specifically to the Band 2. Any suggestions?
Microsoft Band SDK on Windows 8,1
Edit with Solution:
The problem was caused because I was running my Windows app through a virtual machine and Bluetooth was shared between the host and the VM. I fixed the problem by using a USB Bluetooth Adapter only available to the VM, restored my band to factory settings, paired it via USB to the Band app, then paired it to Bluetooth. Now works perfectly.
is your Band paired to your Windows machine? You have to pair it first. If it is, did you setup the app manifest for the BT device?
I'm writing universal app for win 8.1 using C#, which should have capability to show available WiFi networks and manage connecting to them.
I've found libraries for that: http://managedwifi.codeplex.com/ or http://blogs.msdn.com/b/winsdk/archive/2015/01/09/wlan-programming-how-to-tips-and-tricks-including-using-it-in-c.aspx .
Unfortunately they are not build for .NETCore and I haven't find a way to include it and compile them in my project.
I've tried also Windows.Networking.Connectivity.NetworkInformation.GetConnectionProfiles but I can get names but not the exact SSID displayed to the user.
I am writing a BT app on an android to connect to a lab device/hardware. At the present time I have a device on loan. However it is not possible for me to always have one while I am developing for it, (commuting, out of town, etc) Therefore I am creating an emulator for it and will run that emulator on my Windows desktop so that my Android client code can make connections to it.
The android code is built with .NET/xamarin and works fine connecting to the real device.
I am comfortable with C++ or C# on the desktop.
I have found this code http://www.codeproject.com/Articles/252882/Bluetooth-Server-Programming-on-Windows online to create and accept BT connections. it looks like a very good start for what I wish to do - which is build a state machine/emulator to mimic the real device. However I have been unable to connect my android device to it.
Note - the connection is a serial port connection. (the UUI coming from the android device is the "well known" serial port connection ("00001101-0000-1000-8000-00805F9B34FB")
I am not sure how to configure the windows 7 desktop and bluetooth services to allow this server/emulator program to accept connections.
I have paired the devices, but unable to connect.
How can I accept incoming Bluetooth serial connections in the C++ or C# code running on Win7 desktop?
If you want to do low level stuff like establish a connection via bluetooth through a C# app then you will need to access the bluetooth stack via its API. If your device is running the Microsofts Bluetooth Stack then you can look at 32feet.net's managed wrapper for Microsofts Bluetooth API. If you have the Widcomm stack then you will have to locate Widcomm's API for it.
To access the microsoft bluetooth stack, you can use the BthUtil.dll.
BthUtil.dll is an unmanaged dll which is part of the Microsoft Bluetooth stack. It's typically utilised for tasks such as turning the bluetooth radio on or off via a function called BthSetMode
(see MSDN for documentation - http://msdn2.microsoft.com/EN-US/library/aa456007.aspx)
You can check the following links:-
http://www.youtube.com/watch?v=Jn05CU3mxzo
Also, check the 32feet.Net
A Brief description of 32feet.Net
32feet.NET is a shared-source project to make personal area networking technologies such as Bluetooth, Infrared (IrDA) and more, easily accessible from .NET code.
Supports desktop, mobile or embedded systems.
32feet.NET is free for commercial or non-commercial use.
If you use the binaries you can just use the library as-is, if you make modifications to the source you need to include the 32feet.NET License.txt document and ensure the file headers are not modified/removed. The project currently consists of the following libraries:-
Bluetooth
IrDA
Object Exchange
Bluetooth support requires a device with either the Microsoft, Widcomm, BlueSoleil, or Stonestreet One Bluetopia Bluetooth stack. Requires .NET Compact Framework v3.5 or above and Windows CE.NET 4.2 or above, or .NET Framework v3.5 for desktop Windows XP, Vista, 7 and 8.
Link
http://32feet.codeplex.com/
Feature link for 32feet.Net
http://32feet.codeplex.com/wikipage?title=Feature%20support%20table&referringTitle=Documentation