Odbiór danych rs232 Bascom

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Odbiór danych rs232 Bascom

Post autor: niveasoft » 04 sty 2021, 20:34

Powinno działać. Pozdrów połowicę ;)
  1. $regfile = "m328pdef.dat"                                   ' specify the used micro
  2. $crystal = 16000000                                          '16MHz
  3. $hwstack = 128
  4. $swstack = 64
  5. $framesize = 128
  6. $baud = 115200
  7.  
  8. Const _valcheck = 1                                         'sprawdzanie poprawnosci konwersji Val()
  9.  
  10. Config Serialin = Buffered , Size = 100
  11.  
  12. Dim Znak As Byte , Dane As String * 60 , Helpb As Byte , N As Byte
  13. Dim My_strings(10) As String * 25 , My_bytes(5) As Byte , Testb As Byte
  14.  
  15. Enable Interrupts
  16.  
  17. Do
  18.  
  19. If Ischarwaiting() > 0 Then
  20.  Znak = Inkey()
  21.  
  22.  Select Case Znak
  23.   Case 10                                                   'otrzymano LF
  24.    Helpb = Split(dane , My_strings(1) , ";")                'dziel string szukajac średników
  25.    For N = 1 To 5
  26.     Testb = Val(my_strings(n))
  27.     If Err = 0 Then My_bytes(n) = Testb
  28.    Next
  29.      'tu w bajtach My_bytes od 1 do 5 masz wartości
  30.      'a w My_strings(6) masz te ostatnia wiadomość
  31.  
  32.    Dane = ""                                                'dane przetworzone, mozna czyścić i czekamy na nowe
  33.  
  34.   Case Else                                                 'kazdy inny od LF znak dodawaj do stringa
  35.    Dane = Dane + Chr(znak)
  36.  End Select
  37.  
  38. End If
  39.  
  40. Loop
  41. End
  42.  
Awatar użytkownika
Stefan_25
Posty: 22
Rejestracja: 04 sty 2021, 18:36

Re: Odbiór danych rs232 Bascom

Post autor: Stefan_25 » 05 sty 2021, 10:40

Witam w nowym dniu.
Niestety kod nie działa chyba że coś ja źle zmataczyłem, dopisałem pare linijek żeby zobaczyć co czyta i wyświetlić to na wyświetlaczu LCD ale niestety klapa.
Do tego mam pytanie, po co jest zmienna "Helpb" skoro nie jest wykorzystywane nigdzie w kodzie ?

  1. regfile = "m32def.dat"
  2. $crystal = 8000000
  3. $hwstack = 128
  4. $swstack = 64
  5. $framesize = 128
  6. $baud = 115200
  7.  
  8. Const _valcheck = 1                                         'sprawdzanie poprawnosci konwersji Val()
  9. Config Serialin = Buffered , Size = 100
  10. Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
  11. Config Lcd = 20 * 4
  12.  
  13. Dim Znak As Byte , Dane As String * 60 , Helpb As Byte , N As Byte
  14. Dim My_strings(10) As String * 25 , My_bytes(5) As Byte , Testb As Byte
  15.  
  16. Enable Interrupts
  17.  
  18. cursor off
  19. cls
  20. wait 1
  21. Do
  22.  
  23. If Ischarwaiting() > 0 Then
  24.  Znak = Inkey()
  25.  
  26.  Select Case Znak
  27.   Case 10                                                   'otrzymano LF
  28.    Helpb = Split(dane , My_strings(1) , ";")                'dziel string szukajac średników
  29.    For N = 1 To 5
  30.     Testb = Val(my_strings(n))
  31.     If Err = 0 Then My_bytes(n) = Testb
  32.    Next
  33.      'tu w bajtach My_bytes od 1 do 5 masz wartości
  34.      'a w My_strings(6) masz te ostatnia wiadomość
  35.  
  36.    Dane = ""                                                'dane przetworzone, mozna czyścić i czekamy na nowe
  37.  
  38.   Case Else                                                 'kazdy inny od LF znak dodawaj do stringa
  39.    Dane = Dane + Chr(znak)
  40.  End Select
  41. End If
  42.  
  43.  
  44. Locate 1 , 1 : Lcd "D1 " ; My_bytes(1)
  45. Locate 2 , 1 : Lcd "D2 " ; my_bytes(2)
  46. Locate 3 , 1 : Lcd "D3 " ; my_bytes(3)
  47. Locate 4 , 1 : Lcd "D4 " ; my_bytes(4)
  48. Locate 1 , 10 : Lcd "D5 " ; my_bytes(5)
  49. Locate 2 , 10 : Lcd "D6 " ; my_strings(6)
  50.  
  51. waitms 500
  52.  
  53. Loop
  54. End
Awatar użytkownika
Pikczu
Posty: 390
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Odbiór danych rs232 Bascom

Post autor: Pikczu » 05 sty 2021, 11:08

helpb możesz zignorować to tylko zmienna na przechowując ilość elementów.
Zobacz do helpa i przeczytaj co ten split robi wtedy zrozumiesz.
https://avrhelp.mcselec.com/
Awatar użytkownika
Stefan_25
Posty: 22
Rejestracja: 04 sty 2021, 18:36

Re: Odbiór danych rs232 Bascom

Post autor: Stefan_25 » 05 sty 2021, 15:06

Doczytałem niemniej jednak nie działa a i czytając pomoc jezyka Basic to się pozmieniało i to dużo,
można powiedzieć że język się nadal rozwija.
Awatar użytkownika
Pikczu
Posty: 390
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Odbiór danych rs232 Bascom

Post autor: Pikczu » 05 sty 2021, 17:34

Niestety nie zbyt mam czas nadal w pracy jestem.
Opisz lepiej bo "nie dziala" to malo info niestety.
Kod jest banalnie prosty.
Awatar użytkownika
Stefan_25
Posty: 22
Rejestracja: 04 sty 2021, 18:36

Re: Odbiór danych rs232 Bascom

Post autor: Stefan_25 » 05 sty 2021, 18:03

Nie wiem co mam opisać po prostu bez owijania w bawełnę przepisałem program ze strony dołożyłem parę linijek celem
sprawdzenia co odbiera zgodnie z instrukcją jaka jest w opisie i niestety ale program nie działa ,nic nie odbiera.

Swoją drogą już kiedyś poległem na odbieraniu danych z RS , krótko mówiąc położyłem lache na to i znalazłem inne wyjście.
Ponieważ tworzyłem urządzenia więc w inny sposób rozwiązałem sposób komunikacji/informacji.

W tym przypadku próbuje podłączyć urządzenie do istniejącej już instalacji która się komunikuje przez konwerter USB "CH340" i "FT232R"
wypluwając z siebie dane RS232
Dane można przechwycić dowolnym terminalem ale chcę żeby Atmega32 je odbierała zrobiła swoje i odsyłała z powrotem.
O ile wysyłanie jest banalnie proste to odbieranie jest cholernie trudne, przynajmniej dla mnie.
Program w Atmedze nie może się zatrzymać i czekać na dane musi to zrobić w przerwaniu.
Męczę się z tym dziś już trzeci dzień i niestety kolejna porażka po prostu nie rozumie jak odbierać dane z portu RS.
Awatar użytkownika
Pikczu
Posty: 390
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Odbiór danych rs232 Bascom

Post autor: Pikczu » 05 sty 2021, 20:11

Męczę się z tym dziś już trzeci dzień i niestety kolejna porażka po prostu nie rozumie jak odbierać dane z portu RS.
Trzy dni???
Trzy tygodnie siedziałem nad 4 liniakami w asemblerze, przeczytałem 2 książki i setki stron internetowych,do tego watki na forach i dziesiątki kodów testowych.
Tylko po to żeby zrozumieć zagadnienie.

Od 6 miesięcy projektuje urządzenie- dobieram elementy czytam pdf po kilka godzin dziennie.
A ty po trzech dniach się poddajesz ??

Na forum jest bardzooo dużo przykładów wręcz gotowców.
Napisanych czy przez Bartka czy prze zemnie.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Odbiór danych rs232 Bascom

Post autor: Jacek » 05 sty 2021, 20:28

Witam - jeżeli mogę coś powiedzieć to Paweł i Bartek nauczyli mnie komunikacji po rs485 możesz zobaczyć moduł sterujący miodarki w połączeniu z modułem wykonawczym https://www.youtube.com/watch?v=JawPSNWF_pQ https://www.youtube.com/watch?v=I3k1Z6O-IaU.
pozdrawiam Jacek.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Odbiór danych rs232 Bascom

Post autor: niveasoft » 05 sty 2021, 20:37

Nie spie po nocach i czytam książki kupione na Helionie a rano robię sobie kawę i obiecuję doczytać resztę....Jak dasz za książkę 89zł albo więcej to myślisz że kupujesz wiedzę. Co ciekawe to się zwraca. Mogę czasem coś doradzić :D
@pikczu ma rację.... albo Cie to interesuje albo tylko epizod żeby coś zbudować to pomożemy, że nie we wszystkim.
Awatar użytkownika
Stefan_25
Posty: 22
Rejestracja: 04 sty 2021, 18:36

Re: Odbiór danych rs232 Bascom

Post autor: Stefan_25 » 05 sty 2021, 20:57

Rozumie i dziękuję za wszelką pomoc, o ile radzę sobie z projektami które robię/wykonuję oczywiście nie handlowo a na zasadzie hobbystycznej , mam prace główna z czego utrzymuję rodzine.
Nie mogę nijak pojąć cholernej komunikacji po RS , domyślam się że było by prościej to zrobić po I2C czy SPI ale to urządzenie nie posiada takowego więc jestem zmuszony do tego by to opanować.
No cóż jak to mówią przedmówcy trzeba czasu by to zrobić lub projekt wrzucić między książki , nikt nie będzie siedział nad komunikacją pół roku.
Jeszcze raz dziękuje za okazaną pomoc.
ODPOWIEDZ