Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 kwi 2024, o 18:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 56 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 12 sty 2014, o 13:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Heh no w sumie nie wiem jak to się stało że ten istotny temat
został pominięty więc czas to nadrobić...

Dlatego też postanowiliśmy z kolegą Developer95 napisać i nagrać co nieco dla was
Mam nadzieję że taka forma wam przypadnie do gustu i wyniknie z tego coś dobrego
dla wszystkich .... miłego czytania !!


Często nasz układ z mikrokontrolerem chcemy by sobie rozmawiał z komputerem
wymieniając jakieś dane. W większości przypadków właśnie tą komunikacje popełnimy przez port
Serial - umożliwia on nam prostą komunikację naszych urządzeń z komputerem PC , dzięki czemu możemy
w łatwy i prosty sposób przesyłać np. dane z czujników i dokonywać analizy danych czy też po prostu
wyświetlać je na ekranie lub PC może wysyłać polecenia do sterowania różnymi urządzeniami.

Wielu powie aaa nie mam portu serial ... masz ale nawet o tym nie wiesz ... przecież nie musi mieć on
formy klasycznego gniazda DB9 , może być to przejściówka USB na FT232 czy MCP2200, a nawet Blutetooth.

Tu mam zamiar wam pokazać proste i skuteczne nawiązywanie połączeń z RS232/UART/COM itd.

Kiedyś już pisałem jak zrobić woltomierz ... ale teraz napiszemy trochę więcej ... o porcie COM
i sposobach komunikacji..

topic97.html tak to było tutaj , ale poza macoszym potraktowaniem zagadnienia
złośliwie napisałem w VS C++ i jeszcze na arduino za co wszystkich przepraszam.

Zacznijmy od najprostszej formy nawiązania komunikacji która się sprawdza gdy znamy port COM pod którym
ukrywa się urządzenie z którym chcemy się połączyć :

Wiec zakładamy nowy projekt i na Formularzu Windows dodajemy 2 przyciski jeden nazywamy Otwórz Port, a drugi Zamknij

Obrazek

dodatkowo dodamy 2 panele i dostosujemy ich rozmiar do przycisków oraz oczywiście dodajemy komponent
serialPort :

Obrazek

jak widać nic specjalnego ... prawda no to klikamy na przyciku otwórz port i w kodzie :

Pod przyciskiem wpisujemy :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Analogicznie postępujemy z drugim przyciskiem :


Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ale to nie wszystko wprawdzie nasz klawisz coś tam robi ale jeszcze nie wie z czym

dlatego przechodzimy na początek kodu i precyzujemy o jaki port COM nam chodzi oraz jakie ma parametry:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Całość ładnie obrazuje filmik ... autorstwa kol. Developer95,



jak widzicie ... komunikacja będzie nawiązana na porcie COM2 z prędkością 9600bps
To rozwiązanie sprawdza się w przypadku konkretnych urządzeń które mają znany port COM i stałe parametry
ale co gdy chcemy zrobić coś bardziej uniwersalnego ??

O tym w następnym odcinku :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 16:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

w przypadku zaawansowanego używania zaawansowanych funkcji portu COM w języku C# należy
już tak napisać program by nie był związany z konkretnym numerem portu COM , a umożliwiał jego wybór
ale też nie tylko wysyłał znaki (char) ale też odbierał i wysyłał stringi.. co tez zrobimy w prostym terminalu

Oczywiście nie będziemy się bawić w opisywanie jak utworzyć projekt i takie tam , bo jest to opisane na
forum i nie tylko , a jak ktoś nie wie to niech zacznie od początku albo sobie poszuka :)

Zaczynamy....

Nasz formularz zatem w nowym projekcie wyposażamy w :
kilka labeli , przyciski 2 , combo box , textboxy ...
oraz dodajem coponenty serialPort i InfoStrip

całość może wyglądać tak:

Obrazek

nie ważne .... to tylko wygląd ....
zmieniamy sobie wpisy w labelach i na butonach na odpowiednie opisujące spełnianą funkcję co widać wyżej
i przechodzimy do kodu:

Jak widzicie tutaj zadziałamy jeszcze inaczej gdyż niema klawisza Otwórz port :)
ale będziemy wybierać port z naszego comboBoxa, istotne też są okna Odebranych i wysyłanych danych
oraz pasek statusu który nas poinformuje o ustawieniach wybranego portu COM:

wiec jedziemy :

Nie owijając w bawełnę nasz kod powinien wyglądać w całości tak :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Wielu pewnie nie zauważyło , ale component serialPort umożliwia nam w łatwy sposób uzyskanie nazw wszystkich
dostępnych portów COM w komputerze poprzez funkcję :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


dzięki temu gdy już znamy wszystkie porty możemy łatwo wstawić je do naszego comboBoxa:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dzięki powyższemu wpisowi możemy łatwo wybierać port com z rozwijalnej listy comboBoxa:)
Jednak zawsze istnieje obawa że wybrany port jest już używany w innym programie dlatego możemy
próbować przechwycić informacje i wyświetlić komunikat odpowiedni np w taki sposób:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Lub jeśli chcemy coś wysłać bez wybrania portu i jego otwarcia :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co jak widać umieszczamy w evencie przycisku Wyślij , gdzie w wypadku nie wybrania portu dostaniemy komunikat :

Obrazek

Oczywiście niema kłopotu z transmisją danych do okna Odbiorczego co moglibyśmy
prosto zapisać np :

textIn.Text = InputData;

Ale mimo iż jest to proste będziemy mieć kłopoty z transmisją danych , gdyż bedziemy mnożyć
różne wątki ... np w powyższym wypadku problem polega na tym że wątek przekazujący dane z RS do pola
tekstowego , będzie inny niż wątek który zaczynał przekaz (mam nadzieję ze jest to zrozumiałe) i dlatego
zamiast stosować np:

SetText(InputData);

utworzymy sobie delegata calbacka :P

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i teraz funkcję SetText(); zdefiniujemy bezpiecznie:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nasza funkcja jak widać porówna ID wątku wywołującego z ID wątku który utworzył połaczenie
i jeśli będą one różne zwróci wartość TRUE:

łatwe prawda ?

Oczywiście reszta wynika z kodu który jest banalnie prosty .... i większego omówienia nie wymaga:)
Skompilowany program do zabawy macie w załączniku

A później opiszemy jeszcze bardziej specjalne wywołania portów Serial w naszych aplikacjach które naprawdę
łatwo napisać i używać do sterowania urzadzeń :)


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 19:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

No coś tam już najprostszymi metodami umiemy osiągnąć prawda
a teraz posuniemy się trochę dalej napiszemy sobie prosty
mierniczek temperatury i napięcia :)

Obrazek

jak widać znów nic wielkiego , ale parę zmian w kodzie gdyż tym razem mamy też wybór prędkości
transmisji i 2 klawisze do wykonywania połączenia i kończenia go:)

w sumie wiele tu nie będzie nowości i postaram się je tylko pokrótce opisać te ważniejsze

zaczynamy ?

no to jazda .... przycisk Połącz :

Kod który umieszczamy w evencie Click prezentuje się następująco:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak widać banalnie proste .. oczywiście ustawienia pozostałe tez możemy sobie umieścić i je zmieniać
z poziomu aplikacji , ale teraz nie jest nam to potrzebne

Przycisk Rozłącz:

Kod jaki umieszczamy w ewencie Click przycisku Rozłącz również jest prosty :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Prawda ze banalne ?? i jakie efektowne :)
Klawisze mamy z głowy ale mamy dwa comboBoxy do wyboru portu i prędkości ....


Oczywiście, najlepsza metoda do wyszukania portów COM jak już wiecie to udostępniana przez kontrolkę SerialPort metoda GetPortNames(); i jej używamy w funkcji public ładującej nasz
formularz windows:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


troszeczkę jednak inaczej przypiszemy je do comboboxa może prościej ??

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


no i już możemy wybierać dostępne porty com z comboBoxa :)
Drugi cmb przechowuje szybkość transmisji baudrate można też zrobić go na 1000 sposobów
ale my zrobimy tu możliwie najprościej czyli :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


tylko te trzy na razie ale możecie dopisać więcej :) w naszej funkcji public jeszcze tylko zdefiniujemy parę rzeczy i lecimy dalej :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Cała funkcja wygląda następująco:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


No i pozostaje nam tylko napisać funkcję odbioru danych z mikrokontrolera co tez nie jest jakieś tam specjalnie trudne choć tak wygląda
zatem do dzieła :

Dwuklikiem na kontrolce SerialPort generujemy uchwyt i wpisujemy w nim kod całość wygląda następująco:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


celowo kodu nie opiszę szerzej , ale jak widać jest jasny prawda ??

i tymczasem mamy program gotowy : a cały prezentuje się tak:


Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


No to program na PC gotowy ... kilka rzeczy zostawiłem nie jasnych , nie udostępnię też gotowego rozwiązania , a jedynie
skompilowany kod .... który macie w załączniku ... z powodów które znacie ....

Czas zając sie kodem dla mikrokontrolera , który współpracuje w w/w programem , a powstał w języku C i środowisku CCS5 dla
popularnego Launchpada o którym tez możecie sobie poczytać u mnie na stronie, kod nie jest skomplikowany i nie wymaga wyjaśnień
a zdecydowałem się na LP dlatego że płytka była pod ręką , a MCU MSP430G2x53 zawiera wbudowany czujnik temperatury , wiec nie musiałem szukać DS18B20 czy LM35.

Kod prezentuje się następująco:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I na tą chwilę życzę miłej zabawy wszystkim ....


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 22:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 maja 2012
Posty: 296
Lokalizacja: Chebzie Dolne
Zbananowany użytkownik

Pomógł: 6

No to piszmy dalej.
Przygotowałem prostą apke w c# do sterowania dwoma diodami na zestawie ATB. Kod potrzebny do skonfigurowania portu przedstawił Sun powyżej więc tak nie bardzo jest co do tłumaczenia co tam się znajduje.
Apka sie prezentuje jak poniżej.

Obrazek


Tak więc widzimy dwa comboBoxy w jednym wybieramy port COM a w drugim prędkość BaudRate. Poniżej mamy dwa buttony do otwarcia portu jak i zamknięcia.
Wstawiłem również dwa buttony do zapalania diod na naszym zestawie ATB.

button1
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


button2
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jeśli chodzi o kod w procku to robimy najprostszą formę komunikacji. Jak odebrać czy wysłać pojedyncze znaki kod znajdziemy w DS procka.
Aha diody są podłączone pod PC7 i PC6.
Pętla główna while();
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ot taka najprostsza forma komunikacji.

Poniżej filmik jak działa aplikacja (sorki za jakość), oraz plik exe oraz hex dla atmegi32.


Autor postu otrzymał pochwałę

Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
Inspekcja TV kanalizacji
Programowanie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 00:39 
Offline
Użytkownik

Dołączył(a): 10 paź 2012
Posty: 123
Pomógł: 10

SunRiver napisał(a):
Heh no w sumie nie wiem jak to się stało że ten istotny temat
został pominięty więc czas to nadrobić...

Witam.
No tak do końca nie został pominięty :)
w tym wątku:
http://forum.atnel.pl/topic1226.html
kolega MichalXY również bardzo ładnie zaprezentował m.in. komunikacje po RS-ie z poziomu C#.
Tak na marginesie to tworzy się tu na forum bardzo fajne kompendium dotyczące łączenia aplikacji windowsowych w C#
z mikrokontrolerami. Dziękuję wszystkim którym chce się to opisywać.
Pozdrawiam
Jarek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 00:42 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

jark napisał(a):
Dziękuję wszystkim którym chce się to opisywać.


Ja również dołączam się do podziękowań a warto - bo koledzy poświęcają KAWAŁ własnego czasu - skąd ja to znam. A jestem niezmiernie wdzięczny bo sam będę się dzięki temu uczył C# .....

przy okazji dziękuję za promocję mojej książki ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 08:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

Aby nie było niedomówień – nie analizowałem kodu tych programów ani nie znam Visuala C++. Wprawdzie sporo lat temu coś tam kombinowałem, ale nic z tego nie pamiętam. Ale kiedyś się za niego zabiorę – teraz „męczę: się z C dla AVR.
Ale do rzeczy – interesuje mnie możliwość zapisu danych np. z dataloga na dysk, ale od razu do pliku i pola tekstowego. Widziałbym to tak – Amelek wysyła jakiś rekord do komputera, tam zostaje wyświetlony w oknie np. memo (nazwa z DELPHI ), a równocześnie następuje zapis do pliku na dysku. Następny rekord operacja się powtarza. Kiedyś cos takiego podobnego pisałem w DELPHI, – ale oparte na bazach danych. Tam każdy rekord był automatycznie zapamiętywany na dysku. Do pliku zapisywało się w pętli – pobranie z bazy, zapis w oknie edycji, zapis do pliku. To było dowolne tzn. jak ktoś chciał mieć plik. Ale z bazami to problem – zresztą ostatni program który pisałem na Delphi był bardzo dawno temu. Obecnie nie za bardzo mam na to czas ( czytaj chęci). Inna sprawa to ta, że pisałem w DELPHI 2 bo mam na nią licencję i mogę sprzedawać oprogramowanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 09:07 

Pomógł: 0

Pytanie z zupełnie innej beczki, jest szansa na "kurs" przy wykorzystaniu TCP/IP czyli z drugiej strony nie RS232 tylko LAN?



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 10:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

stachn napisał(a):
nna sprawa to ta, że pisałem w DELPHI 2 bo mam na nią licencję i mogę sprzedawać oprogramowanie.


używając darmowego Visual Studio Express też mozesz sprzedawać oprogramowanie więc nie widzę tu problemu.

rezasurmar napisał(a):
Pytanie z zupełnie innej beczki, jest szansa na "kurs" przy wykorzystaniu TCP/IP czyli z drugiej strony nie RS232 tylko LAN?


Szansa jest ale się jeszcze nad tym zastanowię ....
mirekk36 napisał(a):
przy okazji dziękuję za promocję mojej książki ...


oj tam nic wielkiego ... dlatego będziemy usilnie promować i forum i co się da ....

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 10:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Jak ktoś chce się podciągnąć w C++ to polecam: http://www.youtube.com/user/MinDControlDx/videos
Jest tam sporo na temat czystego C++ jak i też WinApi, SDL.

Odnośnie TCP/IP to polecam rewelacyjny przewodnik: http://www.beej.us/guide/bgnet/output/h ... bgnet.html
Wersja PL, dość stara, nie zawiera np. IPv6: http://www.asawicki.info/Mirror/Beej_s% ... /bgnet.pdf

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 13:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Witam zmagam się z drugim przykładem przedstawionym przez Kolegę SunRiver i napotkałem taki problem że nie rozpoznaje mi zmiennej "port" poza "public RS232Terminal".
Z C# to moja pierwsza przygoda wiec proszę o wyrozumiałość :?
Ewentualna prośba do kolegi SunRiver czy może udostępnić ten projekt do zaimportowania w Visual C# to może łopatologicznie to rozpracuje gdzie leży błąd ;)

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 13:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

kurnachatka napisał(a):
Witam zmagam się z drugim przykładem przedstawionym przez Kolegę SunRiver i napotkałem taki problem że nie rozpoznaje mi zmiennej "port" poza "public RS232Terminal".



Już wiesz jak :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 13:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Cytuj:
Już wiesz jak :)

Dzięki pomogło.
Zmylił mnie ten fragment kodu
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I użyłem nazwy SerialPort.
Dodaje elementy sukcesywnie a więc nie wątpie że jeszcze będę potrzebował pomocy.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 13:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

ot widzisz takie wredne bydle ze mnie i złośliwie porobiłem pułapki na osobników typu copy&paste only :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 14:04 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

SunRiver napisał(a):
złośliwie porobiłem pułapki na osobników typu copy&paste only


:lol: :lol:

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 14:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Cytuj:
ot widzisz takie wredne bydle ze mnie i złośliwie porobiłem pułapki na osobników typu copy&paste only :)

I dobrze trzeba samemu przetrawić kod by sobie go lepiej przyswoić.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 20:48 
Offline
Użytkownik

Dołączył(a): 22 sie 2013
Posty: 64
Pomógł: 1

Jak sprawdzić czy dane zostały wysłane na port COM. Chodzi mi głównie o to ze wysyłam znak na port COM4 na którym jest bluetooth i nie wiem jak sprawdzić czy ten znak doszedł.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2014, o 22:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

Nie chodziło mi o pisanie programów zarobkowo - tym to się już nie bawię od kilku lat. Interesowało mnie tyko zagadnienie zapisu danych zamiast o okna terminala to do pliku. Czy jest taka możliwość w Visual Studio Express.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2014, o 08:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

stachn napisał(a):
Interesowało mnie tyko zagadnienie zapisu danych zamiast o okna terminala to do pliku. Czy jest taka możliwość w Visual Studio Express.


nawet myśląc racjonalnie oczywiście że jest i nie jest to bynajmniej zagadnienie zależne od środowiska czy języka programowania w żaden sposób , a jedynie od programisty ... może w delphi jest gotowy komponent np. WriteToFile , a np w Visualu trzeba sobie napisać , ale nie jest to ani specjalnie skomplikowane , ani trudne :) Jak będzie taka potrzeba to opiszę taką okoliczność ...

Vitor Borba napisał(a):
Jak sprawdzić czy dane zostały wysłane na port COM. Chodzi mi głównie o to ze wysyłam znak na port COM4 na którym jest bluetooth i nie wiem jak sprawdzić czy ten znak doszedł.


sposobów jest kilka ...
1. można sobie odebrać echo
2. można sobie przesłać zwrotnie potwierdzenie
itd...

jak zwykle rozwiązań tyle ilu programistów .

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2014, o 10:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

No i bardzo dobrze - wujek "google" znalazł sporo materiału na temat " WriteToFile ". Częściowo zrozumiałe dla mnie a częściowo nie. Jak na razie dałem sobie z tym spokój bo za dużo do nauki jak na mnie. teraz zapisuje dane na karcie SD bo na microSD nie chce mi działać zapis - 3 karty i klapa a na SD 2 karty i obie obsługuje - ale to nie ten temat. Dlatego zainteresowałem się zapisem na dysk komputera.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2014, o 13:34 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 24 lut 2014
Posty: 16
Pomógł: 1

Bardzo ładnie opisana komunikacja koledzy , prosto i zrozumiale
bez zbędnego ślinotoku i lania wody to mi się podoba miło się czyta.

Ale nie od słodzenia tu jestem pytanko mam a jak z odbiorem konkretnej
sekwencji znaków i wywołaniem np dźwięku ?? Bowiem chciałabym
osiągnąć taki efekt że np na port przychodzi 123 i komputer sygnalizuje mi to dźwiękiem ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2014, o 16:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2012
Posty: 174
Lokalizacja: Gliwice
Pomógł: 19

Taki najprostszy sposób :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2014, o 18:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

można dużo prościej w funkcji odbioru wystarczy dać np:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wszystko zależy co chcesz zrobić.

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2014, o 20:26 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 24 lut 2014
Posty: 16
Pomógł: 1

Dziękuję koledzy za szybkie odpowiedzi w sumie banalne , a się z tym motałam
jak ukończę jeden drobiazg to pokarzę na forum

SunRiver napisał(a):
można dużo prościej w funkcji odbioru wystarczy dać np:Składnia: [ Pobierz ] [ Ukryj ]Składnia: [ Pobierz ] [ Pokaż ]język csharpstring naszeDane = DaneBufforOdbioru;
if (naszeDane == "123") MessageBox.Show("123");
if (naszeDane == "456") MessageBox.Show("456");
if (naszeDane == "789") System.Media.SystemSounds.Hand.Play();
if (naszeDane == "beep") Console.Beep();
GeSHi


To mi bardziej pasuje :) prostsze i można w istocie więcej akcji przypisać , a nawet nie wiedziałam
że można w C# wyświetlać tak prosto okienka z wiadomościami. Wiele jeszcze nauki tego VS C#

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2014, o 22:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Trzeba mieć na uwadze to, że w tych prostych rozwiązaniach jeżeli nie przyjdzie szybko (bądź wcale) znak końca linii (ramki) to aplikacja zostanie zamrożona. Dobrze by było przerzucić odbiór do obsługi timera, lub innego wątku.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2014, o 00:01 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 24 lut 2014
Posty: 16
Pomógł: 1

Oczywiście że na wątkach piszę z użyciem backgroundWorkera i metoda spisuje się bardzo dobrze
nic się nie przycina przynajmniej na razie dane nie lecą szybko bo okresowo co 3 sek

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2014, o 02:05 
Offline
Nowy

Dołączył(a): 12 mar 2014
Posty: 6
Pomógł: 0

Witajcie,

Dawno temu uczyłem się C, teraz męczę AVR z książką Pana Mirka, ale ostatnio dostałem zadanie bojowe, które kosztowało mnie już kilka nocy i nic, za głupi jestem:
- AVR wysyła zapytanie o wartość, np: T (temperatura);
- PC odsyła odpowiedź, np: 27;
Wartości tej temperatury powiedzmy że mam na bieżąco uaktualniane z innej aplikacji w postaci wartości float, zrzutowanych na int.
Doszedłem do etapu, dzięki Waszym poradnikom, że potrafię wysłać terminalem tekst oraz odebrać go i wyświetlić w tej samej aplikacji dzięki zrobionemu ECHO na RS232.
Kłopot zaczyna się właśnie wtedy, gdy mam pytanie z portu, np: T (sam je sobie wysyłam terminalem z poziomu PC) i nie potrafię odpowiedzieć wartością bieżącą (np: "27"). Dodam również, że zapytania będą różne, tzn. T,V,D,S i odsyłane będą różne wartości w przedziale 0-1 lub 0-8000. W jaki sposób mógłbym to ugryźć, żeby po uzyskaniu 1 pytania wysłać odpowiedź, odebrać 2 pytanie i wysłać odpowiedź itd. i utrzymać to w ryzach.

Ratujcie bo we wtorek poleci moja głowa :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2014, o 08:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2012
Posty: 174
Lokalizacja: Gliwice
Pomógł: 19

Cześć,


jeżeli używasz Mirkowych bibliotek to najprościej będzie tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2014, o 10:07 
Offline
Nowy

Dołączył(a): 12 mar 2014
Posty: 6
Pomógł: 0

Dziękuję za szybką podpowiedź, ale chyba źle się wyraziłem.
AVR już wysyła zapytania (inny projekt), ja muszę je odebrać w PC i odpowiedzieć. Pytań będzie około 10-15 powtarzanych w cyklu w celu odświeżania danych. Na ich podstawie AVR coś tam dale wykona.

Sprawa dotyczy więc aplikacji VS C#.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2014, o 11:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2012
Posty: 174
Lokalizacja: Gliwice
Pomógł: 19

W sumie to w C# działa to tak samo. Na jakim etapie jesteś? Odbierasz już dane w PC czy dopiero szukasz kodu do odbierania danych?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 56 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO