Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determine if serial port is normal COM or SPP

I'm looking for a way to determine if a COM is a standard COM or if it's an SPP COM, also known as a cable replacement bluetooth adapter for a COM device.

I have a device which works both in USB (COM -> USB) and Bluetooth, and the Bluetooth interface works with SPP.

I am currently using System.IO.Ports.SerialPort.GetPortNames() to get the COMs.

Is there a way to determine whether or not it's a connected with Bluetooth or USB?

SOLUTION:

System.Management.ManagementObjectSearcher Searcher = new System.Management.ManagementObjectSearcher("Select * from WIN32_SerialPort");
foreach (System.Management.ManagementObject Port in Searcher.Get())
{
    foreach (System.Management.PropertyData Property in Port.Properties)
    {
        Console.WriteLine(Property.Name + " " + (Property.Value == null ? null : Property.Value.ToString()));
    }
}

And the output is something similar:

Availability 2
Binary True
Capabilities 
CapabilityDescriptions 
Caption Standard Serial over Bluetooth link (COM10)
ConfigManagerErrorCode 0
ConfigManagerUserConfig False
CreationClassName Win32_SerialPort
Description Standard Serial over Bluetooth link
DeviceID COM10
ErrorCleared 
ErrorDescription 
InstallDate 
LastErrorCode 
MaxBaudRate 9600
MaximumInputBufferSize 0
MaximumOutputBufferSize 0
MaxNumberControlled 
Name Standard Serial over Bluetooth link (COM10)
OSAutoDiscovered True
PNPDeviceID BTHENUM\{00001101-0000-1000-8000-00805F9B34FB}_LOCALMFG&0000\8&3062A492&0&000000000000_0000001C
PowerManagementCapabilities System.UInt16[]
PowerManagementSupported False
ProtocolSupported 
ProviderType RS232 Serial Port
SettableBaudRate True
SettableDataBits True
SettableFlowControl True
SettableParity True
SettableParityCheck False
SettableRLSD True
SettableStopBits True
Status OK
StatusInfo 3
Supports16BitMode False
SupportsDTRDSR True
SupportsElapsedTimeouts True
SupportsIntTimeouts True
SupportsParityCheck False
SupportsRLSD True
SupportsRTSCTS True
SupportsSpecialCharacters False
SupportsXOnXOff False
SupportsXOnXOffSet False
SystemCreationClassName Win32_ComputerSystem
SystemName JVALDRON-PC
TimeOfLastReset 
like image 402
jValdron Avatar asked Dec 19 '11 14:12

jValdron


People also ask

How do you check the COM port is working or not?

To test if the computer COM port is functioning correctly, you can do a simple loopback test. (In a loopback test, a signal is sent from a device and returned, or looped back, to the device.) For this test, connect a serial cable to the COM port that you want to test. Then short pin 2 and pin 3 of the cable together.

How can I tell what COM port a device is using?

You can check what device is using what COM port from the Device Manager. It will be listed under the hidden devices. From the Device Manager, select View - Show Hidden Devices. Now when you expand the (PORTS) COM ports section you will see all of the COM ports listed there.

What is serial port SPP?

Serial Port Profile (SPP) It's is one of the more fundamental Bluetooth profiles (Bluetooth's original purpose was to replace RS-232 cables after all). Using SPP, each connected device can send and receive data just as if there were RX and TX lines connected between them.

How do I find my serial communication port?

By looping the transmit and receive pins, you can test serial cable port communication by checking if the serial ports connections transmit and receive valid information. This is called a loopback test and can be used to test rs232 communication. Use a screwdriver to loop pins for testing.


1 Answers

You are unable to find this information out via the SerialPort class. You would need to do a WMI query.

Doing something along the lines of this may lead you to it

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * 
                                      from WIN32_SerialPort");

foreach(ManagementObject Port in searcher.Get()) {

       string a = (string) Port.GetPropertyValue("Name");

}

I haven't got this code loaded so I don't know what further properties you can obtain. However if there was anyway, WMI would be the way to do it.

like image 58
Adam Avatar answered Oct 19 '22 22:10

Adam