including cpp-filer MPIDE (Uno32) "LÖST"
Re: including cpp-filer MPIDE (Uno32)
Ok, *vad* är det som går fel då? Du har ju ingen aning heller så då kan det mycket väl vara att roderpil inte alls innehåller det du tror att den ska...
Sätt en brytpunkt i din main och stega sedan igenom rad för rad i debuggern, kolla hur programmet exekverar, kolla innehållet i variablerna så kommer du hitta felet...kallas felsökning och är en fundamental del i programutvecklingsarbetet.
/johan
Sätt en brytpunkt i din main och stega sedan igenom rad för rad i debuggern, kolla hur programmet exekverar, kolla innehållet i variablerna så kommer du hitta felet...kallas felsökning och är en fundamental del i programutvecklingsarbetet.
/johan
Re: including cpp-filer MPIDE (Uno32)
eftersom TS skriver
"Ja det spelar ju inte så stor roll vad den gör sedan eftersom den inte ens går att kompilera."
blir det lite svårt
Vad får du för felkod vid kompileringen?
Bocka i
File -> Preferences -> Show verbose output
expandera konsolfönstret , det svarta i nederkant,
läs vad den klagar på.
"Ja det spelar ju inte så stor roll vad den gör sedan eftersom den inte ens går att kompilera."
blir det lite svårt

Vad får du för felkod vid kompileringen?
Bocka i
File -> Preferences -> Show verbose output
expandera konsolfönstret , det svarta i nederkant,
läs vad den klagar på.
- SeniorLemuren
- Inlägg: 8335
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: including cpp-filer MPIDE (Uno32)
Det där var lågt. Kan du inte tillräckligt om detta problem för att kunna komma med en lösning så tycker jag du kan hålla inne med spydigheter av den här typen. Eller trampade jag dig på tårna när jag påstod att det verkar vara dåligt med kunskaper i Arduinovärlden.mri skrev:Jag tror du borde lära dig grunderna i c först före du ger dig på svårare saker. Börja med att blinka diod, och då menar jag att du faktiskt förstår vad som händer i hela ditt arduino program. Sen blinka dioden från en annan funktion än loop(). Sen flytta den funktionen till en annan fil, osv...
Som det är nu gissar du dig fram...
Jag har programmerat i C flera år och hade inga som helst problem med att göra predis vad jag ville i MPLAB. Arduinos IDE är emellertid anorlunda och det är svårt att hitta rätt syntax osv. här. Detta beror förmodligen på att de som håller till i Arduinovärden inte så ofta gör just något annat än klipper och klistrar.
- SeniorLemuren
- Inlägg: 8335
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: including cpp-filer MPIDE (Uno32)
Det är klart att roderpil.c innehåller precis det den skall göra. Programmet fungerar precis som det skall när det körs för sig själv.johano skrev:Ok, *vad* är det som går fel då? Du har ju ingen aning heller så då kan det mycket väl vara att roderpil inte alls innehåller det du tror att den ska...
Sätt en brytpunkt i din main och stega sedan igenom rad för rad i debuggern, kolla hur programmet exekverar, kolla innehållet i variablerna så kommer du hitta felet...kallas felsökning och är en fundamental del i programutvecklingsarbetet.
/johan
Sedan är det ju så här då att sitta och felsöka när det borde finnas någon som mycket enkel kunde visa hur header och CPP- filerna skall se för att det skall fungera. "...kallas felsökning" konstigt vad en del blir spydiga när de inte kan presentera ett enkelt svar.
- SeniorLemuren
- Inlägg: 8335
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: including cpp-filer MPIDE (Uno32)
I detta inlägg finns fellistan vid kompileringen samt hur jag gjort header occ CPP filennifelheim skrev:eftersom TS skriver
"Ja det spelar ju inte så stor roll vad den gör sedan eftersom den inte ens går att kompilera."
blir det lite svårt
Vad får du för felkod vid kompileringen?
Bocka i
File -> Preferences -> Show verbose output
expandera konsolfönstret , det svarta i nederkant,
läs vad den klagar på.
Re: including cpp-filer MPIDE (Uno32)
Åh jag ber tusen ggr om ursäkt att jag tagit av min tid och försökt hjälpa dig, det var verkligen inte meningen att komma med dumma ideer om vad som kan vara fel när du redan har allt klart för dig. Ja utom då möjligen den lilla detaljen varför det inte funkar...
Lycka till önskar jag dig, jag ska inte besvära dig mer.
/johan
Lycka till önskar jag dig, jag ska inte besvära dig mer.
/johan
- SeniorLemuren
- Inlägg: 8335
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: including cpp-filer MPIDE (Uno32)
Jag eftersöker inte vad som är fel. Jag letar efter någon som är kapabel att fylla i de rader som behövs i header och CPP-filen men det klarade du ju tyvärr inte av.
- SeniorLemuren
- Inlägg: 8335
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: including cpp-filer MPIDE (Uno32)
Ok vi tar det igen.
Jag har ett program dör jag kan välja att göra olika saker..
t.ex som att rita en bild på en display.
jag skriver då i mitt program: ritabild();
Jag har en rutin i samma program som ropar på en biblioteksrutin som ritar bilden.
void ritabild(){
myGLCD.drawBitmap (130, 80, 60, 150, roderpil,90,30,125);
//Senare kanske jag vill göra lite mer här, men det hoppar över så länge.
}
OK klart så långt.
Nu vill jag inte ha denna rutin i detta program utan vill lägga det i ett annat progam eller tab som det kalls i Arduinovörlden.
Jag har då sökt läst testat ett antal lösningar på hur headerfilen och CPP filen skall se ut. orkar man gå tillbaka i mina inlägg så kan man se vad som inte fungerar sedan kan man antingen komma med förslag ock påstående om vad som är fel eller som någon klok man föreslog, felsöka,
eller så kan man helt radikalt leverera dom fåtal rader som H och CPP-filen skall innehålla för att det skall funka. Svårare än så är det inte.
Självfallet så krävs det ju att den som levererar dessa rader också kan sin kateches annars uppstår ju tyvärr bara fler och fler frågetecken och jag tycker det har blivit nog av den varan nu. Det är ju inte kärnforskning det är frågan om utan kanske 5 programrader. Det är inte så att jag är otacksam för de hjälpförsök som ramlat in, men man börjar ju fundera på att hoppa tillbaka till MPLAB-världen igen och se Arduino som den parentes det kanske är.
Jag har ett program dör jag kan välja att göra olika saker..
t.ex som att rita en bild på en display.
jag skriver då i mitt program: ritabild();
Jag har en rutin i samma program som ropar på en biblioteksrutin som ritar bilden.
void ritabild(){
myGLCD.drawBitmap (130, 80, 60, 150, roderpil,90,30,125);
//Senare kanske jag vill göra lite mer här, men det hoppar över så länge.
}
OK klart så långt.
Nu vill jag inte ha denna rutin i detta program utan vill lägga det i ett annat progam eller tab som det kalls i Arduinovörlden.
Jag har då sökt läst testat ett antal lösningar på hur headerfilen och CPP filen skall se ut. orkar man gå tillbaka i mina inlägg så kan man se vad som inte fungerar sedan kan man antingen komma med förslag ock påstående om vad som är fel eller som någon klok man föreslog, felsöka,

Självfallet så krävs det ju att den som levererar dessa rader också kan sin kateches annars uppstår ju tyvärr bara fler och fler frågetecken och jag tycker det har blivit nog av den varan nu. Det är ju inte kärnforskning det är frågan om utan kanske 5 programrader. Det är inte så att jag är otacksam för de hjälpförsök som ramlat in, men man börjar ju fundera på att hoppa tillbaka till MPLAB-världen igen och se Arduino som den parentes det kanske är.
-
- Inlägg: 1407
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: including cpp-filer MPIDE (Uno32)
Enligt bilden så blandar du C och C++
http://en.cppreference.com/w/cpp/langua ... ge_linkage
http://en.cppreference.com/w/cpp/langua ... ge_linkage
Ingen alls. Det TS listade är länkningsfel, inte kompileringsfel.nifelheim skrev:Vad får du för felkod vid kompileringen?
- SeniorLemuren
- Inlägg: 8335
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: including cpp-filer MPIDE (Uno32)
Nu har saken komkit i ett lite annat läge. Jag har också mistänkt att någon fil inte var med i länkningen. Felet var egentligen ganska uppenbart och syns på den bild jag lagt in i ett tidigare inlägg som visar MPIDE. Jag hade råkat döpa cpp filen till UTFT_visa_roder.CPP vilket ställde till det. skulle varit UTFT_visa_roder.cpp (Att ni inte såg det).
. Den länkades aldrig in.
Det gör den nu och jag får ett annat fel som någon kanske bättre kan förklara vad det beror på.
Till att börja med kan jag säga att jag testat med att skriva heade och cpp-filerna som både C och C++ felmeddelandena blir de samma i båda fallen. Kommenterar jag bort "myGLCD.drawBitmap (130, 80, 60, 150, roderpil,90,30,125);" i cpp-filen och skriver något rubbish t.ex "int i = i + 1 ;" så går kompileringen igenom utan fel.
roderpil är c-filen som innehåller bilden på pilen, den är också declarerad i huvudprogrammet.
Men (och här får jag medge att mina kunskaper är lite bristfälliga så att mri blir glad)
Hur rättar jag till felmedelandet om libraryfunkriionen myGLCD?
Felmeddelandet om roderpil försvinner om jag declarerar den även i cpp-filen

Det gör den nu och jag får ett annat fel som någon kanske bättre kan förklara vad det beror på.
Till att börja med kan jag säga att jag testat med att skriva heade och cpp-filerna som både C och C++ felmeddelandena blir de samma i båda fallen. Kommenterar jag bort "myGLCD.drawBitmap (130, 80, 60, 150, roderpil,90,30,125);" i cpp-filen och skriver något rubbish t.ex "int i = i + 1 ;" så går kompileringen igenom utan fel.
myGLCD är ju från grafikbiblioteket som är declarerat i huvudprogrammet.visaroder.cpp: In member function 'void rclass::ritapil()':
visaroder.cpp:6:6: error: 'myGLCD' was not declared in this scope
visaroder.cpp:6:43: error: 'roderpil' was not declared in this scope
roderpil är c-filen som innehåller bilden på pilen, den är också declarerad i huvudprogrammet.
Men (och här får jag medge att mina kunskaper är lite bristfälliga så att mri blir glad)

Felmeddelandet om roderpil försvinner om jag declarerar den även i cpp-filen
Kod: Markera allt
#include "visaroder.h"
rclass::rclass()
{}
extern unsigned short roderpil[0x2328];
void rclass::ritapil(){
myGLCD.drawBitmap (130, 80, 60, 150, roderpil,90,30,125);
}
rclass roder = rclass();
Re: including cpp-filer MPIDE (Uno32)
myGLCD har du skapat i huvudprogrammet:
I alla andra filer som ska separatkompileras så ska du bara hänvisa till den som en externt definerad variabel:
Kod: Markera allt
UTFT myGLCD(ITDB32S,38,39,40,41);
Kod: Markera allt
#include <UTFT.h>
extern UTFT myGLCD;
- SeniorLemuren
- Inlägg: 8335
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: including cpp-filer MPIDE (Uno32)
Gräsligt mycket tack Wedge. Jag hade precis 10 minuter innan detta inlägg fått samma svar i chipkit.nets forum och testat. Det fungerar nu som det skall.
Tack ni alla som gjort välmenta försök att lösa problemet. Synd att ni missade det där med CPP som ju egentligen var huvudorsaken till allt strul.
Får passa på att fråga MR Andersson vad jag skulle göra med denna information. >>Enligt bilden så blandar du C och C++<<
Eftersom det tydligen fungerar med C++ varianten som jag använder nu, så var ju denna information av typen "förvilla mer om det går". Men tack du också för att du tog dig tid.
Tack ni alla som gjort välmenta försök att lösa problemet. Synd att ni missade det där med CPP som ju egentligen var huvudorsaken till allt strul.

Får passa på att fråga MR Andersson vad jag skulle göra med denna information. >>Enligt bilden så blandar du C och C++<<
Eftersom det tydligen fungerar med C++ varianten som jag använder nu, så var ju denna information av typen "förvilla mer om det går". Men tack du också för att du tog dig tid.

Re: including cpp-filer MPIDE (Uno32) "LÖST"
Nu verkar det här vara löst men jag kommenterar mitt "bidrag" ändå.
Formuleringen blev inte längre eftersom jag postade via smartlur. Nu sitter jag vid ett riktigt tangentbord och kan brodera ut texten lite.
Jag kan bara reagera på vad du skrivit, jag känner dig inte och vet inte vad du kan. Men baserat på din aggresiva stil i frågeställningarna och faktumet att du hade flera fundamentala fel i C koden; t.ex. flera funktioner med samma namn, deklarera en funktion istället för att göra ett funktionsanrop, förståelse hur man löser kompilerings/länknings problem, så svarade jag som jag svarade.
Dvs. har man grundläggande luckor i hur ett C program byggs upp och den grundläggande C syntaxen, ja då blir det jättesvårt att göra större program. Man måste lära sig krypa förrän man börjar gå...
Vad jag menar med "aggressiva stil" är att du i dina frågor liksom kastar dina problem på de som försöker hjälpa dig, och blir irriterad när den rätta lösningen inte dyker upp fort nog.
Jag är medveten om att du kan ta det jag skrivit på fel sätt... men tja, det hoppas jag inte.
Jag ber om ursäkt. Min avsikt var inte att göra ett påhopp eller att vara elak. Du trampade inte på mina tår.Det där var lågt. Kan du inte tillräckligt om detta problem för att kunna komma med en lösning så tycker jag du kan hålla inne med spydigheter av den här typen. Eller trampade jag dig på tårna när jag påstod att det verkar vara dåligt med kunskaper i Arduinovärlden.
Formuleringen blev inte längre eftersom jag postade via smartlur. Nu sitter jag vid ett riktigt tangentbord och kan brodera ut texten lite.
Jag kan bara reagera på vad du skrivit, jag känner dig inte och vet inte vad du kan. Men baserat på din aggresiva stil i frågeställningarna och faktumet att du hade flera fundamentala fel i C koden; t.ex. flera funktioner med samma namn, deklarera en funktion istället för att göra ett funktionsanrop, förståelse hur man löser kompilerings/länknings problem, så svarade jag som jag svarade.
Dvs. har man grundläggande luckor i hur ett C program byggs upp och den grundläggande C syntaxen, ja då blir det jättesvårt att göra större program. Man måste lära sig krypa förrän man börjar gå...
Vad jag menar med "aggressiva stil" är att du i dina frågor liksom kastar dina problem på de som försöker hjälpa dig, och blir irriterad när den rätta lösningen inte dyker upp fort nog.
Sorry, men de flera års erfarenhet kunde jag inte skymta i det du postade i den här tråden.Jag har programmerat i C flera år och hade inga som helst problem med att göra predis vad jag ville i MPLAB. Arduinos IDE är emellertid anorlunda och det är svårt att hitta rätt syntax osv. här. Detta beror förmodligen på att de som håller till i Arduinovärden inte så ofta gör just något annat än klipper och klistrar.
Jag är medveten om att du kan ta det jag skrivit på fel sätt... men tja, det hoppas jag inte.
-
- Inlägg: 1407
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: including cpp-filer MPIDE (Uno32)
Jag ber om ursäkt om jag felaktigt förväntade mig att någon som programmerat i flera år skulle klara av att läsa dokumentation.SeniorLemuren skrev:Får passa på att fråga MR Andersson vad jag skulle göra med denna information. >>Enligt bilden så blandar du C och C++<<
Eftersom det tydligen fungerar med C++ varianten som jag använder nu, så var ju denna information av typen "förvilla mer om det går". Men tack du också för att du tog dig tid.
För att länka C++ med C behövs extern "C", tex i din .cpp-fil
Kod: Markera allt
extern "C" {
#include "min_C_header.h"
}
Kod: Markera allt
#ifdef __cplusplus
extern "C" {
#endif
void min_c_funktion();
#ifdef __cplusplus
}
#endif
Om det ändå fungerar att blanda språken utan extern "C" så är din kompilator trasig och kompilerar C-koden som C++