Jag hänger faktiskt inte med riktigt här ,men:
AntiZ skrev:
När jag senare använder denna define i ex.
så får jag ut på terminalen när jag
Men efter blir alla strängar och liknande fel. Det kommer skräptecken med (verkar vara sista tecknet i strängen före). Även funktionen för att skriva in vad som kommer från terminalen "ballar ur".
Gör jag samma igen
Kod: Markera allt
#print version<cr>
3print version is not a cmd
#
där 3 (verkar) kommer från v0.003.
Gör jag istället
... så fungerar det även efter utskrift.
Det är alltså på samma rad i programmet du skriver antingen
rs232_send_string(VERSION); eller
rs232_send_string("v0.003"); och i första fallet funkar det bara en gång, sedan blir något fel, och i andra fallet fungerar allt bra hela tiden?
Verkar ju lite konstigt. Själv lagrar jag texter i programminnet:
#define VER_NR "3.17" och senare i koden:
uint8_t PROGMEM welcome[] = "\n [" IDENTITY VERSION "SW] " WEBB "\n";
Jag skriver ut texten med
print(welcome);
Och visst skall det gå att ersätta en textsträng med ett macro... Fast jag minns att det inte helt enkelt: det gick
inte att göra så här, av naturliga skäl:
Kod: Markera allt
#define VERSION 3.14
print "ver = VERSION";
man var tvungen att göra så här:
Kod: Markera allt
#define VERSION "3.14"
print "ver = " VERSION;
Textsträngen blir då
ver = 3.14
Men min misstanke med att du får de konstiga felen i din utskrift är ju att det är något lurigt fel i själva programmet. Varför känner den t.ex. inte igen kommandot "print version" (not a cmd), men ändå tror du att den vill skriva ut v0.003 eftersom det syns en trea i utskriften? Är inte det en motsägelse?
Är det verkligen så att felet bara uppstår när du byter "v0.0003" mot VERSION utan att du ändrar något annat alls? Annat namn på makrot hjälper inte? Funkar programmet verkligen igen om du sätter tillbaks "v0.0003" igen? Du kanske råkat ändra nånstans av misstag i koden när du pysslade med den?
Vilken kompilator är det? GCC?