ComHelper

ODPOWIEDZ
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

ComHelper

Post autor: niveasoft » 09 wrz 2018, 4:07

W komputerach mamy więcej portów USB a każda przejściówka USB<>Serial zazwyczaj instaluje się pod nowym numerem portu COM.
Potrafię sobie przypisać żądany numer do danej przejściówki i gniazda USB, ale i tak mając dużo tego typu sprzętu czyli coś na CH340G, coś na CP210x, coś na PLxxx, albo Arduino Mega z konwerterem na Mega8u4 itd...
Często musiałem wchodzić w Menadżera Urządzeń żeby sprawdzić pod jakim numerem mam szukać urządzenia.

Napisałem więc wczoraj w nocy taki mały pomocnik. Ma 50kB ;)
Po uruchomieniu nie ma żadnego głównego okna. Programik od razu ląduje w systemowym Tray`u.
Teraz po każdorazowym podłączeniu jakiegoś sprzętu typu COM widzę miłe powiadomienie ;)
Powiadomienie znika kiedy ruszę myszką (u mnie touchpad).
U siebie wrzuciłem do Autostartu Windowsa.

Program udostępniam zainteresowanym :D

Obrazek
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Press
Posty: 65
Rejestracja: 21 sty 2018, 23:08

Re: ComHelper

Post autor: Press » 09 wrz 2018, 14:00

Hahahaah :lol:

Avast zwariował :D
Po próbie uruchomienia programu przeprowadził skanowanie.
Następnie wyświetlił komunikat, że "Ten plik to niezwykle rzadki okaz", może być potencjalnie niebezpieczny i poprosił o zgodę na przesłanie pliku do analizy w laboratorium Avast.
Ma to zająć około 2h. Zobaczymy :D
Póki co dostęp do pliku zablokowany :D
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: ComHelper

Post autor: niveasoft » 09 wrz 2018, 14:37

<mhihi>
Ciekawe co odpiszą.
Tymczasem przedstawiam źródło programu z komentarzami. Myślę, że wszystko jasne.
Można sobie takie coś wklepać do swojego Visual 2017 i wtedy zmienić jakoś napisy albo coś ulepszyć/dodać.
Przy tworzeniu menu mogłem pójść na skróty i dodać wszystko jedną linijką, ale po czasie to takie rozpisane działanie jest bardziej czytelne.
Ten trzeci import Microsoft.Win32 jest tu chyba niepotrzebny. Wziął się stąd że ja juz mam jeden swój program w Tray`u i ComHelper tylko do niego dopisałem.
Potem na potrzeby podzielenia się stworzyłem osobny malutki.
  1. Imports System.IO
  2. Imports System.IO.Ports
  3. Imports Microsoft.Win32
  4.  
  5. Public Class Form1
  6.  
  7.     Dim MyNewPorts() As String   'tablica stringów dla nowowykrytych portów
  8.     Dim MyOldPorts() As String   'tablica stringów dla poprzednio wykrytych portów
  9.  
  10.     WithEvents mnuExit As New System.Windows.Forms.MenuItem     'tworzy jeden panel w menu dla prawego kliku
  11.     WithEvents mnuAbout As New System.Windows.Forms.MenuItem    'tworzy jeden panel w menu dla prawego kliku
  12.     Public cntxtMenu As New System.Windows.Forms.ContextMenu    'tworzy menu prawego kliku dla ikony w Tray`u
  13.  
  14.     '## Sub uruchamiany przy starcie programu ##
  15.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  16.         MyNewPorts = IO.Ports.SerialPort.GetPortNames() 'wykryj wszystkie porty COM i dodaj do kolekcji
  17.         MyOldPorts = IO.Ports.SerialPort.GetPortNames() 'zrób to samo czyli obydwie tablice niczym się nie różnią
  18.  
  19.         mnuExit.Text = "Exit"             'nadaj nazwę dla jednego kafelka menu
  20.         mnuAbout.Text = "About"           'nadaj nazwę dla drugiego kafelka menu
  21.         cntxtMenu.MenuItems.Add(mnuExit)  'dodaj kafelek do menu
  22.         cntxtMenu.MenuItems.Add(mnuAbout) 'dodaj drugi kafelek do menu
  23.         NotifyIcon1.ContextMenu = cntxtMenu  'zamontuj menu do ikonki
  24.  
  25.         NotifyIcon1.Visible = True                  'ikona w Tray`u widoczna
  26.         Me.WindowState = FormWindowState.Minimized  'zmniejsz programik do Tray`a przy starcie
  27.         ShowInTaskbar = False                       'nie pokazuj go na pasku uruchomionych na dole
  28.  
  29.         Timer1.Start() 'włącz timer 1s
  30.     End Sub
  31.  
  32.     '## co 1s ##
  33.     Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  34.  
  35.         If MyNewPorts.Length > 0 Then 'jeśli tablica była już używana
  36.             Array.Clear(MyNewPorts, 0, MyNewPorts.Length) 'wyczyść tablicę
  37.         End If
  38.  
  39.         MyNewPorts = IO.Ports.SerialPort.GetPortNames()   'wykryj porty COM
  40.  
  41.         For Each item As String In MyNewPorts             'dla każdego wykrytego portu
  42.  
  43.             If Not MyOldPorts.Contains(item) Then         'jeśli nie było go sekundę temu to
  44.                 NotifyIcon1.BalloonTipTitle = item        ' POKAŻ DYMEK Z INFORMACJĄ
  45.                 NotifyIcon1.BalloonTipText = "New port detected"
  46.                 NotifyIcon1.Visible = True
  47.                 NotifyIcon1.ShowBalloonTip(2)
  48.             End If
  49.  
  50.         Next
  51.  
  52.         If MyOldPorts.Length > 0 Then                    'wyczyść drugą tablicę
  53.             Array.Clear(MyOldPorts, 0, MyOldPorts.Length)
  54.         End If
  55.  
  56.         MyOldPorts = IO.Ports.SerialPort.GetPortNames()  'wykryj porty do drugiej tablicy i porównamy za sekundę
  57.  
  58.     End Sub
  59.  
  60.     '## prawy klik w menu i klik "Exit" zamyka program ##
  61.     Sub mnuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExit.Click
  62.         Me.Close()
  63.     End Sub
  64.  
  65.     '## prawy klik w menu i klik "About" pokazuje info o programie i autorze ##
  66.     Sub mnuAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAbout.Click
  67.         MessageBox.Show("This program shows info about COM number when" & vbLf _
  68.                          & " new USB<>SERIAL adapter is plugged in." & vbLf _
  69.                          & vbLf & "         www.bart-projects.cba.pl", "ABOUT ComHelper By BARTek")
  70.     End Sub
  71.  
  72. End Class
Press
Posty: 65
Rejestracja: 21 sty 2018, 23:08

Re: ComHelper

Post autor: Press » 09 wrz 2018, 19:25

No więc. Plik okazał się tak skomplikowany, że zajęło więcej niż 2h :D

Oto odpowiedź...
Clipboard01.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: ComHelper

Post autor: niveasoft » 10 wrz 2018, 8:41

W swoich programach na PC miałem zawsze przycisk "Refresh" albo "Find ports" bo najczęsciej sprawdzały istniejące porty podczas startu programu. Teraz do każdego mogę sobie dodać ten moduł i będzie mi podłączał interfesjy automatycznie.
ODPOWIEDZ