Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[PC] - W czym tworzyć niewielkie aplikacje do komunikacji przez port szeregowy?

Tomasz Gumny 04 Oct 2012 18:16 2670 15
  • #1
    Tomasz Gumny
    Level 28  
    Dość regularnie potrzebuję programów, które komunikują się z tworzonymi lub remontowanymi urządzeniami przez port szeregowy (232, 485). Zwykle udawało się to obsłużyć terminalem lub programikiem wyproszonym u znajomego magika od Delphi. Zadaniem takiego programu jest zwykle odebranie jakiejś porcji danych oraz zapisanie jej na dysku. Opcjonalnie przydałoby się wyświetlanie danych w postaci tekstowej lub graficznej po uprzednim przemieleniu.
    Przykładem może być:
    -miernik lamp AVT-5229;
    -regulator temperatury AVT-5305;
    -charakterograf do lamp elektronowych:
    Code:
    ===========================================================
    
    Title: 6p3s
    -----------------------------------------------------------
    Iamax(0-409.5mA) <0.1> = 200
    Pamax(0-200.0W) <0.1> = 20
    Pg2max(0-20.0W) <0.1> = 4
    Ug1(0-81.9[;0-81.9;0-81.9]V) <0.0>[;<0.0>;<0.0>] = 14
    Ua(0-409[;0-409;0-409]V) <0>[;<0>;<0>] = 0;180;10
    Ug2(0-409V or Ua) <0> = 180
    Interval(1-900s) <1> =
    Uh(0-25.5V) <6.3> =
    0:00s    6.3V / 0.922A    Wait for heating or press <ENTER>
    ----+-----+-----+------+-------+------+-------+-----+------
     Nr  Uh[V] Ih[A] Ug2[V] Ig2[mA] Ug1[V] Ig1[mA] Ua[V] Ia[mA]
    ----+-----+-----+------+-------+------+-------+-----+------
       1  6.3  0.923  181    21.00  -14.0    0.00    0     1.96
       2  6.3  0.922  181     9.62  -14.0    0.00    9    20.55
       3  6.3  0.920  181     3.49  -14.0    0.00   19    30.10
       4  6.3  0.922  181     3.75  -14.0    0.00   29    30.10
       5  6.3  0.925  181     4.17  -14.0    0.00   39    29.78
       6  6.3  0.921  181     4.34  -14.0    0.00   49    29.97
       7  6.3  0.925  181     4.34  -14.0    0.00   59    30.03
       8  6.3  0.926  181     4.19  -14.0    0.00   70    30.32
       9  6.3  0.924  181     3.84  -14.0    0.00   80    31.03
      10  6.3  0.924  181     3.33  -14.0    0.00   90    31.82
      11  6.3  0.923  181     2.91  -14.0    0.00  100    32.42
      12  6.3  0.926  181     2.46  -14.0    0.00  110    33.05
      13  6.3  0.922  181     2.25  -14.0    0.00  120    33.59
      14  6.3  0.927  181     1.98  -14.0    0.00  130    33.94
      15  6.3  0.922  181     1.83  -14.0    0.00  140    34.27
      16  6.3  0.922  181     1.70  -14.0    0.00  150    34.58
      17  6.3  0.922  181     1.64  -14.0    0.00  160    34.92
      18  6.3  0.921  181     1.59  -14.0    0.00  170    35.05
      19  6.3  0.923  181     1.51  -14.0    0.00  180    35.21
    ----+-----+-----+------+-------+------+-------+-----+------
    Note: OK
    Chciałbym móc tworzyć takie programiki na PC samodzielnie. Swoją karierę na PC zakończyłem na TurboPascalu w okolicach wersji 5. Od tego czasu programuję w asemblerze i C, ale tylko mikrokontrolery różnych rodzin.
    Jakie środowisko:
    1. umożliwia tworzenie małych, kompletnych aplikacji, nie wymagających instalowania w systemie Windows;
    2. ma dostępne biblioteki do obsługi portów szeregowych;
    3. działa na komputerach z nowymi wersjami Windows;
    4. jest darmowe lub dostępne w akceptowalnych przez żonę ;) cenach;
    5. można się go nauczyć przez najbliższy weekend. :)
    Dodam, że programy wolałbym pisać niż rysować lub wypełniać tabelki.
  • Helpful post
    #2
    marcinj12
    Level 40  
    Myślę, że wszystkie te wymagania spełni platforma .NET 4.0 i środowisko Visual Studio 2010 Express (celowo nie polecam najnowszej wersji 4.5 i 2012, przeznaczone bardziej na Windows 8).

    W punktach:
    1. Programy możesz pisać zarówno w wersji konsolowej jak i okienkowej. Do uruchomienia wymagają co prawda zainstalowania .NET Framework, który jest jednak oferowany również w "odchudzonej" wersji klienckiej.
    2. Posiada standardowo rozbudowaną klasę SerialPort do obsługi portu szeregowego właśnie.
    3. Działa na każdym komputerze na którym da się zainstalować .NET Framework, w tym na tych z najnowszymi Windowsami.
    4. Wersja Express jest całkowicie darmowa, również do zastosowań komercyjnych.
    5. Przez weekend nikt się jeszcze programowania nie nauczył ;), ale masz do wyboru środowisko dla języka C#, Visual Basic bądź C++. Ten ostatni raczej odradzam bo ma składnie bardziej skomplikowaną i mniej czytelną od dwóch pierwszych,skoro znasz C to składnia C# powinna Ci podpasować.
    Do tego dochodzi dobra dokumentacja bibliotek i ich funkcji na MSDN, przykład dla wspomnianego Serial Portu czy dużo materiałów, przykładów i gotowców na sieci. Aplikacje okienkowe możesz pisać w dużej mierze wspomagany wizualnym designerem, gdzie komponenty przeciągasz myszą na formę i odpowiednio je konfigurujesz. Może do ładnego pisania kodu droga daleka, ale właśnie takie proste programiki z całym kodem pod zdarzeniem kliknięcia przycisku można sobie dosyć szybko "wyklikać".

    Z serial portem od razu dodam że jest taki motyw na który chyba każdy kto go używał natknął się na początku, mianowicie zdarzenie odbioru jest dokonywane w osobnym wątku, i nie możesz w nim bezpośrednio ustawiać wartości komponentów na formie (textboxów, labeli etc.), bo dostaniesz komunikat o "cross thread exception". Sposoby na obejście (np. z użyciem tzw. delegata) znajdziesz m.in. na tym forum, ale to jak już się wgryziesz :).
  • #3
    Defice
    Level 25  
    Jeśli dobrze popatrzysz na forum było tu już sporo programów do komunikacji przez port szeregowy, pisanych głównie w C#.

    Co do szczegółów to chyba kolega marcinj12 napisał wystarczająco.
  • #4
    MArSTER_1
    Level 19  
    "Zadaniem takiego programu jest zwykle odebranie jakiejś porcji danych oraz zapisanie jej na dysku. Opcjonalnie przydałoby się wyświetlanie danych w postaci tekstowej lub graficznej po uprzednim przemieleniu."
    Visual Basic 2010 Express.
    Do takich zadań nie przewiduję problemów z użyciem. Dane odebrane można bardzo prosto zapisać do pliku (bin lub txt) i wyświetlić lub wygenerować wykres.
  • #5
    Tomasz Gumny
    Level 28  
    Dzięki! Zatem zasysam Visual Studio 2010 i sprawdzę jak daleko zajadę samodzielnie.
    Tak z ciekawości: co to jest ów niezbędny .NET 4.0 Framework?
  • #6
    MArSTER_1
    Level 19  
    Na swój użytek przyjąłem, że jest to rozszerzenie możliwości Visual Basica.W przypadku pracy z portem szeregowym wymagane nie mniej niż 4.0. W wersji 3.5 potrafiły pojawiać się dziwne nazwy portów gdy (podobnie jak w HyperTerminalu) klikało się rozwijaną listę zainstalowanych w systemie portów.
  • #7
    Defice
    Level 25  
    Framework dostarcza narzędzia do pracy, jest niezbędny do pracy w Visual Studio. Innymi słowy to zbiór bibliotek klas. Wersja 4.0 to po prostu najnowsze wydanie.
  • #8
    marcinj12
    Level 40  
    Tomasz Gumny wrote:
    Tak z ciekawości: co to jest ów niezbędny .NET 4.0 Framework?
    Jest to zestaw wszystkich zbędnych i niezbędnych :) bibliotek oraz narzędzi z których korzysta program (np. do zarządzania pamięcią) oraz, co niemniej istotne, środowisko uruchomieniowe aplikacji napisanych w nim właśnie.
    Kod programu, który generuje Visual Studio, nie jest kodem maszynowym pod konkretny procesor, a jedynie tzw. językiem pośrednim tłumaczonym, a raczej kompilowanym na kod konkretnego procesora "w locie" przez środowisko uruchomieniowe zawarte w pakiecie .NET framework.
  • #10
    Tomasz Gumny
    Level 28  
    Jak mogę w C# zrobić ściśle określoną pauzę między końcem jednego bloku wysyłanego przez port szeregowy i początkiem kolejnego? Najlepiej bez zmniejszania WriteBufferSize.
  • #12
    Tomasz Gumny
    Level 28  
    marcinj12 wrote:
    [...] Przez weekend nikt się jeszcze programowania nie nauczył ;)
    Wiem - najgorzej było wyświetlić w okienku "Hello World", teraz jest już z górki. ;)
    [PC] - W czym tworzyć niewielkie aplikacje do komunikacji przez port szeregowy?
    Na razie program tylko sprawdza dostępne w systemie porty szeregowe, umożliwia wybranie jednego z nich a po naciśnięciu jednego z przycisków ustawia parametry transmisji i wysyła blok danych. Nadal kiepsko idzie mi odliczanie czasu między blokami danych, a chcę to opanować, bo to jedna z bardziej potrzebnych mi rzeczy.
  • #14
    Tomasz Gumny
    Level 28  
    Próbuję zrobić tylko zapis i odczyt programów (bloków G-kod) na PC, żeby zastąpić Datasette w wiekowym sterowniku CNC. Na razie bez zagłębiania się w strukturę danych, bo dokumentacji żadnej nie ma. Jeśli struktura będzie czytelna, to chciałbym umożliwić pisanie i edycję programów na PC, bo na CNC to koszmar.
  • #15
    Tomasz Gumny
    Level 28  
    Czy .NET musi być zainstalowany na każdym komputerze, na którym chcę uruchomić program napisany w C#, czy jest jakaś możliwość dołączenia potrzebnych bibliotek do wykonywalnego pliku?
  • #16
    marcinj12
    Level 40  
    Tomasz Gumny wrote:
    Czy .NET musi być zainstalowany na każdym komputerze, na którym chcę uruchomić program napisany w C#, czy jest jakaś możliwość dołączenia potrzebnych bibliotek do wykonywalnego pliku?
    Musi być zainstalowany. Ta sama wersja, do której była skompilowana aplikacja.