- Honor 200 Pro - mobilportré
- Fotók, videók mobillal
- iPhone topik
- 45 wattos vezeték nélküli töltés jön az új iPhone-ba
- VoLTE/VoWiFi
- Bemutatkozott a Poco X7 és X7 Pro
- Milyen okostelefont vegyek?
- Xiaomi 14T Pro - teljes a család?
- Honor Magic6 Pro - kör közepén számok
- Android alkalmazások - szoftver kibeszélő topik
Új hozzászólás Aktív témák
-
don_peter
senior tag
Srácok szeretnék kérni egy kis segítséget.
Van egy string tömböm és a következő adatok vannak benne:
adat1 = cikkszám
adat2 = darabszámB301;1
F100;9
G120;20
P203;6
B301;1
F100;9
G120;20
A9G;12
P203;2
B301;8Rendezni kellene a tömböt, úgy hogy minden cikkszámból csak 1 szerepeljen benne, de a darabszámokat össze kell adni.
pl.:
B301;10
F100;18
G120;40
P203;8
A9G;12Tudnátok nekem segíteni? (elég fáradt vagyok már, hogy jól pörögjön az agyam)
Már kezdek befáradni, de addig nem fekszem le amíg ezzel ma nem végzek.
Előre is köszi. -
don_peter
senior tag
Kedves fórumtársak!
Írtam egy kis programot mellyel egy általam épített hardverből tölti le a teljes NorFlash (8MB) tartamát.
Mind ezt bináris állományba.
Sajnos minden letöltés után törölnöm kell az előzőleg letöltött állományt, továbbá szeretném valahogy a fájlnevében jelölni az időt, hogy mikor lett letöltve.A kérdésem az, hogy ezt hogy tudnám megtenni.?
A kód rész amellyel az állomány nevét létrehozom:
const string fileName = "dptpsmfdcartridge.bin";
Próbáltam már pár módon módosítottam, de nem sikerült.
A fáj nevébe a dátumot is szeretném eltárolni pl így:const string fileName = "dptpsmfdcartridge_20161118.bin";
Ezzel próbálkoztam, csak hogy érthetőbb legyen a dolog:const string fileName = "dptpsmfdcartridge_" + DateTime.Now.ToString("y-M-d, H:m:s") + ".bin";
Utóbbira sajnos hibát dob.
Létrehozás pedig így:string pathString = System.IO.Path.Combine(folderName, fileName);
csharp 2012-essel próbálkozgatom..Előre is köszönöm a segítséget.
-
don_peter
senior tag
válasz
alapz@j #5496 üzenetére
Hát így
Én nem kaptam oktatást minden amit tudok azt magamnak és nem a fizetett egyetemnek köszönhetem..
nem sok, de kérdezni tudok és ti remélhetőleg segítetek annak aki nem tud valamit.
Biztos én is tudnék példát felhozni arra, hogy te mit és miért csinálsz, ha ezt vagy azt nem tudod...
Mindig érdemes magadból kiindulni mielőtt kritizálsz.
Nem születik az ember programozónak, úgy tanulja meg, hogy megmondják neki.
Amúgy eljutottam odáig, hogy byte-onként olvasom be a fájlt egy tömbbe és azt íratom ki..
Szépen lassan megírom egyedül is a programot. -
don_peter
senior tag
Srácok egy kis segítségre lenne szükségem.
Lehet nem is kicsire, remélem jó helyre írok.Csharp 2012-ben próbálok maradandót alkotni, de csak nehezen megy
Következő a helyzet.
Egy bin-fájlt kellene megnyitnom úgy, hogy szavanként olvassa be és a szavakat tömbökbe rendezné.
Eljutottam odáig, hogy txt-fájlt tudok megnyitni egészben listázva vagy soronként, esetleg karakterenként is le tudom bontani (a sorokat), de bin fájl esetében ez sajnos nem megy.Egy próba teszt file innen tölthető le: [link]
Nem vírusos, ez egy Sega MegaDrive játék ROM fájl.A lényege az lenne, hogy beolvasnám ezt a fájlt és byte-onként tömbbe rendezném az adatot aztán a további művelet egy másik hardverre történő COM-portos adatküldés lenne amit már megírtam illetve egy része már megvan és működik.
Persze ha nem kell tömbbe rendezni és úgy is lehet byte-onként az adatokat kiolvasni és küldeni úgy is jó..Valaki tudna segíteni e témában?
Előre is köszönöm. -
don_peter
senior tag
válasz
Jester01 #5330 üzenetére
Ja értem, akkor 3 oszlopból mutatható lenne az óra, perc. és másodperc.
A baj azzal csak az, hogy igen nehéz lenne megállapítani, hogy mennyi rajta az idő.
A 4bit-es sokkal könnyebb.
Persze megoldható lenne a dolog, ha erre volna igény, nem jelent gondot.ui: szarakodott a szerver, kb egy 20 perccel előbb akartam reagálni...
-
don_peter
senior tag
Igen.
Nem értem, mi az hogy vadászni kellett neked a 24-60-60-ra?
A bináris órának az a lényege, hogy binárisan mutassa az időt, nem értem ezt a dolgot most.
Amúgy se-percig nem tartana normál decimális órát készíteni.
Egy LCD kijelzőre vagy 7szegmenses kijelzőre, vagy akár egy matrix LED kijelzőre.. -
don_peter
senior tag
Ahogy ígértem, ehhez a kis projektemhez kellett a segítség.
DPTP System - SMD RGB Bináris óra
Mindig ügyeskedek valamit -
don_peter
senior tag
Kedves fórumlakók
Ma úgy látszik ilyen napom van, nem pörög az agyam, vagy csak igen lassan.
Következő problémába botlottam:
Van egy másodperc számlálom, ami char típusú és 0-tól 9-ig számol.
0,1,2,3,4,5,6,7,8 és 9, tehát rendesen előre számol.
Az lenne a gondom, hogy ezt nem tudom megfordítani.
Tehát megfordítva így nézne ki: 0,8,4,C,2,A,6,E,1,9 (hexában)
Tehát amikor 1-et mutat a másodperc a 0x08-at kellene kiküldenie, ha viszont 5 mutat, akkor a 0x0A-t.
Hogy tudom ezt megoldani?
Így néz ki ez kódban:
fuggveny(mp_1);
Itt az mp_1-ben a másodpercek pörögnek 0-9-ig, ezeket kellene még függvény előtt megfordítani a függvény zárójelei közt.
Előre is köszi a segítséget. -
don_peter
senior tag
Igazából nem azért linkeltem, hogy úgy ahogy van másold és használd
A lényeg benne van csak észre kell vedd..Ha a gyártó által megadott időzítéseket használod, akkor mennie kell, max az lehet a gond, hogy a késleltető függvényed nem jó mert a PIC nincs jól beállítva, de ez már egy másik topik..
-
don_peter
senior tag
Ezek olyan függvények amelyek nincsenek benne a fórosban.
Gondolom egy külső fájlban írta meg és azt nem publikálta.
Használd ezt a forrást: [link]
Egyébként a DS1820-nak van adatlapja ott részletesen leírja miképpen kell vele kommunikálni.
Honnan szereztél ilyen szenzort?
Pont most akarok én is egy olyan projektet elkezdeni amihez ilyen szenzor fog kelleni. -
don_peter
senior tag
Srácok ennek a BT chipnek a konfigurációs beállításához kellett a bitfordítós program: DPTP System - nRF8001 Bluetooth kapcsolat
Köszi még egyszer a segítséget. -
don_peter
senior tag
-
don_peter
senior tag
Kedves kollégák,
Egy olyan algoritmust kérnék tőletek amely egy 8bit-es vagy is 1 byte-ot fordít meg.
Pl: ből - re
00000011 - 11000000
A lényeg, hogy a lehető legkevesebb erőforrást igényeljen a bitművelet.
Egy olyan rutin kellene ami nagyon gyorsan és pontosan illetve rugalmasan dolgozik mert nagyon sok különböző adatot kell felcserélni..
(Azért nem én álltam neki megírni a rutint, mert, itt kevés az, hogy jól működik, itt sokat számít, hogy a lehető leggyorsabb és legkevesebb erőforrást igényelve cserélje fel a bitsorozatot.)
Előre is köszi... (egyébként egy makró vagy struktúra is jó lehet, ha az gyorsabb) -
don_peter
senior tag
Köszönöm srácok a segítséget.
Végül így oldottam meg:const struct setup_t {
char dummy;
char command[32];
} valami[] = SETUP_MESSAGES_CONTENT; -
don_peter
senior tag
válasz
EQMontoya #5152 üzenetére
Tulajdonképpen egy program generálja le ezt a definíciót, amellyel aztán egy chip felkonfigurálását lehet megoldani.
Az adatszerkezetet eddig nem önmagában, hanem lebontva használtam fel, de szeretném kicsit felgyorsítani a tesztelést, így gondoltam a legenerált definíciót felhasználva gyorsítanám meg a dolgot..Ebből a definícióból csak a hosszabb sorok az értékes adatok, ezeket az adatsorokat egymás után kell elküldenem így a külön álló 0x00-ák nem lehetnek közöttük..
-
don_peter
senior tag
Srácok, elmagyarázná ezt a definíciót vagy makrót valaki, hogy kell értelmezni és hogy tudom az adatokat kinyerni belőle?
#define SETUP_MESSAGES_CONTENT {\
{0x00,\
{\
0x07,0x06,0x00,0x00,0x02,0x02,0x42,0x07,\
},\
},\
{0x00,\
{\
0x06,0x06,0xf0,0x00,0x02,0x49,0x6c,\
},\
},\
}
Nem láttam még ilyet és nem is tudom pontosan miképpen lehet felhasználni..
Előre is köszi... -
don_peter
senior tag
válasz
DrojDtroll #4993 üzenetére
Nah akkor megoldódott.
Egyébként egy for() és if() feltéttel meg lehet oldani. -
don_peter
senior tag
válasz
DrojDtroll #4990 üzenetére
Tördeld el a stringet a szóközöknél és utána az eldarabolt stringeket már át tudod alakítani az atoi() függvénnyel.
-
don_peter
senior tag
válasz
DrojDtroll #4988 üzenetére
atio() függvény lesz a barátod
-
don_peter
senior tag
Srácok, kellene írnom egy Windows programot amellyel COM porton keresztül egy PIC-nek (mikrovezérlő) adatokat tudok küldeni USART (RX/TX) adatvonalon.
Egyelőre csak kisebb 1 LED be/ki kapcsolására gondoltam.
Ahogy olvasgatok a C Sharp-ot ajánlják kinti fórumokon.
Mi a véleményetek? Milyen programot érdemes használnom?
Tudtok adni linket esetleg letöltéshez illetve, ezek ingyenesen használhatóak vagy fizetős programok?
Előre is köszi.Ja igen C nyelven írnám a profikat.
-
don_peter
senior tag
válasz
don_peter #4983 üzenetére
Illetve kicsit hiányos volt az előző:
#define elemekszama 6
#define bitszam 64
unsigned char tomb[elemekszama][bitszam] = { { "1","0","1","0",...64db }, {}, ...6db };Ebben a formában mondjuk byte-onként fogja értelmezni (6*64byte), de a lényeg talán látható, hogy mire akartam rámutatni...
-
don_peter
senior tag
Nem biztos, de itt nem a bináris fájl a lényeg, hanem az, hogy a bináris fájlból olvass be 6*sizeof(long int) méretet.
Tehát van egy tömböd aminek 6 eleme van.
elemenként (long int) mérettel.
Ez végül lesz majd egy a 6*sizeof(long int).Annyit tudok hirtelen még, hogy az int típus az maximum 32bit, ha előtte van a long, akkor hosszabb is lehet, de nem tudom mennyivel.
Talán duplája kb. 64bit.
Ha ezt követjük akkor a tömböd 6*64bit-es lesz.:
tomb[6][8] ={ // (8*8==64bit)
{0b00000001}, {0b00000011}, ...stb };Ha nem jó akkor majd a szakik javítják, de én így értelmezem..
-
don_peter
senior tag
válasz
don_peter #4930 üzenetére
Közben megoldódott a probléma..
Nagyon egyszerű volt és ezért volt nehéz
Álljon itt a példa:printf("%s", valtozo[0]); //kiíratás sima srting egy tömbből
printf("%S", valtozo[0]); //kiíratás program memóriában tárolt (ROM) srting egy tömbből
l
Ennyi ..az a fránya "%S"...
-
don_peter
senior tag
Uraim...
Van egy kis problémám.
Van egy programmemóriába létrehozott tömböm és ebből szeretnék kiíratni.
A következő képen néz ki:rom static unsigned char szovegek[14][19] = {
{'P','r','o','f','i','l',' ','n','e','v',':'} //, ...stb sorok
};
//A kiíratást meg így
printf("%s", szovegek[i]);Az i természetesen növekszik.
Ha nem a rom-ba teszem hanem simán a memóriába akkor menne, de akkor meg a hely kevés..
Azért van szükség erre a tömbre mert szeretnék helyet spórolni...
Előtte switch() elágazással csináltam, de az zabálja a memóriát.
Előre is köszi... -
don_peter
senior tag
C-ben írt programom lassan testet ölt... pár kép róla:
KB. 3 hónapos fejlesztés eredménye kezd körvonalazódni..
Ha nem látszana akkor elmondom, hogy ez egy levegős forrasztó gép amelynek a vezérlését C-ben programoztam le..
Nem szorosan tartozik ide, de mivel sokat tanultam tőletek szívesen mutatom meg miket készítek..
Remélem nem veszitek zokon... -
don_peter
senior tag
válasz
Ereshkigal #4889 üzenetére
Szívből ajánlom:
Stephen G Kochan - Programfejlesztés C nyelvenVannak benne leckék is.
Én ezt végigolvastam és a példa programokat is begépeltem amelyek sokban segítenek a megértésben. -
don_peter
senior tag
Újabb cikkem amit tisztelettel ajánlok mindenikek.
Amikor a hardver és a szoftver találkozik 2. rész - DPTP System - HandText -
don_peter
senior tag
Rólam és a C nyelvről illetve egy kütyümről. Cikk
Gondoltam érdekelhet titeket is
Tisztelettel és jó szível ajánlom. -
don_peter
senior tag
Srácok, készítettem egy kék LED-es változatot az új programmal amelyben a segítségeteket kértem.
DPTP System - HandText Blue
Jó szuperál az új program, sokkal hatékonyabb és gyorsabb mint az első változat.
Itt már jól láthatóan elkülönülnek a LED-ek egymástól nem úgy mint az elsőnél.
Pixelesebb.Itt két kép az összehasonlítás kedvéért:
Az első változat:
És a mostani új hatékonyabb és gyorsabb változat:
-
don_peter
senior tag
válasz
buherton #4869 üzenetére
Úgy nézem, hogy az LCD vezérlés pont így működik.
Nem kevés sort kell hozzá legépelni
Egyelőre nincs rá szükségem így addig nem is feszegetem a témát.
Csak ésszel adagolom magamnak a dolgot, hogy legyen friss hely és, hogy meg is maradjon az agyamba
Köszi a feltárást és a kiigazítást. -
don_peter
senior tag
válasz
moseras #4862 üzenetére
Nem igazán értem a kérdésed, de megpróbálok következtetni és, ha nem jó akkor újból rákérdezel.
Az RS232 az ügye a soros port.
PIC mikrovezérlőknél ezt SPI (serial peripheral interface) porton keresztül érhetjük el amelyre 1byte-os adatcsomagokba küldhetünk és fogadhatunk adatokat.
A printf() utasítás itt sem játszik. (PIC-nél legalább is erre külön rutint kell írni) -
don_peter
senior tag
válasz
moseras #4860 üzenetére
A printf() nem használható PIC (mikrokontroller) programozásnál kivéve, ha LCD-re akarok kiírni valamit.
Mos a printf() helyett a PIC egyes portjaira és azon belül egyes bit-jeire küldöm ki az utasítást.
Tehát a printf() helyett ez van:
LED1 = ABC[karakter][6]>>mask;
LED2 = ABC[karakter][5]>>mask;
...stb -
don_peter
senior tag
válasz
moseras #4858 üzenetére
Az új programmal már kicsit dinamikusabban lehet állítgatni a kiírandó szövegeket
Videó róla: DPTP System - WandClock 3 -
don_peter
senior tag
Ismét elakadtam, kérném segítségeteket.
Van egy rohadt nagy tömböm ami így néz ki://A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - : .
static unsigned char ABC[40][7] ={{0b00000,//A
0b01110,
0b10001,
0b10001,
0b11111,
0b10001,
0b10001},
{0b00000,//B
0b11110,
0b10001,
0b11110,
0b10001,
0b10001,
0b11110}, ...};P18F684-es chip-el dolgozom aminek csak 128byte adatmemóriája van.
A kérdésem az lenne, hogy van e mód egy 280byte-os területű tömb használatára?
Vagy, ha ennek esélye nem sok, milyen módon tudnám kikerülni, hogy ne foglaljon le ekkora területet?
Vagy egy hatékonyabb megoldás elmélete is érdekelhet.
Most egy switch() elágazással oldottam meg, de ez véleményem szerint nem hatékony, nem mellesleg zabálja a program memóriát.
Előre is köszi.. -
don_peter
senior tag
Ezt a függvényt szeretném egyszerűsíteni:
A lényege, hogy kap egy karaktert és egy irany változót.
Ha az irany = 0, akkor balról-jobbra vagy is normálisan írja ki a karaktert, de ha az irany = 1, akkor jobbról-balra írja ki a karaktert.
Így:
.....
oooo.
o...o
oooo.
o...o
o...o
oooo.
.....
.oooo
o...o
.oooo
o...o
o...o
.ooooA kód:
void karakter(unsigned char karakter, unsigned char irany){
unsigned char i, mask;
for(i=0; i<7; i++){
if(irany == '1'){
for(mask=0x01; mask != 0x20; mask <<= 1){
if (ABC[karakter][i] & mask){
printf("o");
}else{
printf(".");
}
}
}else{
for(mask=0x10; mask != 0; mask >>= 1){
if (ABC[karakter][i] & mask){
printf("o");
}else{
printf(".");
}
}
}
printf("\n");
}
}Előre is köszi...
-
don_peter
senior tag
válasz
Jester01 #4848 üzenetére
Tetszik mert kisebb memória kell neki
Köszi kicserélem illetve mutatom az egészet kompletten//A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - : .
static char ABC[40][7] ={{0b00000,//A
0b01110,
0b10001,
0b10001,
0b11111,
0b10001,
0b10001}
};
unsigned char karakteratvalto(unsigned char karakter){
static char chars[40] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-:. ";
unsigned char i, result;
for(i=0; i<40; i++){
if(karakter == chars[i]){
result = i;
break;
}
}
return result;
}
void karakter(unsigned char karakter){
unsigned char i, z;
unsigned char mask = 0x10;
for(i=0; i<7; i++){
for(z=0; z<5; z++){
if (ABC[karakter][i] & mask){
printf("o");
}else{
printf(".");
}
mask >>= 1;
}
mask = 0x10;
printf("\n");
}
}Így néz ki a teljes kód.
Az ABC az végig van írva rendesen úgy ahogyan látod a kommentált részben is. -
don_peter
senior tag
-
don_peter
senior tag
válasz
Jester01 #4842 üzenetére
for ciklusban még nem adtam meg 4. feltételt, de lehet majd kipróbálom.
A mostani kódom így néz ki://void karakter(char betu){
char i, x, y=4, z;
for(z=0; z<40; z++){
for(x=0; x<7; x++){
for(i=0; i<5; i++){
if((ABC[z][x]>>y)&1 == 1){
printf("o");
}else{
printf(".");
}
y--;
}
y=4;
printf("\n");
}
}
//}Lényege, hogy mindegyik byte első bit-jét kell kiraknom portra, vagy is, hogy 7bit-et kapjak függőlegesen.
A 7 bi-tet a 7 byte első bitjei teszik ki azért 7 bit mert 7db ledet kell kapcsolgatnom.
Vízszintesen pedig 5 bit kell jelen pillanatban, de ez ügye 8-ig gond nélkül növelhető.
Azért csak 5 mert 7x5-os a szabvány.
A függvényt úgy kell majd megírjam, hogy oda vissza ki tuja tenni a biteket.
Tehát mikor lendítem a karom akkor kapcsol a gyorsulás kapcsoló és elindul a program, mikor a lendítés eléri a holtpontot és visszafordul akkor váltani kell a programnak és az ellentétes oldalról kell végig léptetni e a biteket, így kapnék egy teljesen jó és egyletes kijelzést.
Persze itt az időzítés és a lendítés sebessége nagyon fontos.
Nem tudom mennyire volt érthető amit akartam mondani -
don_peter
senior tag
válasz
Jester01 #4840 üzenetére
Igen, igen...
Tudtam, hogy miért nem jó a kódom, csak azt nem tudtam, hogy oldjam meg az egyes helyi értékek vizsgálatát anélkül, hogy az megváltozna.
Ettől független köszönöm a magyarázatot.Egyébként egy HandClock vagy, ha jobban tetszik WandClock-nak nevezett kézi kütyüt készítettem a magam szórakoztatására és persze tanulás céljából és ehhez kell egy jobb hatásfokkal dolgozó kódot írnom, amely mátrixos multiplexeléssel rakja ki függőlegesen feltörve az egyes bitek értékeit a proci lábaira.
Sajnos a mostani kódom ugyan működik, de nem tökéletes így muszáj fejlesztenem még rajta, de már a PIC memóriáját 97%-ra tele írtamItt van egy kép majd egy két videó a kütyüről:
És a videók: DPTP System - WandClock 1.0
DPTP System - WandClock 2 -
don_peter
senior tag
Srácok, hogy lehet egy előre beállított 8 bites értéket bejárni?
Tehát van egy ilyen beállított változom:
valtozo = 0b00011000;
Ezt szeretném úgy bejárni, hogy a nulláknál kiírja, hogy nulla, az egyeseknél, hogy egyes.
Előre is köszi a segítséget. -
don_peter
senior tag
Sajnos azt kell mondanom, hogy nem.
Én is úgy akartam kezdeni mint ahogy leírtad és sorra szívtam vele...
Ezért is írtam, hogy magamból kiindulva ajánlom a saját környezet megépítését.
Egy meglévő nyákot nehezebb kiismerni és kötöttebb rá programozni..
De ezt úgy is csak az fogja megérteni aki foglalkozik vele.Én például ilyet készítettem:
-
don_peter
senior tag
Az a baj, hogy ha valaki ilyen fejlesztői környezeten akar tanulni vagy dolgozni akkor minimum tisztába kell lennie egy pár alap elektronikai kérdéssel amelyek alapot adnak a további kiegészítésekhez melyek aztán szerepet játszanak majd a bonyolultabb fejlesztésekben.
buherton, itt is szépen leírta milyen egyéb alkatrészeket lehet beépíteni a tanuló nyákra, de én javaslom az elsőt úgy megépíteni, hogy a szükséges élesztésen kívül csak a felhasználható I/O lábak legyen kihozva tüskesorra.
Aztán későbbiekben bármit rá lehet aggatni könnyedén. -
don_peter
senior tag
válasz
dabadab #4766 üzenetére
Szerintem buherton emiatt is említette, hogy az adatlapok nagyon jó olvasmányok és segítenek az ilyen kérdésekben is, de ha még sem, akkor még midig itt vagyunk mi
Egyébként már kevés olyan kapcsolás van amihez ne lenne segédletet találni a neten, hogy miként érdemes bekötni, milyen ellenállással vagy esetleg szűrőkondikkal.
De nem lenne akkor is: itt vagyunk mi vagy aki tud segíteni(ezért vannak az ilyen fórumok
)
-
don_peter
senior tag
Két kis kezeddel, nekiállsz és megtervezed megépíted magadnak a hardvert.
Ennyire egyszerű..
Ott a nyáktervező csak vonalakat kell húzni....
Ami meg nem megy megkérdezi, mit hogyan kössön be.
Aztán ha elkészítette még mindig be tudja ide tenni, hogy ellenőrizzük, hogy nincs e elkötés.
Én is megépítettem 0 hozzáértéssel és sok segítséggel.
Ha nincs ennyi szorgalom akkor ne is haragudj, de felesleges elkezdeni.
Magamról tudom, hogy nagyon sokat kellett olvasnom minden egyes kis dolog után, hogy megértsem annak működését és még így is marad fekete folt.
Amit meg nagyon nem értek rákérdezek, még ha ostoba is a kérdés.Annyi előnye van, hogy van tapasztalata C programozásban.
Nekem az sem volt -
don_peter
senior tag
válasz
Dave-11 #4753 üzenetére
Magamból kiindulva azt tanácsolom, hogy ne használj semmilyen előre legyártott kittet.
Kezdésnek szerezz minimum annyi tapasztalatot, hogy saját magadnak megépíts egy olyan gyakorló nyákot amelyen a Mikrochip minden használható lábát kivezetsz tüske sorra.
Természetesen úgy kell megépíteni, hogy az azonnal éleszthető legyen tehát az egyéb áramköröket és programozói felületet integrálnod kell az elején.
Én mint kezdő ezt tanácsolom, nagy segítség a tanulásban illetve a fejlesztéseknél és már megismerkedsz a PORT-okkalCsak, hogy ajánljak is valamit ami olcsó és jó az a PIC...
Ingyenes nyáktervező: Sprint Layout
-
don_peter
senior tag
Srácok, írt már valamelyikőtök korrekciós programot egy hőelem korrekciójára?
Omega K típusú szenzorom van aminek a jelét digitálisan egy MAX6675 IC dolgozza fel és továbbítja számomra is értelmezhető formában. (12bit)A kérdésem az lenne milyen elven tudnék korrekciós programot írni, hogy pontosabb mérést kapjak kisebb hőtartományban is?
Csak az elmélet érdekelne a programot megírom én...
Van ötletetek? -
don_peter
senior tag
válasz
dabadab #4727 üzenetére
Lesznek még félreérthető kérdéseim...
Nézzétek el nekem.
Tanulok belőlük.. (legalább is remélem)
buherton:
watchdog-ot én is ismerem, és úgy kell megírjam a programot, hogy ezt ne keljen alkalmazni.
És természetesen úgy kell majd megterveznem és megépítenem, hogy ne legyen semmilyen olyan zavar ami kiválthatna egy akadást.
Tehát nem szabad beakadnia a program futásának, főként nem akkor amikor forraszt majd a gép.
Atom biztosan kell mennie. -
don_peter
senior tag
Igen, igen igazad van.
Erre gondoltam én is, csak rosszul fejeztem ki maga.
A lényeg az, hogy az eredmény (arra amire nekem kellene) értékelhetetlen lenne az utóbbi megoldást használva.buherton:
Közben rájöttem, hogy a memória címzés miatt csúszott el durván az egész beírás.
Most már megy szépen minden oda ahová kell.
2óra debug kihozta a hibát -
don_peter
senior tag
Uraim,
Hogyan tudok egy short int változót vissza alakítani char típusúra?
Egy pl:short int szam = 600;
unsigned char text[4] = {0};
itoa(szam, text);A végeredmény pedig így kellene kinézzen:
text[0] == 6
text[1] == 0
text[2] == 0
text[3] == \0 -
don_peter
senior tag
válasz
buherton #4712 üzenetére
Igen PIC18F4550-et használok amelynek azért tágasabb a felhasználható memóriája..
A régebben felmerülő tömb problémát megoldottam már szóval az oké..."SSPCON1"
Azért írtam meg bitenként a beállítást, hogy megtanuljam és mindig, ha vissza keressem értsem mit miért állítottam be.
Nekem így átláthatóbb mint ha egy sorba a 8bit-et állítom.
Ezek a beállítások egy init() függvényen belül vannak így nem zavarnak programozás közben, csak ide az átláthatóság miatt másoltam be...
De, ha már nem lesz rá szükség akkor 1bájtos parancsként fogom én is megírni a beállításokat."Az a probléma hogy a for cikluson belül olvas ki több lapot, vagy a while cikluson belül?"
Ezt a kérdést nem értem.
A kiolvasással nincs gond..még
A beírás nem oké.
A kiolvasásnál én állítom be mennyi sor olvasson ki az szerintem jól működik, de a beírás...A következőket vettem észre még tegnap esete:
Kíváncsiságból vissza olvastattam 100x32 byte-nyi területet és a következőket tapasztalom: (hátha rávilágít a hibára)
Minden 256-odik byte címzésénél 1 byte-tal kevesebbet írt be a memóriába és (32*8)*32 == (8192)byte után válik teljesen üres a memória.
Fura....Kipróbálom ez a "*(pbuf+i)=spi_io(0x00);" verziót.
Az a baj, hogy még a mutatókat nem látom át teljesen. -
don_peter
senior tag
Uraim, kérnék egy kis segítséget, hátha észreveszitek azt amin én már simán átsiklok.
Hardver: (PIC18F4550 és 25LC640 memória IC)Csatoltam egy leegyszerűsített forrás fájlt.
KB. 3 napja kínlódom vele és nem jövök rá mért nem azt csinálja amit szeretnék.
A lényeg, hogy a memóriába szeretnék 1 32bájtos lapot beírni és ahelyett, hogy csak 1db 32bájtos lapot írna be a memória területre teleszemeteli a következő x*32bájtos területeket is.
Azért mondom, hogy következő x*32bájtos területeket, mert szabályosan emelve a memória címzést kiolvasható ugyan az mint amit elmentettem a 0-ás címre.
(8x32bájtig (256) egyformák a kiolvasott értékek, de mikor ugrik a 9x32bájtos (288) területre ott már 1bájtot csúszik visszafelé a memória címzés.)
Utóbbit csak említettem, de nem érdekes most.
Valaki esetleg látja azt a hibát ami ezt okozza?
Előre is köszi../*********************************************
+ K¸lsı f·jlok beemelÈse
**********************************************/
#include <p18F4550.h> //PIC be·llt·sa
#include <stdio.h>
#include <delays.h> //KÈsleltetÈsek
#include <stdlib.h>
#include "header.h" //¡lltal·nos header be·llÌt·sok
#include "p18f4550_pindef.h" //P18F4550 saj·t definiciÛim
#include "lcd.c" //LDC meghajt·s f¸ggvÈnyei
/*********************************************
+ DefinciciÛk deklar·l·sa
**********************************************/
//-------------------------- DefinciciÛk ----------------------------//
//PIC18F4550 SPI l·bkioszt·sa
//7. (RA5)[SS - SPI m·sodlagos input v·lasztÛ]
//33.(RBO)[SDI - SPI adat bemenet]
//34.(RB1)[SCK - szinkron Ûra be/ki SPI mÛdban]
//26.(RC7)[SDO - SPI adat kimenet]
#define SPI_CS_TRIS TRIS_A5 //A5 chip v·laszt·s
#define SPI_CS LAT_A5 //A5 chip v·laszt·s
#define SPI_SO_TRIS TRIS_B0 //B0-·s bit
#define SPI_SCK_TRIS TRIS_B1 //B1-es bit Ûrajel
#define SPI_SI TRIS_C7 //C7 adat ki
//-- A 25LC640 EEPROM ·ltal elfogadott parancsok
#define CMD_WRSR 0x01 //St·tuszregiszter Ìr·sa
#define CMD_WRITE 0x02 //Õr·s a megadott cÌmtıl kezdıdıen
#define CMD_READ 0x03 //Olvas·s a megadott cÌmtıl kezdıdıen
#define CMD_WRDI 0x04 //Letiltja az Ìr·st
#define CMD_RDSR 0x05 //St·tuszregiszter olvas·sa
#define CMD_WREN 0x06 //EngedÈlyezi az Ìr·st
#define PMEMBLOCK 32
/*********************************************
+ Union deklar·l·sa
**********************************************/
/*- 16bit-es UNION - (SPI memÛria cÌmzÈshez Ès 2 b·jtos (16bit-es) adatok t·rol·s·hoz kell)*/
typedef union _union16 {
unsigned int value;
struct {
unsigned char low;
unsigned char high;
};
} union16;
/*********************************************
+ PrototÌpusok
**********************************************/
void main(void); //Main()
unsigned char spi_io(unsigned char adat); //SPI Ìr·s olvas·s
void waitFor25LC640(void); //V·rakoz·s a SPI memÛri·ra
void memWrite25LC640(union16 MemCim, unsigned char *pbuf); //MemÛria Ìr·sa
void memRead25LC640(union16 MemCim, unsigned char *pbuf); //Meria olvas·sa
void main(void){
/*********************************************
+ V·ltozÛk deklar·l·sa
**********************************************/
union16 MemCim, ReadCim, AlsoFutes;
unsigned char Membuffer[PMEMBLOCK+1] = {0};
unsigned char x=0, i=0, z=0;
/*********************************************
+ LCD inicializ·l·s
**********************************************/
TRISD = 0;
lcd_init(); // Az LCD modulinicializ·l·sa
stdout = _H_USER; // Az LCD legyen a standard kimenetnt
/****************************LCD*************************************/
/*********************************************
+ SPI init
**********************************************/
SPI_CS_TRIS = 0; //A5-es l·b kimenet
SPI_CS = 1; //A5 l·b magas szinten
SPI_SO_TRIS = 1; //B0 l·b SDI bemenet
SPI_SCK_TRIS = 0; //B1 l·b SCK kimenet
SPI_SI = 0; //C7 l·b SI kimenet
SSPSTATbits.SMP = 0; //MintavÈtelezÈs idızÌtÈse Master mÛd esetÈn 1: mintavÈtelezÈs a kimeneti idı vÈgÈn, 0: mintavÈtelezÈs a kimeneti idı kˆzepÈn). Slave mÛdban kˆtelezıen null·ba kell ·llÌtani.
SSPSTATbits.CKE = 0; //”rajel f·zis·nak be·llÌt·sa (1: az adatkimenet be·llÌt·sa akkor tˆrtÈnik,amikor az Ûrajel aktÌv ·llapotbÛl tÈtlenre v·lt, 0: az adatkimenet be·llÌt·sa akkor tˆrtÈnik, amikor az Ûrajel tÈtlen ·llapotbÛl aktÌv szintre v·lt)
SSPSTATbits.BF = 0; //A buffer foglalts·g·t jelzı ·llapotbit (1: az adat·tvitel lezajlott, SSPBUF kiolvashatÛ, 0: az adatbuffer ¸res)
SSPCON1bits.WCOL = 0; //‹tkˆzÈs detekt·l·s Ìr·sn·l (1: Ìr·st/adatk¸ldÈst kÌsÈrelt¸nk meg, amikor nem lehetett, 0: nincs ¸tkˆzÈs)
SSPCON1bits.SSPOV = 0; //VÈteli t˙lcsordul·s-jelzı (1: ˙jabb b·jt Èrkezett, de SSPBUF meg nincs kiolvasva, 0: nincs t˙lfoly·s)
SSPCON1bits.SSPEN = 1; //Master Szinkron Soros Port engedÈlyezÈse (1: engedÈlyezve, 0: letiltva)
SSPCON1bits.CKP = 0; //”rajel polarit·sa (1: aktÌv ·llapotban alacsony szint, 0: aktÌv ·llapotban magas szint)
SSPCON1bits.SSPM0 = 0;
SSPCON1bits.SSPM1 = 1;
SSPCON1bits.SSPM2 = 0;
SSPCON1bits.SSPM3 = 0;
//BeÌ·r·s ut·n ki kell kommentelni-------------------------------------
/*Membuffer[0] = '#';
Membuffer[1] = 'D';
Membuffer[2] = 'P';
Membuffer[3] = 'T';
Membuffer[4] = 'P';
Membuffer[5] = ' ';
Membuffer[6] = ' ';
Membuffer[7] = ' ';
Membuffer[8] = ' ';
Membuffer[9] = ' ';
Membuffer[10] = ' ';
Membuffer[11] = ' ';
Membuffer[12] = ' ';
Membuffer[13] = ' ';
Membuffer[14] = ' ';
Membuffer[15] = ' ';
Membuffer[16] = ' ';
Membuffer[17] = ' ';
Membuffer[18] = 60;
Membuffer[19] = 61;
Membuffer[20] = 120;
Membuffer[21] = 62;
Membuffer[22] = 160;
Membuffer[23] = 63;
Membuffer[24] = 200;
Membuffer[25] = 64;
Membuffer[26] = 220;
Membuffer[27] = 65;
Membuffer[28] = 250;
Membuffer[29] = 66;
AlsoFutes.value = 500;
Membuffer[30] = AlsoFutes.low;
Membuffer[31] = AlsoFutes.high;
Membuffer[32] = '\0';
//2 memÛria blokk feltˆltÈse
MemCim.value = 0;
memWrite25LC640(MemCim, Membuffer);
//MemCim.value += PMEMBLOCK; //32
//memWrite25LC640(MemCim, Membuffer);
memset(Membuffer, 0, sizeof(Membuffer)); //Null·zzuk Membuffer-t
//BeÌ·r·s ut·n ki kell kommentelni------------------------------------
*/
//Kiolvassuk a memÛria tartam·t
MemCim.value = 0;
do{
memRead25LC640(ReadCim, Membuffer);
ReadCim.value += PMEMBLOCK;
for(i=0; i<PMEMBLOCK; i++){
if(Membuffer[i]=='#'){ z++; }
printf("%i - %02i - 0x%x ", x, ReadCim.value-PMEMBLOCK, ReadCim.value-PMEMBLOCK);
lcd_write(0xC0,0,1,1);
printf("Talalat(#): %i ", z);
lcd_write(0x94,0,1,1);
printf("H:%i - L:%i ", ReadCim.high, ReadCim.low);
lcd_write(0xD4,0,1,1);
printf("%i~%c ", i, Membuffer[i]);
lcd_write(0x80,0,1,1);
Delay10KTCYx(10);
}
memset(Membuffer, 0, sizeof(Membuffer));
x++;
}while(x<15); //Amennyi lapot akarunk, annyit olvasunk ki
Delay10KTCYx(100);
while(1);
}//main
/*********************************************
+ SPI 25LC640 memÛria
**********************************************/
unsigned char spi_io(unsigned char adat){
unsigned char tmp;
SSPSTATbits.BF = 0; // tˆrli foglalts·g jelzı ·lapot·t a st·tusz regiszterben
SSPCON1bits.WCOL = 0; // tˆrli az esetleges Ìr·s ¸tkˆzÈs hibajelzıt
tmp = SSPBUF; // tˆrli a BF jelzıbitet
SSPBUF = adat; // kirakja a kimenı adatot az SSPBUF regiszterbe
while(!SSPSTATbits.BF); // megv·rjuk a busz ciklus vÈgÈt
return (SSPBUF); // a vett b·jttal tÈr¸nk vissza
}
void waitFor25LC640(void) {
unsigned int flag;
do {
SPI_CS = 0; //kiadjuk a Chip Enable jelet
spi_io(CMD_RDSR); //St·tuszregiszter olvas·sa parancs
flag = spi_io(0x00); //Olvasunk, de valamit akkor is k¸ldeni kell!
SPI_CS = 1; //megsz¸ntetj¸k a Chip Enable jelet
} while (flag & 0x01);
}
void memWrite25LC640(union16 MemCim, unsigned char *pbuf) {
unsigned char i,flag;
waitFor25LC640(); //V·runk, ha az EEPROM elfoglalt
SPI_CS = 0;
WriteSPI(CMD_WREN); //Õr·s ˙jraengedÈlyezÈse
SPI_CS = 1;
Delay10KTCYx(1);
SPI_CS = 0;
spi_io(CMD_WRITE); //Adatblokk Ìr·sa
spi_io(MemCim.low);
spi_io(MemCim.high);
for (i=0; i < PMEMBLOCK; i++) {
spi_io(*pbuf++); //Az adatbuffer kiÌr·sa
}
SPI_CS = 1;
}
void memRead25LC640(union16 MemCim, unsigned char *pbuf) {
unsigned char i;
waitFor25LC640(); //V·runk, ha az EEPROM elfoglalt
SPI_CS = 0;
spi_io(CMD_READ); //Adatblokk olvas·sa
spi_io(MemCim.low);
spi_io(MemCim.high);
for (i=0; i < PMEMBLOCK; i++) {
*pbuf++=spi_io(0x00); //Olvasunk, de valamit akkor is k¸ldeni kell!
}
SPI_CS = 1;
} -
don_peter
senior tag
válasz
buherton #4697 üzenetére
Sajnos mindig változik.
A memória IC tartamától függően.
Van mód a szerkesztésre szóval a memória terület az folyton változhat.
Valószínűleg 3masával fogom feltölteni a tömböt és úgy listáztatom ki léptetéssel a 15-öt, nincs jobb ötletem.
így a tömböm is sokkal kisebb lesz így beleférek a verem keretbe... -
don_peter
senior tag
Srácok...
Van egy ilyen tömböm:
unsigned char listabuffer[15][18];
Sajnos fordításnál ki írja a program, hogy a "verem keret túl nagy".A program lényege, hogy a memóriából a 15db előre elmentett nevet kiolvasom amelyek külön-külön 17karakteres +1 a lezáró.
Ötletet kérnék, hogy még is, hogy váltsam ki a többdimenziós tömb használatát?
A gond az, hogy az összes nevet meg kell jelenítsem, hogy választani lehessen belőle.
Illetve van egy mód amire gondolok, de annak kivitelezését kerülném, ha van hatékonyabb megoldás.
(Az én ötletem az, hogy mivel az LCD kijelző maximum 4sort tud egyszerre mutatni így négyesével olvasnám be és léptetném.)
Ötletek?
Előre is köszi.. -
don_peter
senior tag
-
don_peter
senior tag
Próbálom úgy szétbontani a programot, hogy a függvények egy külön becsatolt állományként működjenek.
Ha ugyan abban a fájlban lennének a függvények amelyikben használni akarom akkor nem lenne gond maximum több ezer sorra duzzadna a az egy helyen leírt program kód.
Ez átláthatatlanságot eredményezne.Még agyalok mi legyen, de sajnos a függvényesítés nem jó, már próbáltam egyszer, de lehet még szánok rá egy kis időt hátha meg tudom okosan oldani..
-
don_peter
senior tag
Nem büdös, csak nem tudom bele tenni.
Ha beleteszem akkor iszonyat mennyiségű globális változót kellene használnom vagy túlbonyolítani a programot a függvényesítés miatt.
Minden program rész összefügg és folyamatos kapcsolatban kell lenniük a memória kezelése miatt.
Így is van vagy 20db külön függvény már és még lesz legalább ennyi...A switch utasítás meg ugyan az lenne mint az if csak itt nem else if lenne leírva soronként hanem a case: .
-
don_peter
senior tag
Összedobtam egy kis részletet miről is van szó és ami jóbban szemlélteti a dilemmámat.
goto vagy else if megoldással:main(){
menu:
//szükséges változók nullázása
//Sok sor program kód egy while() ciklusban pereg
//goto Meghívhatja saját magán kívül mindegyiket
pofil_betoltve:
//szükséges változók nullázása
//Sok sor program kód egy while() ciklusban pereg
//goto Meghívhatja a menu-t és a start-ot
uj_profil:
//szükséges változók nullázása
//Sok sor program kód egy while() ciklusban pereg
//goto Meghívhatja a menu-t és a pofil_betoltve-t
prifil_szerkesztes:
//szükséges változók nullázása
//Sok sor program kód egy while() ciklusban pereg
//goto Csak a menu-t hívhatja meg
profil_lista:
//szükséges változók nullázása
//Sok sor program kód egy while() ciklusban pereg
//goto Meghívhatja a pofil_betoltve-t és a menu-t
start:
//szükséges változók nullázása
//Sok sor program kód egy while() ciklusban pereg
//goto Egyéb más funkciót fog tudni meghívni és visszatérésként a pofil_betoltve-t
}
main(){
unsigned char navigacio; //Függően attól hogy a felette lévő feltételek miként értékelődnek ki a szerint töltődik fel értékkel
while(1){ //végtelen ciklusban pörög és folyamatosan vizsgálnia a kell a feltételeket
if(navigacio==0){
//hasonlóan mint feljebb
//szükséges változók nullázása
//Sok sor program kód
//navigacio-s változót írjuk felül attól függően melyik feltételbe akarunk navigálni
}else if(navigacio==1){
//-- " --
}else if(navigacio==2){
//-- " --
}else if(navigacio==3){
//-- " --
}else if(navigacio==4){
//-- " --
}else if(navigacio==5){
//-- " --
} //-- " --
}
}Így talán átláthatóbb és érthetőbb a kérdésem.
Ki melyiket használná?
GOTO vagy ELSE IF? -
don_peter
senior tag
válasz
dabadab #4675 üzenetére
Ja értem most már..
Itt sokat nem kell változtatni a menüpontokon szóval csak azokért nem használnék külön struktúrát.Itt egy kis részlet a kódomból:
E programrész felett ellenőrzöm az Eepromban tárolt adatokat és, ha van elmentett profil akkor azt a memóriából kiolvasva betöltöm./****************************************************************************
+ "menu" goto utasítás
+ Ha nincs betölthető profil akkor ugrás a menu goto utasításra
*****************************************************************************/
menu:
lcd_clear();
i=0;
while(1){
keyval = get_key(KeyAlfOrNum); //numerikus gombok engedélyezése
if(keyval=='1'){
//Új profil hozzáadása
}else if(keyval=='2'){
//Aktuális profil szerkesztése
}else if(keyval=='3'){
//Profilok listázása
}else if(keyval=='4'){
//Ugrás a már betöltött profilra
goto profil_betoltve;
}
printf("1. Uj profil hozzaad");
lcd_write(0xC0,0,1,1);
printf("2. Akt. prof. szerk.");
lcd_write(0x94,0,1,1);
printf("3. Profilok listaja ");
lcd_write(0xD4,0,1,1);
printf("4. Vissza ");
lcd_write(0x80,0,1,1);
}Itt látszik valamennyire, hogy oldottam meg a programok közi ugrálást...
-
don_peter
senior tag
válasz
dabadab #4673 üzenetére
Jelenleg programoktól függően külön van választva több részre a teljes program kód.
1. inicializáló függvények és típusdefiníciók, adatstruktúrák, I/O portok beállítása...stb
2. függvények melyek mindent külön kezelnek. (Memória IC, PIC Eeprom, időzítők és egyéb vezérlők)
3. PIC láb definíciók
4. Megszakítások (Magas és alacsony prioritásúak)
5. maga a program amely összevonja a feljebb felsoroltakat. ( main() )Természetesen még van pár része a programnak melyekre nem tértem ki, de nem is fontosak a mondanivalómhoz.
A programban nem kezelhetek mindent adatstruktúrákban, de egy részét abban kell vagy legalább is jobb abban kezelni nyilván.
Maga a főmenüt és elágazásait egy ciklusban kell kezeljem, ha nem "goto" paranccsal ugrálok a ciklusok közt.
Nyilván itt a 4x4-es mátrix interfész miatt kell egyben kezeljem mert azon keresztül tudom csak manuálisan kezelni a programot.
Muszáj pergetnem, különben nem tudom figyelni folyamatosan a gombok állapotát. -
don_peter
senior tag
válasz
buherton #4664 üzenetére
Igazából, most megírtam pár részt, hogy miként működik és elég gyorsan és jól. (elsőre legalább is)
Ha nem "goto" utasítással ugrok vissza egy-egy program részhez akkor egy "else if"-ágas feltétel rendszert kell alkotnom és egy előre deklarált navigációs változóban kell megadjam, hogy éppen melyik ág érvényesüljön.
Így elsőre a "goto" elég átlátható struktúrát adott számomra, de persze nem rossz az "else" ág sem.
Azt olvastam a könyvben, hogy nem jó túl sok feltételt használni a programozás során persze ellenállításként azt is megemlíti, hogy a túl kevés sem jó...
Szóval azt tanácsoljátok, hogy hagyjam a "goto" utasítást?
Nem biztonságos?
Biztonságosabb az "else if" elágazás?A program egy forrasztó állomás vezérlését fogja kiszolgálni.
Pár mondatban összefoglalom hogyan is állok most és mi lenne az elképzelés:Gép bekapcsolásnál ellenőrzés megy végbe mely megvizsgálja az utolsó használt hőprofilt és ha van ilyen akkor betölti és automatikusan felkínálja a program elindítását. (nem térek ki a program futására...)
Ha nincs utoljára betöltött hőprofil vagy hibás akkor ezt a hibát közli és ugrania kell a menüre.
A menüben több menüpontból lehet választani mint pl.: Új profil hozzáadása, Aktuális profil szerkesztése, Elmentett profilok kilistázása, és még pár.
Ezek közt kell gyakorlatilag navigálnom...
-
don_peter
senior tag
Kedves Fórum társak!
Kérdezném tisztelettel, hogy mi a véleményetek a "goto" utasításról? (a könyv nem ajánlja, legalább is nem észnélkül)
Van egy menürendszer melyben elég erősen kell ugrálnom a menürendszerem opciói közt így ezt használnám.
Sok a feltétel és erősen tudnám csökkenteni, ha "goto" utasítással ugrálhatnék.
Gyakorlatilag 5 opció közt kellene manővereznem egy csomó feltételrendszer megfelelései szerint.
Vélemény? -
don_peter
senior tag
Nem másoltam..., én írtam a teszt progit.
Binárisan nem tudtam megjeleníteni mert egy külön függvény kellett volna írnom, így maradt a hexa.
De feljebb korrigáltam is a dolgotNa ja, kellene egy kis rend a fejembe ezekkel kapcsolatban is mert én is tudom, hogy nem jól fogalmazok.
Idővel megtanulom. -
don_peter
senior tag
Mit szerettél volna írni?
Ne hagyjuk mert minden apróság számít.. Jól kell megtanulni mert egy kis hiba is félre vezethet és később gondot okozhat...
Annyiban korrigálnék, hogy az adatstruktúra binárisan tárolja az adatokat és a fórdító gondoskodik a struktúra változóinak feltöltéséről.
Ezért nem árt letesztelni....
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Honor 200 Pro - mobilportré
- Milyen belső merevlemezt vegyek?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Kerékpárosok, bringások ide!
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Fotók, videók mobillal
- Le Mans Ultimate
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Xbox Series X|S
- További aktív témák...
- BenQ PD-2700-U Monitor - Designer 4K 27"
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RX 7600XT 16GB GAMER PC termékbeszámítással
- Új, verhetetlen alaplap sok extrával!
- Csere-Beszámítás! PowerColor Red Devil Spectral White RX 9070XT Videokártya! Bemutató Darab!
- Wilbur Smith könyvek (15 db) egyben
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest