Firmata

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
lognck
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2011. október 30. vasárnap, 6:00

Firmata

HozzászólásSzerző: lognck » 2011. október 31. hétfő, 21:44

Sziasztok

ha vki képben van a firmata üzenet felépítéssel és el tudná magyarázni egy egyszerű gyermeki léleknek esetleg egy-két példával...

mondjuk ha
FIRMATA_STRING-et kellene beküldeni (pl: "abc") akkor mit vár?
A másik egy (parancs + adat) üzenet lenne erre nem tudom mi a megfelelő forma (SYSEX_START? ) Ez hogy néz ki mondjuk ha ezt szeretném beküldeni ( a + 7A,8,6,1)

A cél az arduino-t interface-nek használni bármilyen oprendszer alatt
sima ascii parancsokkal ez egyáltalán nem gond, a probléma ott van ha parancsot akarok adni neki és utána le akarok tuszkolni adatot is a torkán. Elvileg erre lenne a firmata ami egy egyszerűsített MIDI bázisú cucc. Itt akadtam el.

nagyon köszönöm.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9698
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2011. október 31. hétfő, 23:01


Avatar
lognck
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2011. október 30. vasárnap, 6:00

HozzászólásSzerző: lognck » 2011. november 1. kedd, 12:35

hemm köszi kellett volna írnom hogy idáig eljutottam :)
akkor átfogalmazom, így kell kinéznie az a,b,c-nek ?

0xF0 Start sysex
0xF1 String mode
0x61 a
0x62 b
0x63 c
0xF7 End sysex

ha csak simán némi adatot akarok küldeni meyik a megfelelő message típus?

köszi

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3174
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2011. november 1. kedd, 13:33

Válaszd a: Visual Basic-et az a legkönnyebb!
http://www.acraigie.com/programming/fir ... fault.html

8)

Avatar
Gerifield
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2011. szeptember 19. hétfő, 6:00

HozzászólásSzerző: Gerifield » 2011. november 1. kedd, 13:38

Én az arduinot simán a soros kommunikációval vezérlem, a gépen lévő python kódból.

Pl most ledeket vezéreltem pwm-el, amihez ilyesmi üzeneteket küldetm:
r255
g34
b10

-> Az arduino az első karaktert nézi, majd utána attól függően, hogy mi, olvassa a többit.

De ugyan ezt lehetne szebben megcsinálni, ha mondjuk ;-ig vagy \n-ig olvasna és összefűzné a karaktereket, majd azt dolgozná fel.

Én inkább írok egy rá egy kódot, mint a firmata, biztosabb és egyszerűbb. :)

Avatar
lognck
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2011. október 30. vasárnap, 6:00

HozzászólásSzerző: lognck » 2011. november 1. kedd, 16:43

kapu48 írta:Válaszd a: Visual Basic-et az a legkönnyebb!
http://www.acraigie.com/programming/fir ... fault.html

8)

inkább a halál mint a VB :P :D láttam már ezt köszi

@Gerifield

oké én is megpróbáltam ezt az utat, a fő gond ott jelentkezett, a Serial.read()-ból érkező stream-et hogy szeparálom ha több cucc jön és lelassul mint a dög

pár példa:

utasítás: "b"
b = blink
(ha itt arduino belső metódusát hívom meg nem gond hiszem ott definiálom melyik ledet, milyen időtartamban)

irhatom így is:
utasítás :"b13100"
(a belső metódus nem "tud" semmit minden a szükséges infót az utasításból kap. Feldarabolom egy tömb-be és kész
b = blink, 13= led, 100 milis

a gond ott volt hogy az utasítások összefolytak. Megadhatom hogy minden bejövő utasítás 5 karakter hosszú lehet vagy a message library-ban (és a többi hasonlóban) az utasítások szeparálására a carriageReturn (CR, 13..etc) van, vagy a kettő keveréke.

itt jönnek a hibák:
"b00000"
b = blink 0 = led 000 = milis
pedig csak egy parancsot akarok küldeni változók nélkül.

lehet így is:
"pb000"
p = parancs következik
b = tényleges parancs
0 = semmi ( csak a tömb feldolgozás miatt helykitöltés)
0 = semmi
0 = semmi

"dasdf"
d = adat következik
a = adat
s = adat
d = adat
f = adat

Nekem úgy tűnik minnél többféleképpen szűröm az üzenetet annál lasabb lesz a cucc. Eért tűnik a firmata szimpatikusabbnak meg tudok szólítani egy pint direktbe mindenféle szűrés és feldolgozás nélkül


Mik a tapasztalataid:
ha egy üzenet így néz ki és a célja a belső eep feltöltése 512 byte tömb-el, ez a feldolgozás mennyiben lassítja le cuccot? Mondjuk talán 512 byte nem nagy ügy de ha át akarok rajta folyatni mondjuk 8mb-t egy külső eepromba?

továbbra is érdekelne ha vki használja a firmata-t és van kedve pár példa üzenetfajtát megosztani

köszi

Avatar
Gerifield
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2011. szeptember 19. hétfő, 6:00

HozzászólásSzerző: Gerifield » 2011. november 1. kedd, 18:31

Erre a szeparálásra az amarino projektben (http://www.amarino-toolkit.net/) található megoldás egész jó, méghozzá az, hogy a parancsok között egy szeparáló karakter is van!
(Az ne zavarjon, hogy ez android+arduino kapcsolathoz lib, a forráskód hasznos!)

Nem csak első karakter lehet egyedi, hanem a szeparáló is! :)

retep
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2014. július 7. hétfő, 19:29

Re: Firmata

HozzászólásSzerző: retep » 2014. augusztus 7. csütörtök, 19:31

Sziasztok!

Én is FIRMATA-val kapcsolatban kérdeznék néhány dolgot, illetve csak egyet. Vegyünk egy egyszerű példát: Adott egy egyszerű számológép (egy kétsoros kijelző+4x4-es billentyűzet. arduinoval kialakított számológépet értünk ezalatt) Ugyebár ennek az eszköznek a sztenderd bemenete a billentyűzet, a sztenderd kimenete pedig a kijelző. Nade a számológép nem csak úgy végezhet műveleteket, hogy bepötyögjük, hanem az arduino soros-usb portján keresztül is tudunk neki utasításokat adni, amelyekre vagy visszaadja az eredményt szintén a soros-porton, vagy megjeleníti ezt a kijelzőn.

A kérdésem a következő: megoldhatom -e ezt a firmata segítségével, vagy ezek nem kombinálhatók? Mármint a saját fejlesztésű számológép program, és a firmata. Számológép, amely firmata funkciókkal is fel van vértezve. :)

köszi a segítséget.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9698
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Firmata

HozzászólásSzerző: Robert » 2014. augusztus 7. csütörtök, 19:40

Megoldható, hisz a firmata csak egy plusz funkció-kiterjesztés.

Zoo
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2017. április 7. péntek, 19:39

Re: Firmata

HozzászólásSzerző: Zoo » 2017. április 7. péntek, 19:57

Sziasztok!

2db. arduino panelt szeretnék soros porttal összekötni firmata segítségével.
Az egyik panelen (Slave) lenne a StandardFirmata és ennek a portjait szeretném a másik panelről (Master) vezérelni (vb.net-ből már sikerült vezérelnem a StandardFirmata-t).
A firmata tud ilyen módon ("Master") működni? Ha igen hol találok ehhez doksit, mintát?

Előre is köszönöm a segítséget.


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 vendég