Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

Tomasz Gumny 04 Paź 2012 18:16 2268 15
  • #1 04 Paź 2012 18:16
    Tomasz Gumny
    Poziom 27  

    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.

    0 15
  • Pomocny post
    #2 04 Paź 2012 19:07
    marcinj12
    Poziom 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 :).

    0
  • #3 04 Paź 2012 19:30
    Defice
    Poziom 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.

    0
  • #4 04 Paź 2012 19:46
    MArSTER_1
    Poziom 18  

    "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.

    0
  • #5 04 Paź 2012 19:46
    Tomasz Gumny
    Poziom 27  

    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?

    0
  • #6 04 Paź 2012 19:53
    MArSTER_1
    Poziom 18  

    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.

    0
  • #7 04 Paź 2012 19:55
    Defice
    Poziom 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.

    0
  • #8 04 Paź 2012 19:55
    marcinj12
    Poziom 40  

    Tomasz Gumny napisał:
    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.

    0
  • #10 06 Paź 2012 21:38
    Tomasz Gumny
    Poziom 27  

    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.

    0
  • #12 08 Paź 2012 11:30
    Tomasz Gumny
    Poziom 27  

    marcinj12 napisał:
    [...] 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.

    0
  • #14 08 Paź 2012 16:49
    Tomasz Gumny
    Poziom 27  

    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.

    0
  • #15 25 Paź 2012 09:31
    Tomasz Gumny
    Poziom 27  

    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?

    0
  • #16 25 Paź 2012 10:18
    marcinj12
    Poziom 40  

    Tomasz Gumny napisał:
    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.

    0