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



Teraz jest 3 lis 2024, o 14:33


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 19 cze 2016, o 08:56 
Offline
Nowy

Dołączył(a): 17 mar 2016
Posty: 24
Pomógł: 0

Cześć!

Potrzebuję zrobić coś podobnego do terminala (np. putty), niestety napotkałem po drodze na kilka problemów:

Aplikację tworzę w Visual Studio C# 2015, oto kod:

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


Problem polega na tym, że w mojej aplikacji odebrane dane są, że tak powiem, trochę rozwalone:

Obrazek

Wstawiam kod do mojego programu z ATmegi8:

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


No i jeszcze jedna rzecz mnie dziwi, a mianowicie, procek wysyła dane jedynie wtedy, kiedy programator jest podłączony do komputera (oczywiście jest zasilany zewnętrznie).
Liczę na waszą pomoc! :)
Dzięki wielkie!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 10:11 
Offline
Użytkownik

Dołączył(a): 08 lut 2015
Posty: 132
Pomógł: 4

Są rozwalone ponieważ używasz metody ReadExisting, która wczytuje do zmiennej aktualną ramkę danych, którą wyśle sterownik. Skoro w kodzie procesora używasz znaków nowej lini i return carriage \r \n, to nie widzę sensu kolejnego używania znaku nowej lini w metodzie wyświetlającej tekst w polu tekstowym, a dokładniej:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

zobacz czy to pomoże.
Dodatkowo tu masz przykładowe programy typu "Serial data logger", które robią to samo co Ty chcesz zrobić. Proponuję poczytać trochę tego kodu, który jest zawarty w tych linkach:
http://www.codeproject.com/Articles/75770/Basic-serial-port-listening-application
http://www.vidnis.com/2013/02/serial-data-to-text-file-using-c.html


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 11:55 
Offline
Nowy

Dołączył(a): 17 mar 2016
Posty: 24
Pomógł: 0

Faktycznie, głupi błąd. Natomiast nie rozumiem jednej rzeczy: dlaczego tam mi się rozjechała tylko część tych "0 i 1", a nie wszystko, w końcu dane były wystawiane co chwilę, dlatego rozumiem, że po każdych 8 bitach wysłanych danych:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

lecz się tak nie stało.

Chodzi o to, że bym musiał wywalić z programu z Atmegi te wszystkie "uartputc" i wystawiać jedynie dane "High" i "Low", a jeśli faktycznie próbuję kombinować z tym Rich.AppendText('\n'), to nie dodaje mi nowych linii, tak jak bym sobie tego życzył. :(
Dodatkowo jeśli usunę '\n' wg. Twoich zaleceń to faktycznie działa prawie tak jak miało - z małym wyjątkiem - dalej pojawiają się jakieś dodatkowe, puste linie, nie wiem dlaczego:
Obrazek

Aczkolwiek tak jak napisałem, potrzebuję dodawać nowe linie w Visualu - te z Atmegi wyrzuciłem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 13:04 
Offline
Użytkownik

Dołączył(a): 08 lut 2015
Posty: 132
Pomógł: 4

Dane przez UART nie są wysyłane w całości, tylko fragmentami, tzn. Twoja ramka danych nie jest wysyłana od A do Z ciurkiem tylko jest podzielona na części w zależności od ilości wysyłanych pakietów. Nie mam za bardzo czasu żeby to skompilować i zobaczyć czy działa, ale proponuję Ci w takim razie utworzenie Twojej ramki danych wysyłanej w takiej postaci:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Następnie w zdarzeniu odbioru zamieniasz Metodę ReadExcisting odczytującą tylko to co zostało aktualnie wysłane przez procesor na metodę ReadLine, która będzie czytała dane czekając na pojawienie się znaku nowej linii \n i dopiero przypiszę bufor to Twojego stringa DataIn:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wtedy możesz wyświetlać swoje dane tak jak napisałeś z wykorzystaniem znaku nowej linii:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Możesz także spróbować zakończyć swoją ramkę danych, którą wysyłasz z procesora na znakiem nowej linii lub jakąś inną literą
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Wtedy możesz wyświetlać swoje dane tak jak napisałeś z wykorzystaniem znaku nowej linii:
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 to nie zadziała to być może ktoś inny Ci pomoże, bo tak jak mówię nie mam obecnie czasu załączyć kompilatora :)



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: 4 ] 

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO