1 (edytowany przez xadek 2014-06-08 21:57:31)

Temat: RS 232 wysłanie danych

Witam
Napisałem sobie program na procesor atmega8 który odbiera dane w postaci jednego bajtu i odpowiednio zapala diody. Tak że 11111111 gasi wszystkie a 00000000 zapala wszystkie. Każdy bit to jedna dioda.  Moje pytanie brzmi jak wysłać z openwrt jakikolwiek bajt poprzez rs232 . Próbowałem przez

echo -e "\x01\" > /dev/ttyUSB0

ale niestety nie działa. Aczkolwiek  gdy uruchomię  picocom i  wpisuje wartości w postaci dec od 0 do 255 działa. Dodam że korzystał z przejściówki usb -> ft232rl. Jest jakieś polecenia które mogę użyć w linii poleceń do wysłania danych  ?

2

Odp: RS 232 wysłanie danych

spróbuj z

echo -ne ...

3

Odp: RS 232 wysłanie danych

niestety również nie działa

4

Odp: RS 232 wysłanie danych

"\x01"

Bez tego ostatniego \. Ty chcesz wysłać liczbę binarną czy kod ascii jak w picocomie robisz?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: RS 232 wysłanie danych

Tak oczywiście bez ostatniego \ wpisuje( wkradł się błąd w poście 1 ). Chcę wysłać liczbę binarną.

6

Odp: RS 232 wysłanie danych

No to tyle. echo jest dobre do tego.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: RS 232 wysłanie danych

Cóż ale nie działa echo .

8

Odp: RS 232 wysłanie danych

Pewnie że działa. Przekieruj sobie do pliku i zobaczysz.

Czy w ogóle ustawiłeś np. prędkość transmisji po serialu?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: RS 232 wysłanie danych

Tak ustawiłem. Gdy wysyłam to na port poprzez  com diody się nie zapalają. Natomiast gdy wyślę to poprzez picocomie wszystko śmiga. Napisałem też program w Delphi i jak wysyłam liczbę binarną działa.

10

Odp: RS 232 wysłanie danych

PS. Jak wysyłasz liczbę binarną przez picocoma?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: RS 232 wysłanie danych

wpisuje ją w postaci dec np 255

12

Odp: RS 232 wysłanie danych

No to kody ascii wysyłasz...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: RS 232 wysłanie danych

Czyli powinno działać np ?

echo  "0" > /dev/ttyUSB0

14

Odp: RS 232 wysłanie danych

Wysyłanie danych w postaci jednego bajtu to niezbyt dobry pomysł - wystarczy byle śmieć i zmieni ci stan.
Ja robiłem coś takiego:
echo -n -e "B00000001E\r" >/dev/ttyUSB0
Oczywiście w procku odczytuję całą linię i sprawdzam, czy na odpowiednich pozycjach są znaki B i E (od begin, end) i pomiędzy nimi tylko zera lub jedynki i dopiero wtedy podejmowane jest działanie.
Ponieważ zdarzało się, że złapało jakiegoś śmiecia, zrobiłem tak:
echo -n -e "\rB00000001E\r" >/dev/ttyUSB0
Dzięki temu najpierw jest zakończana linia z ewentualnym śmieciem (i ignorowana przez procek) a następnie właściwe dane.

15

Odp: RS 232 wysłanie danych

Niezły narzut - do pobrania jednego bajtu informacji potrzebujesz wysłać ich aż... 11!
To nie lepiej było dodać bit kontroli lub kolejny bajt z odwróconymi bitami?

16

Odp: RS 232 wysłanie danych

Na razie program jest napisany aby odczytywał dane z  port i zapisywał do zmiennej byte. rozwiązanie takie jest tymczasowe gdyż chcę ogarnąć komunikację pomiędzy openwrt a UC docelowo oczywiście będzie całkiem inny Protokół komunikacyjny.

17

Odp: RS 232 wysłanie danych

W moim przypadku nie ma to żadnego znaczenia - dane są wysyłane stosunkowo rzadko, a rss-232 jest na tyle szybki, że... nawet nie chce mi się liczyć jak szybko mógłbym zmieniać stany. Z resztą to tylko przykład - tak naprawdę wysyłam tam więcej rzeczy - komendy są bardziej skomplikowane.