Strona 5 z 9

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 18:49
autor: Henryk
Witaj Bartek :D
Nie zawsze potrafię wyrazić słowami co w myślach się kłębi ;)
Dziękuje za podpowiedź , za chwilę przetestuję .
Baskoma mam 2.0.8.1 kompiluje moje pomysły bez problemu :D to co ja napisałem również działa w takiej zmodyfikowanej formie .
  1.  $regfile = "m8def.dat"
  2.    $crystal = 8000000
  3.    $hwstack = 40
  4.    $swstack = 16
  5.     $framesize = 32
  6.     $baud = 1200
  7.   'Config Serialout = Buffered , Size = 64
  8.   Dim X As Byte , Tab1(19) As Byte , Tab2(6) As Byte
  9.  
  10.   Tab1(1) = 1       'xxx wstawię odpowiednie wartości
  11.   Tab1(2) = 1       'xxx
  12.   Tab1(3) = 1       'xxx
  13.   Tab1(4) = 1       '
  14.   Tab1(5) = 1       '
  15.   Tab1(6) = 1       '
  16.   Tab1(7) = 1       '
  17.   Tab1(8) = 1       '
  18.   Tab1(9) = 1       'xxx
  19.   Tab1(10) = 2       '
  20.   Tab1(11) = 2       '
  21.   Tab1(12) = 2       '
  22.   Tab1(13) = 2       '
  23.   Tab1(14) = 2       '
  24.   Tab1(15) = 2       '
  25.   Tab1(16) = 0       '
  26.   Tab1(17) = 0       '
  27.   Tab1(18) = 6       'xxx
  28.   X = Crc8(tab1(1) , 18)
  29.   Tab1(19) = X
  30.  
  31.   Tab2(1) =1       'xxx
  32.   Tab2(2) = 1       '
  33.   Tab2(3) = 1      '
  34.   Tab2(4) = 11       '
  35.   Tab2(5) = 33       'xxx
  36.   X = Crc8(tab2(1) , 5)
  37.   Tab2(6) = X
  38.  
  39.     Do
  40.  
  41.      Printbin Tab1(1) ; Tab1(2) ; Tab1(3) ; Tab1(4) ; Tab1(5) ; Tab1(6) ; Tab1(7) ; Tab1(8) ; Tab1(9) ; Tab1(10) ; Tab1(11) ; Tab1(12) ; Tab1(13) ; Tab1(14) ; Tab1(15) ; Tab1(16) ; Tab1(17) ; Tab1(18) ; Tab1(19)
  42.       Waitms 300
  43.        Printbin Tab2(1) ; Tab2(2) ; Tab2(3) ; Tab2(4) ; Tab2(5) ; Tab2(6)
  44.        Waitms 300
  45.  
  46.      Loop
  47.     End
musiałem tylko pozbyć się bufora , ale mniejsza z tym , transmisja śmiga za szybko względem oryginalnej .
Ćwiczę umysł dalej ;)

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 19:40
autor: niveasoft
No forma na pewno musiała być zmodyfikowana. Po prostu mój jak spodziewa sie tablicy to nie nadasz czegoś takiego i to na pewno się nie kompiluje:
  1. Print Tab1 ; Waitms 100 ; Tab2
bo Tab1 i Tab2 to tablice i musisz jakiś indeks podać.
Tylko dlatego podejrzewałem jakiś inny Bascom bo nowe nie pozwalają na takie błędy.

Ale ja nie o tym.
Do takich zadań, czytaj "rozkminianie" to, jeśli masz jakieś wolne 40zł kupic takie cuś LINK

To nie dość że pozwala analizować transmisję/otrzymane zera i jedynki, ale tez pokazuje dokładny czas pomiędzy ramkami. To naprawdę ułatwia coś co może być mordęgą lub z takim urządzonkiem dużo łatwiejsze.
Przykładowo zerkasz na jakiś nadany Bajt i jego czas.. dzielisz sekundę przez ten czas, mnożysz x 8 i masz bits/s czyli Baudrate.
Potem możesz podejrzeć czas przerwy pomiędzy ramkami...itd...
Mnie przydał się kilkakrotnie.

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:03
autor: Pikczu
Henryk, ale ten zapis nie ma sensu:
Printbin Tab1(1) ; Tab1(2) ; Tab1(3) ; Tab1(4) ; Tab1(5) ; Tab1(6) ; Tab1(7) ; Tab1(8) ; Tab1(9) ; Tab1(10) ; Tab1(11) ; Tab1(12) ; Tab1(13) ; Tab1(14) ; Tab1(15) ; Tab1(16) ; Tab1(17) ; Tab1(18) ; Tab1(19)
Bo to wysyła całą tablice za każdym razem starująć od kolejnej komórki.
Czyli wynik wygląda tak jak na zdjęciu poniżej.
przy print bin daje się przecinek i liczbę komórek do wysłania Jak pisał Bartek.

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:17
autor: Henryk
Jak nie znajdę innego rozwiązania , to będę musiał coś takiego nabyć ;)

Myślę , że problem leży w interpretacji tego co terminal pokazuje , np .wysyłam znak "M" chr(77) i zmienną N ..1 bajt ...
  1.   N = 123
  2.     Do
  3.     Print Chr(77) ; N;
  4.      Waitms 400
  5.     Print Chr(77) ;
  6.      Waitms 400
  7.   Loop
  8.     End
Pytanie : dlaczego zmienna N jest rozbita na trzy elementy :?:
test.JPG

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:18
autor: Henryk
Pikczu pisze:
09 sty 2019, 20:03
Henryk, ale ten zapis nie ma sensu:
Printbin Tab1(1) ; Tab1(2) ; Tab1(3) ; Tab1(4) ; Tab1(5) ; Tab1(6) ; Tab1(7) ; Tab1(8) ; Tab1(9) ; Tab1(10) ; Tab1(11) ; Tab1(12) ; Tab1(13) ; Tab1(14) ; Tab1(15) ; Tab1(16) ; Tab1(17) ; Tab1(18) ; Tab1(19)
Bo to wysyła całą tablice za każdym razem starująć od kolejnej komórki.
Czyli wynik wygląda tak jak na zdjęciu poniżej.
przy print bin daje się przecinek i liczbę komórek do wysłania Jak pisał Bartek.
Pikaczu , ćwiczę i kombinuję , wiesz jak to bywa z amatorami ;)

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:22
autor: Pikczu
Jedyna droga żeby zostać profesjonalistą :)

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:25
autor: niveasoft
"N" jest rozbite na trzy elementy tak samo jak ma trzy litery kiedy je teraz czytasz 123 dlatego że użyłeś "PRINT" czyli wersji "human readable" czyli takiej żeby człowiek mógł przeczytać.

Printbin to skrót od "Printuj binarnie". Printbin wyśle 123 jako jeden bajt bo w bajcie można pomieścić od 0 do 255.
Na dodatek możliwe że zobaczysz " 123 173 07B 01111011 { (left/opening brace)"
A jeśli czasem inna liczba to na to mówią krzaki :D

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:32
autor: Henryk
Jeśli teraz użyję dla wartości odczytanej z terminala.... Printbin ...poznam faktyczną wartość takiej pozycji :?:

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:41
autor: niveasoft
Nie. Co jeśli wartością jest 1, 0 lub 10? czyli tylko jedna lub dwie litery?

Inaczej Henryku.
Wciskasz w Bascom F1 i w Index wpisujesz ASCII chart.
Żadna wartość poniżej 32 (co oznacza spację, puste miejsce) się w terminalu nie wyświetla.
Prawie każdy plik fontów zaczyna się nie od zera a od offsetu 32 bo po prostu literki które się da czytać to się zaczynają od 32.
Te wartości poniżej służą do kontroli różnych rzeczy. Dopiero wartość 48 oznacza zero...

Litera duża A ma wartość 65. Żeby napisac w terminalu ABCD trzeba wysłać 65,66,67 i 68

Tylko czasem nie chodzi o transmisję znaków dla ludzi. Maszyny tego nie potrzebują. Maszyny potrafią właśnie poczytać sobie binarnie i 1 dla nich znaczy 1.
Tu właśnie chodzi o to czy w tym Twoim systemie komunikacja jest jawna/ascii albo też jawna ale najprostsza binarna.

Binarną stosuje się do szybszego przesyłu danych, ale też podglądać trzeba inaczej.

Re: Transmisja danych RS485_RS422

: 09 sty 2019, 20:49
autor: Henryk
Czyli dane odczytane z terminala niczego konkretnego mi nie dadzą , jedynie mogę sobie popatrzeć gdzie jakaś tam zmienna/wartość jest usadowiona w ciągu danych .