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

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

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

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

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

Код: 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
09.06.2005, 15:42:10
    #33109880
Azart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM порты. Кто работал с mscomm32.ocx ?
Сорри, что не в тему:

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

Код: 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
09.06.2005, 16:31:01
    #33110060
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM порты. Кто работал с mscomm32.ocx ?
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
09.06.2005, 16:31:21
    #33110061
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM порты. Кто работал с mscomm32.ocx ?
Уважаемый Konst_One!

Спасибо большое, но что мне в Reference воткнуть то?
...
Рейтинг: 0 / 0
09.06.2005, 16:41:10
    #33110101
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM порты. Кто работал с mscomm32.ocx ?
ничего
...
Рейтинг: 0 / 0
09.06.2005, 16:51:07
    #33110129
Azart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM порты. Кто работал с mscomm32.ocx ?
Код: 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
09.06.2005, 17:13:37
    #33110214
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM порты. Кто работал с mscomm32.ocx ?
этим не занимался
попробуй сам поискать
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / COM порты. Кто работал с mscomm32.ocx ? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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