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
ComHelper
-
- Posty: 65
- Rejestracja: 21 sty 2018, 23:08
Re: ComHelper
Hahahaah
Avast zwariował
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
Póki co dostęp do pliku zablokowany
Avast zwariował
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
Póki co dostęp do pliku zablokowany
- niveasoft
- Posty: 1231
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: ComHelper
<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.
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.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Imports System.IO
- Imports System.IO.Ports
- Imports Microsoft.Win32
- Public Class Form1
- Dim MyNewPorts() As String 'tablica stringów dla nowowykrytych portów
- Dim MyOldPorts() As String 'tablica stringów dla poprzednio wykrytych portów
- WithEvents mnuExit As New System.Windows.Forms.MenuItem 'tworzy jeden panel w menu dla prawego kliku
- WithEvents mnuAbout As New System.Windows.Forms.MenuItem 'tworzy jeden panel w menu dla prawego kliku
- Public cntxtMenu As New System.Windows.Forms.ContextMenu 'tworzy menu prawego kliku dla ikony w Tray`u
- '## Sub uruchamiany przy starcie programu ##
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- MyNewPorts = IO.Ports.SerialPort.GetPortNames() 'wykryj wszystkie porty COM i dodaj do kolekcji
- MyOldPorts = IO.Ports.SerialPort.GetPortNames() 'zrób to samo czyli obydwie tablice niczym się nie różnią
- mnuExit.Text = "Exit" 'nadaj nazwę dla jednego kafelka menu
- mnuAbout.Text = "About" 'nadaj nazwę dla drugiego kafelka menu
- cntxtMenu.MenuItems.Add(mnuExit) 'dodaj kafelek do menu
- cntxtMenu.MenuItems.Add(mnuAbout) 'dodaj drugi kafelek do menu
- NotifyIcon1.ContextMenu = cntxtMenu 'zamontuj menu do ikonki
- NotifyIcon1.Visible = True 'ikona w Tray`u widoczna
- Me.WindowState = FormWindowState.Minimized 'zmniejsz programik do Tray`a przy starcie
- ShowInTaskbar = False 'nie pokazuj go na pasku uruchomionych na dole
- Timer1.Start() 'włącz timer 1s
- End Sub
- '## co 1s ##
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- If MyNewPorts.Length > 0 Then 'jeśli tablica była już używana
- Array.Clear(MyNewPorts, 0, MyNewPorts.Length) 'wyczyść tablicę
- End If
- MyNewPorts = IO.Ports.SerialPort.GetPortNames() 'wykryj porty COM
- For Each item As String In MyNewPorts 'dla każdego wykrytego portu
- If Not MyOldPorts.Contains(item) Then 'jeśli nie było go sekundę temu to
- NotifyIcon1.BalloonTipTitle = item ' POKAŻ DYMEK Z INFORMACJĄ
- NotifyIcon1.BalloonTipText = "New port detected"
- NotifyIcon1.Visible = True
- NotifyIcon1.ShowBalloonTip(2)
- End If
- Next
- If MyOldPorts.Length > 0 Then 'wyczyść drugą tablicę
- Array.Clear(MyOldPorts, 0, MyOldPorts.Length)
- End If
- MyOldPorts = IO.Ports.SerialPort.GetPortNames() 'wykryj porty do drugiej tablicy i porównamy za sekundę
- End Sub
- '## prawy klik w menu i klik "Exit" zamyka program ##
- Sub mnuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExit.Click
- Me.Close()
- End Sub
- '## prawy klik w menu i klik "About" pokazuje info o programie i autorze ##
- Sub mnuAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAbout.Click
- MessageBox.Show("This program shows info about COM number when" & vbLf _
- & " new USB<>SERIAL adapter is plugged in." & vbLf _
- & vbLf & " www.bart-projects.cba.pl", "ABOUT ComHelper By BARTek")
- End Sub
- End Class
-
- Posty: 65
- Rejestracja: 21 sty 2018, 23:08
Re: ComHelper
No więc. Plik okazał się tak skomplikowany, że zajęło więcej niż 2h
Oto odpowiedź...
Oto odpowiedź...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- niveasoft
- Posty: 1231
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: ComHelper
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.