powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / COM порты. Кто работал с mscomm32.ocx ?
11 сообщений из 11, страница 1 из 1
COM порты. Кто работал с mscomm32.ocx ?
    #33109662
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит контрол пришпандорил к проекту.

Мне надо сделать следующее.

1. Прога должна определить все COM порты в системе (включая через многопортовые разветвители типа Мохи)

2. Для каждого порта надо вытащить адрес в hex формате

В идеале должно быть так. Если в системе 8 компортов у меня появляются на форме список этих 8 компортов и справа от каждого его адрес.
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33109823
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а при чем тут mscomm32.ocx ?
используй WMI и смотри свои порты на компе (Win32_SerialPortSetting)
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33109841
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мммм. что такое WMI ?
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33109852
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тебе для начала:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
' ***************************************************************
' Created by Jesper Hanno Hansen, Jesper@Wbem.dk, www.Wbem.dk
' Use: Cscript Win32_SerialPortSetting.vbs
' ***************************************************************

Dim sServer
sServer = "."

DoWin32_SerialPortSetting

Sub DoWin32_SerialPortSetting
    On Error Resume Next

    Dim SWbemLocator
    Set SWbemLocator = CreateObject("WbemScripting.SWbemLocator")

    Dim SWbemServices
    Set SWbemServices = SWbemLocator.ConnectServer(sServer,"root\CIMV2")

    Dim objWbemObjectSet
    Set objWbemObjectSet = SWbemServices.ExecQuery("Select * From Win32_SerialPortSetting", "WQL")

    Dim sProperty

    For Each sProperty in objWbemObjectSet
        DoWrite "Element", DoCheckIfEmpty(sProperty.Element)
        DoWrite "Setting", DoCheckIfEmpty(sProperty.Setting)
        Wscript.Echo 
    Next
End Sub

Function DoCheckIfEmpty(sValue)
    If IsNull(sValue) Then
        DoCheckIfEmpty = "Empty"
    Else
        DoCheckIfEmpty = sValue
    End If
End Function

Sub DoWrite(sText, sValue)
    WScript.Echo sText & DoFormat(sText), sValue
End Sub

Function DoFormat(sText)
    DoFormat = Space( 8  - Len(sText)) & " = "
End Function
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33109880
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, что не в тему:

Konst_One вы не знаете как программно найти все PCI устройства или определённой устройство, подключенное к компу? И если оно найдено поставить дрова длянего?
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33109915
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а это на закуску:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
' Check command line parameters
Select Case WScript.Arguments.Count
	Case  0 
		' Default if none specified is local computer (".")
		Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
		Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", ,  48  )
		For Each objItem in colItems
			strComputer = objItem.Name
		Next
	Case  1 
		' Command line parameter can either be a computer
		' name or "/?" to request online help
		strComputer = UCase( Wscript.Arguments( 0 ) )
		if InStr( strComputer, "?" ) >  0  Then Syntax
	Case Else
		' Maximum is 1 command line parameter
		Syntax
End Select

' Header line for screen output
strMsg = vbCrLf & "Serial ports summary for " & strComputer & ":" & vbCrLf & vbCrLf

' Enable error handling
On Error Resume Next

' Connect to specified computer
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
' Display error number and description if applicable
If Err Then ShowError

' Query serial ports properties
Set colItems = objWMIService.ExecQuery( "Select * From Win32_SerialPort", ,  48  )
' Display error number and description if applicable
If Err Then ShowError

' Format results for display
'For Each objItem in colItems
'	strMsg = strMsg _
'	       & "DeviceID         : " & objItem.DeviceID & vbCrLf _
'	       & "ProviderType     : " & objItem.ProviderType & vbCrLf _
'	       & "Status	   : " & objItem.Status & vbCrLf _
'	       & "Description      : " & objItem.Description & vbCrLf & vbCrLf
'Next

' Query serial ports settings
Set colItems = objWMIService.ExecQuery( "Select * From Win32_SerialPortConfiguration", ,  48  )
' Display error number and description if applicable
If Err Then ShowError

' Format results for display
For Each objItem in colItems
	strMsg = strMsg _
	       & "Name                 : " & objItem.Name & vbCrLf _
	       & "BaudRate             : " & objItem.BaudRate & vbCrLf _
	       & "Parity               : " & objItem.Parity & vbCrLf _
	       & "StopBits             : " & objItem.StopBits & vbCrLf _
	       & "DTRFlowControlType   : " & objItem.DTRFlowControlType & vbCrLf _
	       & "RTSFlowControlType   : " & objItem.RTSFlowControlType & vbCrLf _
	       & "ParityCheckEnabled   : " & objItem.ParityCheckEnabled  & vbCrLf _
	       & "Description          : " & objItem.Description & vbCrLf & vbCrLf
Next


' Display results
WScript.Echo strMsg

'Done
WScript.Quit( 0 )


Sub ShowError()
	strMsg = vbCrLf & "Error # " & Err.Number & vbCrLf & _
	         Err.Description & vbCrLf & vbCrLf
	Syntax
End Sub


Sub Syntax()
	strMsg = strMsg & vbCrLf _
	       & "ComPort_detail.vbs,  Version 1.01" & vbCrLf _
	       & "Display basic serial port summary for any WMI " _
	       & "enabled computer on the network" & vbCrLf & vbCrLf _
	       & "Usage:  CSCRIPT  //NOLOGO  COMPORT_DETAIL.VBS  " _
	       & "[ computer_name ]" & vbCrLf & vbCrLf _
	       & "Where:  " & Chr( 34 ) & "computer_name" & Chr( 34 ) _
	       & " is the optional name of a remote" & vbCrLf _
	       & "        computer (default is local computer " _
	       & "name)" & vbCrLf & vbCrLf _
	       & "Created with Microsoft's Scriptomatic tool" & vbCrLf _
	       & "http://www.microsoft.com/technet/treeview/default.asp" _
	       & "?url=/technet/scriptcenter/WMImatic.asp" & vbCrLf
	WScript.Echo strMsg
	WScript.Quit( 1 )
End Sub
	
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33110060
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PNP devices:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
VERSION  5 . 00 
Begin VB.Form f_WMI 
   Caption         =   "Form1"
   ClientHeight    =    5205 
   ClientLeft      =    60 
   ClientTop       =    345 
   ClientWidth     =    9525 
   Icon            =   "Form1.frx": 0000 
   LinkTopic       =   "Form1"
   ScaleHeight     =    5205 
   ScaleWidth      =    9525 
   StartUpPosition =    3   'Windows Default
   Begin VB.CommandButton cmdShow 
      Caption         =   "PNPEntity"
      Height          =    375 
      Left            =    45 
      TabIndex        =    1 
      Top             =    45 
      Width           =    1365 
   End
   Begin VB.TextBox OUT 
      Height          =    4695 
      Left            =    0 
      MultiLine       =   - 1   'True
      ScrollBars      =    2   'Vertical
      TabIndex        =    0 
      Top             =    495 
      Width           =    9510 
   End
   Begin VB.Label firm 
      Alignment       =    1   'Right Justify
      BackStyle       =    0   'Transparent
      Caption         =   "©2005, VisualSoft"
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =    9 . 75 
         Charset         =    204 
         Weight          =    700 
         Underline       =    0    'False
         Italic          =    0    'False
         Strikethrough   =    0    'False
      EndProperty
      ForeColor       =   &H00800000&
      Height          =    285 
      Left            =    7290 
      TabIndex        =    2 
      Top             =    90 
      Width           =    2085 
   End
End
Attribute VB_Name = "f_WMI"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'--------------------------------------------------------------------------------
'    Component  : f_WMI
'    Project    : WMIpnp
'
'    Description: PNP device enumerator
'
'    Copyright  : Konst Popov, 2005
'    Modified   : 09.06.2005 16:37:31
'--------------------------------------------------------------------------------
Option Explicit
Dim strComputer As String
Dim colItems As Object
Dim objWMIService As Object

Private Sub cmdShow_Click()
On Error Resume Next
Dim objItem As Object

    Me.OUT.Text = ""
    Set colItems = objWMIService.ExecQuery("Select * From Win32_PNPEntity", ,  48 )
    For Each objItem In colItems
        Me.OUT.SelText = "DeviceID: " & vbTab & objItem.DeviceID & vbCrLf
        Me.OUT.SelText = "Name: " & vbTab & objItem.Name & vbCrLf
        Me.OUT.SelText = "Manufacturer: " & vbTab & objItem.Manufacturer & vbCrLf
        Me.OUT.SelText = "Service: " & vbTab & objItem.Service & vbCrLf
        Me.OUT.SelText = "Status: " & vbTab & objItem.Status & vbCrLf
        Me.OUT.SelText = "SystemName: " & vbTab & objItem.SystemName & vbCrLf
        Me.OUT.SelText = "Description: " & vbTab & objItem.Description & vbCrLf & vbCrLf
    Next

End Sub

Private Sub Form_Load()
Dim objItem As Object

    Me.Caption = App.Title
    Me.Visible = True
    Me.Refresh
    DoEvents
    
    
    Set objWMIService = VBA.GetObject("winmgmts://./root/cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem", ,  48 )
    For Each objItem In colItems
        strComputer = objItem.Name
    Next
        
    ' Connect to specified computer
    Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
    
End Sub

Private Sub Form_Resize()
On Error Resume Next
    Me.OUT.Move  0 , Me.OUT.Top, Me.ScaleWidth, Me.ScaleHeight - Me.OUT.Top
    Me.firm.Move Me.ScaleWidth - Me.firm.Width
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set colItems = Nothing
    Set objWMIService = Nothing
End Sub
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33110061
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Konst_One!

Спасибо большое, но что мне в Reference воткнуть то?
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33110101
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33110129
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub cmdShow_Click()
On Error Resume Next
Dim objItem As Object

    Me.OUT.Text = ""
    Set colItems = objWMIService.ExecQuery("Select * From Win32_PNPEntity", ,  48 )
    For Each objItem In colItems
        Me.OUT.SelText = "DeviceID: " & vbTab & objItem.DeviceID & vbCrLf
        Me.OUT.SelText = "Name: " & vbTab & objItem.Name & vbCrLf
        Me.OUT.SelText = "Manufacturer: " & vbTab & objItem.Manufacturer & vbCrLf
        Me.OUT.SelText = "Service: " & vbTab & objItem.Service & vbCrLf
        Me.OUT.SelText = "Status: " & vbTab & objItem.Status & vbCrLf
        Me.OUT.SelText = "SystemName: " & vbTab & objItem.SystemName & vbCrLf
        Me.OUT.SelText = "Description: " & vbTab & objItem.Description & vbCrLf & vbCrLf
    Next

End Sub

Спасибо, хороший пример. Добавляя условие к запросу можно найти устройства по DeviceID.
Konst_One, а как дрова ставить для найденного устройства знаешь?
...
Рейтинг: 0 / 0
COM порты. Кто работал с mscomm32.ocx ?
    #33110214
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этим не занимался
попробуй сам поискать
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / COM порты. Кто работал с mscomm32.ocx ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]