Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   658 / 839
(#) sargarigo válasza szikorapéter hozzászólására (») Okt 16, 2020 /
 
Írtam egy programocskát, ami elvileg azt csinálja amit szeretnél! Csakhogy! Nekem nincs ilyen prom-om, ráadásul most éppen arduinóm sincs. Azt már nem is mondom hogy évek óta nem bitmanipuláltam.. Tehát, noha lefordul, egyszer sem biztos hogy hibátlan, ki kellene próbálnod! Ha nem okés, akkor masszírozzuk még egy kicsit!

  1. /*
  2. TBP18SA030N PROM tartalmának listázása
  3. Bekötés:
  4.   TBP18SA030N <-> Arduino
  5.   A0  A0 (PC0)
  6.   A1  A1 (PC1)
  7.   A2  A2 (PC2)
  8.   A3  A3 (PC3)
  9.   A4  A4 (PC4)
  10.  
  11.   _G  A5 (PC5)
  12.  
  13.   Q0  D2 (PD2)
  14.   Q1  D3 (PD3)
  15.   Q2  D4 (PD4)
  16.   Q3  D5 (PD5)
  17.   Q4  D6 (PD6)
  18.   Q5  D7 (PD7)
  19.  
  20.   Q6  D8 (PB0)
  21.   Q7  D9 (PB1)
  22. */
  23.  
  24. #define enable()  {PORTC &= ~(PC5);}
  25. #define disable() {PORTC |= (PC5);}
  26.  
  27. char eredmeny = 0;
  28.  
  29. void setup() {
  30.     // beállítjuk a be és kimeneteket
  31.     DDRC  |= 0b00111111; // PortC A0..A5 kimenet
  32.     DDRD  &= 0b00000011; // D2..D7 bemenet, D0 és D1 marad ami volt
  33.     DDRB  &= 0b11111100; // B0, B1 bemenet, többi marad ami volt
  34.    
  35.     disable();
  36.     Serial.begin(9600);
  37.     Serial.println("TBP18SA030N PROM tartalmának listázása\n");
  38.    
  39.     for (int i=0; i< 32; i++)
  40.     {
  41.       DDRC |= i;  // bele tesszük a 6 bitnyi adatot (0..31), de a felső két bitet békén hagyjuk.
  42.       delay(1); // adjunk neki időt beállni
  43.       enable();
  44.       delay(1);
  45.      
  46.       eredmeny = (PIND & 0b11111100) | (PINB & 0b00000011);
  47.       disable();
  48.      
  49.       Serial.println(eredmeny, HEX);
  50.     }
  51. }
  52.  
  53. void loop() {
  54. // igazából a loop-ra nincs is szükségünk.    
  55. }
(#) jeges válasza sargarigo hozzászólására (») Okt 17, 2020 /
 
Ha megadom a karakter hosszát akor kötözködik a fordító!

data3[16];
A hozzászólás módosítva: Okt 17, 2020
(#) jeges válasza sargarigo hozzászólására (») Okt 17, 2020 /
 
igy fordít de az egész rossz data3 rosszul megy át!

  1. #include <AESLib.h>
  2.  
  3.  
  4. byte key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  5. const char data3[16];
  6. //char data3[16];
  7. int test;
  8. void setup() {
  9.   Serial.begin(4800);  
  10.  
  11.  
  12.  }
  13.  
  14. void loop() {
  15.  
  16.   if (Serial.available()) {
  17.  
  18.     //Serial.read(data3, sizeof(data3));
  19.  
  20. const char data3=Serial.read();
  21.  
  22. aes128_dec_single(key, data3);
  23.  
  24.   }
  25.  Serial.println("Decrypted");
  26.     for(int i=0; i<16; i++) {
  27.     Serial.print(data3[i]);
  28.   // delay(100);
  29.   }
  30.  
  31. }
(#) usane válasza jeges hozzászólására (») Okt 17, 2020 /
 
Furcsálom, hogy így nem panaszkodik mikor duoplán van deklarálva a data3.
Egyébként is mi a fenéért const mikor bejövő érték? A key az inkább lehet const.
A hozzászólás módosítva: Okt 17, 2020
(#) MATA hozzászólása Okt 17, 2020 /
 
Üdv mesterek!
Lehet amatőr dolgot kérdezek de arra kérném a segítséget hogy mi határozza meg egy programkódban hogy milyen alapra lehet felírni. Mert erre utalást a programban nem látni.
Köszönöm!
(#) sargarigo válasza jeges hozzászólására (») Okt 17, 2020 /
 
Amit usane is mondott, hogy miért adtad meg const-tal? Ha már egy tömböt létrehozol üres elemekkel, és az const, akkor az az is marad! De a data3-at létrehoztad újra, és ahányszor van bejövő adat, mindig újra és újra létrehozod. Ráadásul először még const char[16] volt, a beolvasáskor meg már csak const char. Az eredetiben meg több paramétert adtál meg a Serial.read-nak, mikor nem kér egyet sem. A beginnel kezdtük, hogy nyafog rá.
Úgy érzem mintha csak beírkálnál dolgokat, hogy hátha megjavul. Haladjunk módszeresen, különben csak a vakszerencsén fog múlni hogy lesz-e eredmény..
(#) sargarigo válasza sargarigo hozzászólására (») Okt 17, 2020 /
 
Ja, és most látom, hogy össze-vissza adataid vannak. Ennek az az oka, hogy a "if (Serial.available()) {" sorral indítasz egy belső blokkot, amiben létrehozod a data3 lokális változót. A feldolgozásnál viszont már kiléptél ebből a blokkból, emiatt megszűnt a lokális data3, tehát a globális data3-at tudja csak használni. Tehát fogalma sincs hogy mit akarsz.
Próbáld ezt átnézni, hátha segít valamit: Bővebben: Link
A végén van példa!
A hozzászólás módosítva: Okt 17, 2020
(#) sargarigo válasza MATA hozzászólására (») Okt 17, 2020 / 1
 
Most a forráskódot kérdezed? Alapvetően semmi. Majdnem semmi. De ha olyan perifériára hivatkozol ami nincs neki, akkor a fordító eldobja, nem kell neki. Például uno-ra hiába is próbálnál több hardveres soros portot igénybe venni, mert nincs neki. Szűk keresztmetszet lehet a memória mennyisége, stb. A lapot a fordítónál állítod be, és ő eldönti hogy le tudja-e fordítani a kódod a kiválasztott lapra. Tehát egy blink programot minden lapra le tudsz fordítani, feltéve hogy a használt pin létezik.
(#) MATA válasza sargarigo hozzászólására (») Okt 17, 2020 /
 
Köszönöm szépen így érthető a lényeg!
(#) sargarigo válasza MATA hozzászólására (») Okt 17, 2020 /
 
Örülök!
(#) jeges válasza sargarigo hozzászólására (») Okt 17, 2020 /
 
Amit linkeltél igen ez az alapokod Serial.print szépen működik amikor használsz Serial.read és write elbukik fordító ez meg kell 2 arduino közöz rx/tx nél kell használni!

  1. #include <AESLib.h>
  2.  
  3.  
  4. byte key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  5. char data3[16];
  6.  
  7. void setup() {
  8.   Serial.begin(115200);  
  9.  
  10.  
  11.  }
  12.  
  13. void loop() {
  14.  
  15.   if (Serial.available()) {
  16.  
  17.     Serial.read(data3, sizeof(data3));
  18.    
  19. aes128_dec_single(key, data3);
  20.  
  21.   }
  22.  Serial.println("Decrypted");
  23.     for(int i=0; i<16; i++) {
  24.     Serial.print(data3[i]);
  25.   }
  26.  
  27. }


  1. #include <AESLib.h>
  2.  
  3. byte key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  4. char data3[] = "0123456789012345"; //16 chars == 16 bytes
  5.  
  6.  
  7. void setup() {
  8. //aes128_enc_single(key, data3);
  9.   Serial.begin(4800);
  10.   //Serial.println(sizeof(myData));
  11.  
  12. }
  13.  
  14. void loop() {
  15.  
  16.   aes128_enc_single(key, data3);
  17.  
  18.   Serial.println("encrypted:");
  19.   for(int i=0; i<16; i++) {
  20.     Serial.print(data3[i]);
  21.   }
  22.  
  23.  
  24.   Serial.write(data3, sizeof(data3));
  25.  
  26.  
  27.  delay(1000);
  28. }
(#) sargarigo válasza jeges hozzászólására (») Okt 18, 2020 / 3
 
Nem érzed hogy kicsit erős a stílusod? Hidd el, szivességből próbálunk segíteni! Emellett létezik családunk, hétvégénk is, úgyhogy jó lenne ha nem követelőznél! Mondtam már hogy a read paraméter nélkül működik, de csak visszatérsz a méret megadáshoz. A projektről semmit nem árulsz el, ha kérdezek foghegyről válaszolsz, azt is érthetetlenül. Szerinted ezek mellett mennyire sürgős megírni helyetted a feladatot?
(#) jeges válasza sargarigo hozzászólására (») Okt 18, 2020 /
 
Fel tetem egy egyszerű kérdést egy oldalal előbb de csak kitérő irányú lett de miért van ez mindig és mindig?
Mond el?
(#) sargarigo válasza jeges hozzászólására (») Okt 18, 2020 / 3
 
Azért, mert nincs senkinek kész válasza. Attól hogy egyszerűnek titulálod a kérdést, még nem biztos hogy az. Egy folyamat eredménye az hogy választ kapsz, ami feltételezi hogy együttműködsz azokkal akik segíteni szeretnének. Te elmondod mit szeretnél, hogyan próbáltad eddig megoldani. Erre mi átgondoljuk hogy szerintünk mi vihet előrébb, mondunk valamit ami eszünkbe jut. Te kipróbálod, jelzed hogy mit tapasztaltál, esetleg hogy sikerült így megoldani. És ez egy ciklus ami kezdődik elölről, és kilépési feltétel a siker, vagy a feladás. Ez így működik.
Azzal hogy követelőzöl, nem osztod meg a próbák eredményét csak azt éred el, hogy elmegy kedvünk a segítéstől. Megírni nem fogjuk helyetted.
A hozzászólás módosítva: Okt 18, 2020
(#) sargarigo válasza jeges hozzászólására (») Okt 18, 2020 /
 
Idézet:
„Csak egy egyszerű sorosport titkosítást 2 arduino közöt aes könyvtáral mert rádiós átvitelű hc12!”

Ezt például többszöri üzenetváltásra kell megtudnunk.
A privátból idéztem, mert a témához való, és nincs benne semmi személyes közlés.
(#) sargarigo válasza jeges hozzászólására (») Okt 18, 2020 /
 
Arra gondoltam, hogy el kellene engedni az AES-t egy próba erejéig, és először működjön a soros átvitel símán. Aztán az AES-t is lehetne String-ként kezelni, és akkor nem lenne a bonyodalom a bájt tömbökkel. Kipróbálom, aztán meglátom...
Szerk.: ... mert most érek rá.
A hozzászólás módosítva: Okt 18, 2020
(#) sargarigo válasza sargarigo hozzászólására (») Okt 18, 2020 /
 
Próbáld ki ezt:
  1. int incomingByte = 0; // for incoming serial data
  2. char incomingDatas[16];
  3. uint8_t key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  4. int counter = 0;
  5.  
  6. void setup() {
  7.   Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  8. }
  9.  
  10.  
  11. void loop()
  12. {
  13.   // send data only when you receive data:
  14.   if (Serial.available() > 0) {
  15.     // read the incoming byte:
  16.     incomingByte = Serial.read();
  17.     incomingDatas[counter] = incomingByte;
  18.     counter++;
  19.    
  20.     if (counter >= 16)
  21.     {
  22.       Serial.print("Incoming string: ");
  23.       Serial.println(incomingDatas);
  24.       aes128_dec_single(key, incomingDatas);
  25.       Serial.print("Decoded datas: ");
  26.       Serial.print(incomingDatas);
  27.       counter = 0;
  28.     }
  29.   }
  30. }
A hozzászólás módosítva: Okt 18, 2020
(#) sargarigo válasza sargarigo hozzászólására (») Okt 18, 2020 /
 
Létrehoztam egy tömböt a beérkező adatoknak, és a számlálót ami nyilván tartja mennyi adat érkezett. Minden beérkező bájtot eltárol a következő pozícióba. Amikor megérkezett az utolsó is, akkor dekódolja, törli a számlálót, és kiírja az adatokat a soros porton. Mondjuk ez neked nehézséget jelenthet, mert ott már a másik arduinó van
Mindenesetre a vételt már látod hogy hogy működik.

Nem próbáltam ki, lehet benne hiba.
A hozzászólás módosítva: Okt 18, 2020
(#) jeges válasza sargarigo hozzászólására (») Okt 18, 2020 /
 
Köszönöm!
Nem ragaszkodom az aes hez de valami algoritmus keresek kétirányú kommunikációra nem kell nagy sebességre csak példákat próbálgatom de szimpatikusnak látom TOTP..két irányba is dinamikusan változik !
A hozzászólás módosítva: Okt 18, 2020
(#) sargarigo válasza jeges hozzászólására (») Okt 18, 2020 /
 
Szerintem ha nincs adatvédelmi szempont, akkor valami egyszerűbbel próbáld, amit erre találtak ki!
Például itt van egy projekt, amit a google elsőnek dobott: Bővebben: Link
Az hogy kétirányú a folyamat, számodra semmit nem jelent, egyszerűen ugyanaz a dolgod kétszer. Nem kell ezért bonyolítani.
(#) jeges válasza sargarigo hozzászólására (») Okt 18, 2020 /
 
Késöbb tervezem ilyen irányú megoldás van is rá eszköz és nagyon olcsó !Bővebben: Link!
(#) sargarigo válasza jeges hozzászólására (») Okt 18, 2020 /
 
Érdekes kis cucc, lehet én is veszek párat játszani! Itt találtam hozzá leírást: Bővebben: Link
De azt tudod hogy ez már nem soros port lesz ugye?
Létezik készen is: Bővebben: Link
A hozzászólás módosítva: Okt 18, 2020
(#) sargarigo válasza jeges hozzászólására (») Okt 18, 2020 /
 
Nem tudom a Farnell hogy csinálja, ebay-en 1600-ról indul! De ez már nagyon off, befejeztem!
(#) jeges válasza sargarigo hozzászólására (») Okt 18, 2020 /
 
Se hogy ez ennyi.... ebay tul árazot...
Bővebben: Link
(#) Bakman válasza sargarigo hozzászólására (») Okt 18, 2020 /
 
Idézet:
„This chip is NOT capable of encrypting and decrypting data. It can however, perform quite a few cryptographic authentication processes such as secure private key creation, secure key storage and digital signature creation and verification.”
(#) usane válasza jeges hozzászólására (») Okt 19, 2020 /
 
Ahogy sargarigo írta a Serial.read paraméter nélküli.
Így használható:
  1. data3 = Serial.read();

A másik baj szerintem az, hogy a Serial.read() stream függvény, nem néztem bele a hardwareserial libbe, de byteonként olvasható ami karakterek esetében karaktertömböt ad vissza, nem pedig Stringet, ahogy te akartál neki értéket adni, tehát ciklusban kell kiolvasni a karaktereket és behelyezni a tömbbe egymás után. Ahogy sargarigo megcsinalta, úgy elvileg kellene, hogy működjön a vétel.
(#) szikorapéter válasza sargarigo hozzászólására (») Okt 19, 2020 /
 
Visszatértem. Elnézést amiért odavoltam sok volt a program.
Kipróbáltam egyenlőre "blank" ben a programot, a 8 "bemenetet" az arduino-n 1K-val testre kötöttem és lefuttattam, egy rakat 0 jött vissza (nem FF-nek kellett volna?), most rákötözöm a promot majd megnézem mit csinál.
(#) TavIR-AVR válasza szikorapéter hozzászólására (») Okt 20, 2020 /
 
A GND az a 0. Így a 0b00000000 az bizony 0 (Hex).
(#) sargarigo válasza szikorapéter hozzászólására (») Okt 20, 2020 /
 
Szerintem arra gondolsz, hogy amikor üres a flash vagy a rom, akkor ff-et ad vissza. De ez bemenet, nem pedig tároló. Tehát ha 0V a bemenet, akkor nullát fogsz olvasni, ahogy kolléga is irta.
(#) enree hozzászólása Okt 22, 2020 /
 
Sziasztok!
Szeretnék építeni egy olyan termosztátot, amit webes felületről is elérek, találtam itt egy jónak tűnő projektet. A bajom annyi lenne vele, hogy az I2C bővítményt elhagynám (az RTC-t természetesen nem), helyette úgy szeretném, hogy a board 1-1szabad lába vezéreljen 1-1relét (hűtés, fűtés), illetve ahogy látom tud RGB háttérvilágítást is az LCD-hez, arra sincs szükségem.
Sajnos a programozáshoz nem értek egyáltalán, az lenne a kérdésem, hogy nagy munka lenne ezt módosítani benne? Ha azt mondjátok, hogy nem és megfizethető, akkor majd adok fel hirdetést. Előre is köszi, ha valaki ránéz.
A hozzászólás módosítva: Okt 22, 2020
Következő: »»   658 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem