Avatar billede mickni33 Nybegynder
16. april 2004 - 09:34 Der er 10 kommentarer og
2 løsninger

serielforbindelse - itoa

Når dette vises i min hyperterminal skriver den kun et tegn ud, har på fornemmelsen at det er det første tegn i feks 78 så vises der et 7 i hyperterminalen.

(kadancen aktiveres hvergang jeg trykker på en knap som simulere en pedalomdrejning)

char* nykadance;

itoa((60000/ialtseconds),nykadance,10);
outportb(DATAPORT,*nykadance);

Hvis jeg bytter outportb( ) ud med en cout<< og skriver kadancen som en integer så virker det fint.
Avatar billede jpk Nybegynder
16. april 2004 - 09:42 #1
Du skal have char array

char nykadance[30];
Avatar billede mickni33 Nybegynder
16. april 2004 - 09:46 #2
Det har jeg også prøvet med, Har lige tjekket det ER kun første tegn der udskrives, dvs der sendes kun første tegn i kadancen over til hyperterminalen.
hmmmm prøver lige igen med char[]
Avatar billede mickni33 Nybegynder
16. april 2004 - 09:47 #3
Jooo det giver det samme når jeg bruger char[]
Avatar billede jpk Nybegynder
16. april 2004 - 09:52 #4
Hvad mener du, virker det?

Under alle omstændigheder skal du selv seplere en buffer med allokeret memory til itoa, den allokerer ikke noget!
Avatar billede mickni33 Nybegynder
16. april 2004 - 09:57 #5
Nej det virker ikke den skriver stadig kun første tegn. 
Hvad mener du med 'allokeret memory til itoa'.

Prøver med en integer i stedet, det virker nemlig.
Kan bare bedst lide at lave det til en streng da jeg så kan sende både 'kadance, distance, hastighed' i en streng adskilt feks af en #
istedet for tre gange en integer.
Avatar billede jpk Nybegynder
16. april 2004 - 10:00 #6
Altså, hvis det er tal, hvorfor så ikke sende dem som tal?
Det fylder jo mindre og giver derfor mindre belastning og går hurtigere...

Men det jeg siger mht. itoa er:
itoa allokerer ikke hukommelse til den formaterede streng, det skal du selv!
Altså er det ikke nok at give metoden en char* som input, den skal rent faktisk pege på noget memory metoden kan lægge resultatet i.
Avatar billede mickni33 Nybegynder
16. april 2004 - 10:02 #7
Nååå ok prøver lige engang til med itoa().
lav lige et svar
Avatar billede jpk Nybegynder
16. april 2004 - 10:03 #8
bufferen skal egentlig være lidt større for itoa, da den formaterede streng kan være 33 karakterer (inklusiv plads til nullterminator):

char nykadance[33];
Avatar billede jpk Nybegynder
16. april 2004 - 10:05 #9
Okat, det gør jeg...
Avatar billede mickni33 Nybegynder
24. april 2004 - 19:37 #10
Fik det ikke til at virke med char[] og char*.
men
jeg skriver bare cout<<nykadance<<"#"<<enAndenVariabel<<"#"; (er overloadet). så selvom der sendes som en integer på den ene side af serieforbindelsen så modtages det automatisk som en streng på den anden side
Avatar billede jpk Nybegynder
26. april 2004 - 08:19 #11
Hvis du sender en integer, modtages der nok også en integer!

cout kan udskrive værdien af string, float, int osv.
Avatar billede mickni33 Nybegynder
26. april 2004 - 09:04 #12
hhhmmmmm ja det kan godt være, for jeg har et java program som modtager strengen og java laver sikkert et eller andet, så det er muligt at lave strengen om til en 'streng'
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester