Strona 5 z 9
Re: Transmisja danych RS485_RS422
: 09 sty 2019, 18:49
autor: Henryk
Witaj Bartek
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
to co ja napisałem również działa w takiej zmodyfikowanej formie .
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 1200
'Config Serialout = Buffered , Size = 64
Dim X As Byte , Tab1(19) As Byte , Tab2(6) As Byte
Tab1(1) = 1 'xxx wstawię odpowiednie wartości
Tab1(2) = 1 'xxx
Tab1(3) = 1 'xxx
Tab1(4) = 1 '
Tab1(5) = 1 '
Tab1(6) = 1 '
Tab1(7) = 1 '
Tab1(8) = 1 '
Tab1(9) = 1 'xxx
Tab1(10) = 2 '
Tab1(11) = 2 '
Tab1(12) = 2 '
Tab1(13) = 2 '
Tab1(14) = 2 '
Tab1(15) = 2 '
Tab1(16) = 0 '
Tab1(17) = 0 '
Tab1(18) = 6 'xxx
X = Crc8(tab1(1) , 18)
Tab1(19) = X
Tab2(1) =1 'xxx
Tab2(2) = 1 '
Tab2(3) = 1 '
Tab2(4) = 11 '
Tab2(5) = 33 'xxx
X = Crc8(tab2(1) , 5)
Tab2(6) = X
Do
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)
Waitms 300
Printbin Tab2(1) ; Tab2(2) ; Tab2(3) ; Tab2(4) ; Tab2(5) ; Tab2(6)
Waitms 300
Loop
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:
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 ...
N = 123
Do
Print Chr(77) ; N;
Waitms 400
Print Chr(77) ;
Waitms 400
Loop
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
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 .