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



Teraz jest 25 kwi 2024, o 10:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 21 cze 2014, o 18:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Witam ,napisałem prosty Terminal do komunikacji z LCD 16x2

Obrazek

Działa poprawnie ,ale przesyła ciągły string max 32 znaków. (szwankuje jedynie dolna linia)

Jak rozbić to na dwie linie po 16 znaków???

Próbowałem za pomocą 2 oddzielnych richtextów ,ale nie działało tak
jakbym chciał ,wolę pozostać przy jednym.

Próbowałem wyrzucić znaki za pomocą przesunięć bitowych ,ale kompilator
odmawia użycia << w zmiennej String.

Obrazek

Założenia do działania:

1) Przesyłam pierwsze 16 znaków (górna linia)
2) Przesyłam komendę ,uP AVR wychwytuje Eventa ,w którym
jest funkcja locate(2,0) - skok do drugiej linii
3) przesyłam kolejne 16 znaków z terminala ( te w dolnej linii)

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



Myślałem ,że będzie proste ,ale kręcę się w kółko od kilku dni.


Może ktoś z bardziej doświadczonych kolegów ma jakiś pomysł.

_________________
sig off ;(



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

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

A może wie ktoś jak zamienić string na char? ,bo wrzuciłbym go do tabeli ,nie wiem to już mój ostatni pomysł.


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



kompilator wyrzuca błąd przy konwersji String.ToCharArray(text , znaki);

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2014, o 19:58 
Offline
Użytkownik
Avatar użytkownika

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

np tak :

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


Autor postu otrzymał pochwałę

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2014, o 22:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Troszkę pomogło ruszyła konwersja.

I jak tu potem nie nazwać Cię mistrzem Sun ;) ,dzięki.


Niestety nie chce mi tego wysłać w funkcji serialPort1.WriteLine(znaki[a]);

Zmodyfikowany kod poniżej:

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



Okno z błędem:

Obrazek

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2014, o 00:57 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Cześć mac34 wywala ci błąd bo próbujesz wysłać zmienną znakową a argumentem metody writeline jest łańcuch tekstowy.
Ogólnie do twojego problemu podszedł bym innym sposobem,otóż wykorzystałbym to że kontrolka richtextbox posiada coś takiego jak linie czyli innymi słowy tablica łańcuchów gdzie indeks tej tablicy to numer linii.

przykład jak ja bym to rozpykał

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


Jakby co to pisałem na sucho bo teraz mi się nie chciało wyjmować całego sprzętu na biurko, jedynie testowałem to na zwykłych textboxach. :)


Jeśli będziesz chciał korzystać ze swojego sposobu to zapoznaj się z czymś takim jak StringBuilder, to jest taki kombajn do tworzenia łańcuchów tekstowych

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




Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2014, o 07:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Hey!

Jak juz masz swoj Char [] znaki (lub jakkolwiek sobie to nazwiesz :) ) to mozesz uzyc http://msdn.microsoft.com/en-us/library/1050fs1h(v=vs.110).aspxdo wysylania okreslonej ilosci

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


To powinno ladnie i szybko rozwiazac Twoj problem :) Daj znac jak Ci poszlo!


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2014, o 10:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Ok ,dzięki koledzy. Dopiero uczę się w C# (wcześniej tylko Eclipse i AVR) ,więc lekkie różnice są.

No to mam już ze 3 rozwiązania ,wypróbuję wszystkie i wybiorę najlepsze.

Samemu jeszcze udało mi się wykombinować takie coś ,trochę na raty bo wysyłam po połówce ,ale kompilacja poszła :

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



Jak przetestuję wszystkie rozwiązania to dam znać ,dzięki za podpowiedzi.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2014, o 10:56 
Offline
Użytkownik
Avatar użytkownika

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

mac34 napisał(a):
Dopiero uczę się w C# (wcześniej tylko Eclipse i AVR) ,więc lekkie różnice są.


w zasadzie to te różnice wcale nie są takie lekkie widzisz C# ma mniej wspólnego z C niż ci się wydaje :)
łatwo zrozumieć o co chodzi gdy się przyjrzymy lekko historii powstania :) gdzieś o tym pisałem i cytując samego
siebie trafiając w sedno istoty:

" W zasadzie na podwalinach C powstało wiele języków. Możemy powiedzieć bez zbędnej przesady, że C++ i Obiective C to wyrafinowane potomstwo Języka C, a C# to dziecko sąsiada, który często bywa w domu :) "

a teraz już czas na ulubiony kod :

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



Miłej niedzieli i programowania ....

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2014, o 11:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Przetestowałem ,mój sposób nie był jednak za dobry ,najlepsze okazało się rozwiązanie kolegi RafPe.

kod poniżej:

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


,zmyliła mnie jedynie 2 linia do wysłania

serialPort1.Write(znaki, 15, 16); ,powinna zaczynać się od 16 ,a kończyć na 32.

,bardzo podoba mi się ten sposób ,jest prosty i skuteczny ,dzięki.


Tak sobie myślę mogę chyba nawet wyrzucić z kodu zmienną (a) i pętle for bo są niepotrzebne
,musiałbym jedynie dodać serialPort1.Write("r\n"); ,bo polecenie serialPort1.Write ,nie dodaje na końcu znaku nowej linii w odróżnieniu do
serialPort1.WriteLine i przez to nie zawsze by wychwytywało eventa.

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


Na końcu okazało się takie proste ,a Ja kombinowałem jak koń pod górę ;)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2014, o 15:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Hey mac34!

Ciesze sie , ze Ci pmoglo.

Co do tego typo z 15 zamiast 16 to nie bylem pewny a pisalem na szybko :)

_________________
sig off ;(



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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