Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Például tegyük fel, különböző forrásból(kommunikációs) jönnek az adatok. Egyikről t1, másikról t2.. tömb. viszont ezeket egyszerre akarom átadni egy másik funkciónak egy teljes tömb formájában. Egyszerűbb lenne, ha nem kellene minden frissítésnél bemásolnom az új adatokat, hanem azok az "összekötés" miatt átkerülnének. Hasonlóképpen ahogy a define működik. Tudom, az konstans, de mintha úgy rémlene változókat is össze lehet valahogy "drótozni".
Probáld esetleg struct -al.
A hozzászólás módosítva: Márc 12, 2020
Ez akár jó megoldás is lehetne, de ezzel az a baj, hogy aminek át akarom adni az egy telepített lib funkciója ami nem fogadja el a struktúrát mint bemenő adat.
Össze lehet igen, de az csak azt jelenti, hogy azonos memóriaterületet használnak (ez volt az enu.m). Mondjuk ezen az ágon el lehetne indulni. Kell egy pointer, ami a tömböd elejére mutat, ezt a tömböt használja az egyik szenzorod. Aztán amikor a másik szenzor adatát akarod írni, akkor csak megnöveled a pointer értékét annyival ahány adatelemmel eltolva akarod írni. Végülis működhet.
Tehát ha van egy p1 tömböd, akkor annak a címét *pointer = &p1-ként kapod. pointer értékét meg tudod növelni, és *pointer-be adatot írva a tömb megfelelő helyére kerül. Elvileg. Ha jól emlékszem arra amikor még ilyesmikkel bűvészkedtem (C-ben). Szerk: Egy kis olvasnivaló: Bővebben: Link A hozzászólás módosítva: Márc 12, 2020
Ha a funkciód tömböt és tömb méretét várja(pl. foo funkció) akkor így is tudod átadni(pointerrel).
A hozzászólás módosítva: Márc 12, 2020
Sargarigo, igen, ez tiszta, erre már én is gondoltam, de ez sem az amit én szeretnék.
djusee: Átnézem, kipróbálom, addig is köszönöm.
Szivesen, sőt akár így is feltöltheted adatokkal
A hozzászólás módosítva: Márc 12, 2020
Sziasztok, nullkilométeres arduinós vagyok. Kinai nano panel, azt mondja az IDE: hiba a feltöltés közben. A ch340 driver több különböző dátumú verzióját próbáltam már, mind felmegy, látszólag minden rendben. Alaplap info lekérdezésnél van VID meg PID szám, bár azt mondja, ismeretlen alaplap. Hol az átverés?
Helyes com port, lap van kiválasztva? Windows -on nem tudok sokat segíteni de esetleg a driver helytelenül lett telepítve?
Arduino / Genuino Uno alaplapot válaszd ki.
A hozzászólás módosítva: Márc 12, 2020
Sajnos nem javult. Programozó alatta pár sorral számít (sima usb-s kapcsolat)? Próbáltam már váltogatni, nem sok jó történt. Két nanom van amúgy, mindkettőnél ugyanez a nyűg.
A hozzászólás módosítva: Márc 12, 2020
Csupa okét mondott, eszközkezelő látja... Ki tudja.
Idézet: „de ez sem az amit én szeretnék.” Most már felcsigáztál! Mit kellene még tudni amit a fenti megoldás nem tud?
Villog rajta a led? Lehet a mikrokontrollerbe nincs beleírva a bootloader.
A led villog. (Gyárilag lehet a kinai bootloader más, vagy hibás vagy valami? )
Szkóppal megnéztem, az avr órajele megy. A ch340c kimenetén 115kbs-el jön az adatfolyam, az avr viszont nem válaszol. A hozzászólás módosítva: Márc 12, 2020
Köszönöm a tippet, találtam olyan menüpontot hogy "old bootloader". Igy már megy. Jár ez az "old" valami hátránnyal?
Idézet: „Jár ez az "old" valami hátránnyal?” Tudtommal nem. Használd nyugodtan!
Indulásnál 2-3mp-ig nem fut a programod. Az újnál ez a várakozás minimális, szinte azonnal indul a programod.
Átnéztem de ezekből nem világos, melyik is a tömb amit megadhatok.
Lehet, hogy még változik, de egyenlőre a következőképpen néz ki. Van ez a class:
Ez még a setup előtt van. A "TOMB" helyére kellene beilleszteni azt a "tömböt" ami több darabból tevődik össze, és ide még egy sima változót sem fogadott el, csak tömböt. Később az image-nek van egy Block transfer funkciója amit a loopban használok, az előtt adok értéket a dolgoknak. Ez átadja az értéket egy másik class funkciójának.
A hozzászólás módosítva: Márc 12, 2020
Mint ahogy a legelején is íratm azt szeretném elérni, ha indításkor megcsinálom az összekötést (unio.nnal, mutatóval, bárhogyan), akkor utána mindenféle memcpy, mutatómódosítás és egyéb csiribá nélkül ha értéket adok az egyiknek az megjelenjen a másikban.
Ahogy írtad valószínűleg közös címhasználattal. Egyszerűsítve:
Tehát, ha a program futása közben bármikor adok a t2-nek új értéket az átkerüljön a t1 megfelelő helyeire. Konkrétan, ha megnézed az előző, hozzászólásomat amit djusee-nek írtam, látod, hogy abba a classba hová kell az összerakott tömb, példánkban t1. Későb ha adok a t2-nek másik értéket, az automatikusan a t1-ben is ott legyen és nekem csak az ott leírt class blocktransfer funkcióját kelljen vérehajtanom a t1 tömbön. Semmi mutatómozgatás, semmi memcpy. Ahogy írtad azt szeretném ha a t1 elemeinek címei megegyezzenek a t2 megfelelő elemeinek címeivel, ha ez megoldható.
Ok, ez eddig is megvolt. De mi bajod a megoldásommal? Transzparensen el tudod érni ugyanazt a területet, ott írod ahol akarod. Akár egyben ki is olvashatod. Ha nem tetszik oké, csak egy javaslat volt. Csak nem értem miért nem jó?
A hozzászólás módosítva: Márc 12, 2020
Sziasztok!
Mit kellene módosítani a programba, hogy a hosszú "ő", "ű" betűket is kiírja? Erős felhősödés helyett ez van a kijelzőn: "Ers felhsödés" Bővebben: Link Előre is köszönöm!
Elkezdtem megcsinálni ahogyan gondoltam, és azt hiszem értem mi bajod van vele. Részemről nem tudok megoldást a problémádra.
Egy nagyon pazarló, de működő megoldás, ha egy sűrűn lefutó interruptban mindig egyenlővé teszed a megfelelő változókat. Pár órajelet igényel csak, plusz az interrupt lefutási ideje.
Más ötletem nincs. Gondolom egy pointer tömb nem jöhet szóba. Olyan tömb, aminek minden eleme egy pointert tartalmaz, ami memória címre mutat, ahol a változó van tárolva. Így több tömb is tud ugyanarra a változóra mutatni.
Ez azt teszi, amire gondolsz, a memóriacímeket teszi azonossá. Létezik elegánsabb, rövidebb megoldás, de már sokat felejtettem.
Ez egy sima dereferencia. A C az a[b] hivatkozást *(a+b)-re konvertálja. Szóval csak átírtad az első hivatkozást arra ami egyébként is lenne.
Sziasztok!
Leonardoval bootloader égetéssel kapcsolatban volt problémám. (Bővebben: Link) Sikerült megoldani az ArduinoISP.ino cseréjével, mert hibás volt és az Arduino as ISP(ATmega32U4) könyvtár telepítésével.
Így tökéletesen működik a bootloaderek égetése és bármelyik sketch feltöltése a programozó használatával (a Vázlat menűből). Csak a Duemilanov telepíti helyből a blink-et. A hozzászólás módosítva: Márc 13, 2020
PIC-ről nodeMCU-ra kéne adatokat átküldenem... UART kapcsolaton keresztül már sikerült megoldanom ... de kicsit lassúnak találom.
Mit lenne érdemes használni I2C, SPI ...? int8, int16, float változókat kéne átküldeni, 250-300 adat, változó időközönként. |
Bejelentkezés
Hirdetés |