Menu
Musica de rigo tovar. 4.rar - Pastebin.com (32.61 MB) pepe carroll 52 amantes vol 2 (28.88 MB) Rigo Tovar Con Mariachi Vol 2 (26.19 MB) Rigo Tovar Con Banda Vol 2 (43.69 MB) Antonio Aguilar — Antonio Aguilar Con Tambora, 1998 Source title: Antonio aguilar con banda Download Mp3 & Mp4 Music Videos - HdYouTubeMp3.com (41.53 MB) 1995 15 Exitos con tambora Vol 4 Source title: 1995 15 Exitos con tambora Vol.
Active8 years, 10 months ago
I encountered an unexpected behavior while debugging a WinMo 6 program last night, and I wonder if I was dreaming. But first, some context.
The program communicates through a serial port with a GPS device. It uses either a physical port with cable, and also tries via Bluetooth. After a suspend or power-off, I don't need to close and reopen the port if it was using the physical link. However, if using Bluetooth, I need to reconnect : no bytes are transmitted with the old handle. Reopening takes about 6 or 7 seconds, so the app is not usable right away after a suspend on Bluetooth.
Aug 26, 2015 Incoming COM port works but Outgoing port fails to open the virtual COM port (tried with many applications and drivers [bluetooth and COMM). Due to problems in Windows 10 handling virtual serial ports with class SPP it's unfortunatelly not as straight forward as it has been with Windows 7 / 8. When the WL1271 Bluetooth LED is Off this means that the interface is off line. So by using the WL1271 Manager, accessible in demonstration images, either from the desktop or windows CE control panel.
However, I remember one debugging streak where my Bluetooth serial port would be still valid and functional after several power-off/power-on cycles, and it surprised me pleasantly. I cannot reproduce the behavior now. Was that a bug in the BT driver?
Any hints you have about configurations or API to try would be great, if you ever got that to work.
joelrjoelr
1 Answer
The Bluetooth protocol is designed such that there must be communication between the GPD device and your Windows device at least once every few seconds. If the communication is not present, then the link will time-out and must be established again from the ground up.
And secondly, there is the way in which you perform the power cycle. A properly implemented Bluetooth stack will explicitly close-down any open connections if it goes into a power-off state in a normal way.
In short, a Bluetooth connection is not meant to survive across a power cycle, so your program must be prepared to re-establish the connection to a remote Bluetooth device after a power cycle.
Bluetooth Serial Port Windows Centre
Bart van Ingen SchenauBart van Ingen Schenau13.3k22 gold badges2626 silver badges3737 bronze badges
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Not the answer you're looking for? Browse other questions tagged c#c++bluetoothserial-portwindows-mobile-6 or ask your own question.
By far the easiest and best way to use a serial port connection is to use BluetoothClient with service class BluetoothService.SerialPort, i.e. using code very much like shown in General Bluetooth Data Connections. That gets one a .NET Stream to read and write from. Both BluetoothClient and virtual serial ports use the RFCOMM protocol so the two are equivalent. This method is much easier to set-up that a virtual serial port, there is no global state to configure etc; and is also more robust, for instance if the peer device is taken out of range or turned-off one learns this directly soon after, whereas with a serial port one has to use timeouts and retries to detect it.
However there are cases where a virtual serial port is required, for instance where another program needs to access the connection — a common case is where your program is configuring a connection that will be used by a printer driver utility.
Note that RFCOMM/SPP only allows one connection from a remote device to each service. So do not use BluetoothClient and a virtual Serial port to connect to the same service at the same time; the second one will fail to connect.
Win32 + Microsoft Bluetooth stack
On Win32, to create a Bluetooth virtual serial port one can use BluetoothDeviceInfo.SetServiceState, passing in service class SerialPort. Unfortunately the name of the COM port created is not returned — that’s because the native API does not tell! One way to find the name of the port created is to call the System.IO.Ports.SerialPort.GetPortNames method before and after the SetServiceState call and see which name is new.
Windows Mobile/CE + Microsoft Bluetooth stack
On Windows Mobile, two methods to create a port exist in the library, the first is class BluetoothSerialPort, this creates a connection immediately but the underlying API it uses is rather unreliable, and it seems not to work at all on various device types. The second is BluetoothDeviceInfo.SetServiceState as for Win32, this manually configures the necessary Registry settings and is reliable but might require a reboot before the port becomes available, and again the name of the new port is not returned.
Widcomm/Broadcom
On Widcomm, we recently added support for their CSppClient class. Currently this is exposed by method WidcommSerialPort.Create -- I'll integrate it with BluetoothSerialPort sometime. I haven't used the serial ports on the other platforms very much, but on testing the support on Widcomm I found some specific behaviour when the connection is broken -- by the two devices going out of range or similar. When that happens the connection is broken (e.g. a BluetoothListener connection at the other end see End-Of-Stream) and we see a DISCONNECT event raised by the CSppClient class. The port does not seems to reconnect. If one closes and reopens the SerialPort (e.g. COM8) from the client program then the Widcomm 'choose device dialog' is shown to the user when we might have hoped that the connection was made back to the previous service.:We will probably need to have some way to reconnect this. If we reconnect automatically internally inside WidcommSerialPort can we be sure that we'll get the same COM port number assigned. Or should we provide an event which is raised when the connection is lost and let the consumer program redo the connection manually. Or somewhere in between?
However this code does not work when I tested it on the Win32 installation -- maybe because my installation version is too old or something. Let me know if you get it to work for you. There is also a different API in Widcomm Win32 with method CBtIf::CreateCOMPortAssociation etc, I'd be happy to accept patches for that -- probably in WidcommBluetoothDeviceInfo.SetServiceState.