Solved

How can I find serial port(SUNIX PCI Serial I/O Card)

Posted on 2010-11-24
7
840 Views
Last Modified: 2013-11-05
I'm using WMI to list serial port (com1~ ...)

Dev Environment: Vista + Delphi2009
Run Environment: Win7 (with pci card)

Here is wmi query:
SELECT DeviceID,Description FROM Win32_SerialPort

But it list only default COM1, not work for SUNIX pci serial i/o card. (COM3~COM10)

Windows device manager show correctly serial ports like this:
COM1 (default in bios)
SUNIX COM Port(COM3 - 10)

any idea?

0
Comment
Question by:byungho
7 Comments
 
LVL 32

Expert Comment

by:ewangoya
ID: 34211062
Have you tried this solution from sergeworks

procedure TForm3.Button1Click(Sender: TObject);
 var
   Locator:  ISWbemLocator;
   Services: ISWbemServices;
   ObjSet:   ISWbemObjectSet;
   SObject:  ISWbemObject;
   PropSet:  ISWbemPropertySet;
   SProp:    ISWbemProperty;
   sValue:   String;
   Enum:     IEnumVariant;
   Value:    Cardinal;
   TempObj:  OleVariant;
 begin
   Memo1.Lines.Clear;
   Locator:= CoSWbemLocator.Create;
   Services:=  Locator.ConnectServer('.', 'root\cimv2', '', '', '','', 0, nil);
   ObjSet:= Services.InstancesOf('Win32_SerialPort', wbemFlagReturnWhenComplete, nil);
   Enum:= (ObjSet._NewEnum) as IEnumVariant;
   while (Enum.Next(1, tempObj, Value) = S_OK) do
   begin
     SObject:= IUnknown(tempObj) as SWBemObject;
     PropSet := SObject.Properties_;
     SProp:= PropSet.Item('DeviceID',0);
     sValue:= SProp.Get_Value;
     Memo1.Lines.Add(sValue);
   end;
 end;
0
 
LVL 24

Expert Comment

by:jimyX
ID: 34211066
Is the device enabled in the Device Manager (ports) ?
0
 

Author Comment

by:byungho
ID: 34211158
to ewangoya//  It's same result.

to jimyX// Yes, I connected one port COM4.

0
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
LVL 25

Accepted Solution

by:
epasquier earned 125 total points
ID: 34211743
try this
procedure ScanDOSDevices(Var List:TStringList);

var

  Str: string;

  Size, i, j: dword;

begin

 if Not Assigned(List) then List:=TStringList.Create Else List.Clear;

 i:=10000;

 Setlength(Str, i) ;

 Size := QueryDosDevice(nil, @Str[1], i) ;

 While (Size=0) And (GetLastError=ERROR_INSUFFICIENT_BUFFER) do

  begin

   Inc(i,10000);

   Setlength(Str, i) ;

   Size := QueryDosDevice(nil, @Str[1], i) ;

  end;

 for j := 1 to Size-1 do if Str[j] = #0 then Str[j] := ',';

 List.CommaText := Str;

end;



procedure ScanCOMDevices(Var List:TStringList);

Var

 i:integer;

begin

 ScanDOSDevices(List);

 for i := List.Count - 1 downto 0 do if Copy(List[i],1,3)<>'COM' then List.Delete(i);

 List.Sort;

end;

Open in new window

0
 

Author Comment

by:byungho
ID: 34211950
to epasquier// It works,  thank you.

Is it right method to this? I want prefer to use WMI.
0
 
LVL 25

Expert Comment

by:epasquier
ID: 34212184
WMI is just an extensive layer to get hardware information , among other things.
but it is heavy to use and sometimes it does not return what we need.

The code above is based on Windows API to get all devices as enumerated in the hardware manager. I don't know if it is the only one, but that is one that works on all windows systems and quickly.
It is up to you then to decide if it is "the right" method
0
 

Author Comment

by:byungho
ID: 34212306
to epasquier//

Yes! It is "right method" to list serial port names.

If available by wmi to detail information, it's perfact for me.
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now