GeirGrusom Skrevet 10. mai 2008 Del Skrevet 10. mai 2008 Teknsisk sett skal du også inkludere slike ting i stdafx.h i MSVC Poenget med det er at du sparer en del kompileringstid. Lenke til kommentar
Akidon Skrevet 14. mai 2008 Del Skrevet 14. mai 2008 Jeg har nå en int som er foreksempel "1010 0000". Jeg vil konvertere denne til char. Hvordan gjør jeg dette? Jeg prøvde dette uten suksess; CharAway=(int) LSB; Lenke til kommentar
GeirGrusom Skrevet 14. mai 2008 Del Skrevet 14. mai 2008 Hvis den er 1010 0000 så er dette allerede en char du mener 10100000 00000000 00000000 00000000 f.eks.? får å hente mest signifikante må du flytte bitmønsteret mot høyre 10100000 00000000 00000000 00000000 >> 8 = 00000000 10100000 00000000 00000000 >> 1 = 00000000 01010000 00000000 00000000 Så for å hente ut det mest signifikante bytet i en int, må du flytte bitmønsteret 24 bit til høyre. Lenke til kommentar
Akidon Skrevet 15. mai 2008 Del Skrevet 15. mai 2008 (endret) Joda er med på at det er en char. Men variabelen er nå av typen int og må konverteres til char for å få den sendt ut på seriellporten. Etter mye leting har jeg funnet ut at denne funksjonen til dels fungerer; char CharAway = static_cast<char>(LSB); Men problemet er at det blir static char og ikke bare char. Så jeg kan ikke bruke den til noe Her er ett utdrag fra programmet der jeg må konvertere int til char: int outDataLSB = (LSB & adressHexLSB); int outDataMSB = (MSB & adressHexMSB); char CharAwayLSB = static_cast<char>(outDataLSB); char CharAwayMSB = static_cast<char>(outDataMSB); Seriell.send (CharAwayLSB); Seriell.send (CharAwayLSB); Jeg har for eksempel int outDataMSB som skal konverteres til char CharAwayMSB. Men static char can ikke brukes i Seriell.send. Viss noen har ett raskt tips til hva jeg kan bruke i stedet for static_cast så blir jeg glad. Edit: googlet i vei til ingen nytte. Brukte dette i stedet, men Seriell.send sliter visst alikevell. char CharAway = (char) LSB; Var tydligvis ikke dette som var problemet. Im so screwed Endret 15. mai 2008 av Akidon Lenke til kommentar
Akidon Skrevet 15. mai 2008 Del Skrevet 15. mai 2008 Her er hele programmet: #include <stdlib> #include <cstdlib> #include <stdafx.h> #include <iostream> using namespace std; char innData[256]; char CharAway[16]; char recieved_char[16]; int hexData; int main() { cin >> innData; int hexData = strtol(innData , NULL, 16); int LSB = (hexData & 0x0F)<<4; int MSB = (hexData & 0xF0); cout << "Inndata i desimal " <<hexData << endl; cout << "LSB i desimal " << LSB << endl; cout << "MSB i desimal " << MSB << endl; //char CharAway = static_cast<char>(LSB); char CharAway = (char) LSB; strcpy (recieved_char, CharAway); cout << "Char out " << CharAway << endl; return 0; } Og her er feilmeldingen jeg får: .\RHG GUI v2.01.cpp(52) : error C2734: 'CharAwayLSB' : const object must be initialized if not extern Noen ideer? Lenke til kommentar
GeirGrusom Skrevet 15. mai 2008 Del Skrevet 15. mai 2008 Du bitshifter feil vei på LSB char LSB = ((char)hexData) >> 4; char MSB = (char)hexData & 0x0F; Jeg kan ikke se at feilmeldingen din relaterer til programmet... Lenke til kommentar
Akidon Skrevet 15. mai 2008 Del Skrevet 15. mai 2008 Jeg fant ut av det Bit skiften er riktig. Jeg må ha LSB(data) og MSB(data) som MSB(byte) i byten jeg skal sende. LSB(byte) inneholder adressen til hvor jeg skal lagre MSB(data) og LSB(data). Dette ble uansett løsningen på problemet: unsigned char CharAwayLSB[2];//= (char) outDataLSB; CharAwayLSB[0] = (char) outDataLSB; Funksjonene mine kunne ikke bruke en enkelt char så jeg måtte ha en char tabell, der byten min var i index 0. Lenke til kommentar
Akidon Skrevet 31. mai 2008 Del Skrevet 31. mai 2008 Jaja trenger mere hjelp her Jeg trodde jeg hadde fikset dette men det hadde jeg ikke ^^ Saken er at jeg har en char. For eksempel A som skal konverteres til int. Jeg skal altså ha ascii koden til bokstaven A inn i en integer. Noen som har ett tips til en sliten stakkar? Lenke til kommentar
Akidon Skrevet 31. mai 2008 Del Skrevet 31. mai 2008 Hehe jeg har en variabel i char som for eksempel kan vere a. Den kan også vere mye annet. Lenke til kommentar
Jaffe Skrevet 31. mai 2008 Del Skrevet 31. mai 2008 char a = 'a'; int b = a; Dette kompilerer fint med GCC. I linje nr. 2 skjer en implisitt typecast. Lenke til kommentar
Akidon Skrevet 1. juni 2008 Del Skrevet 1. juni 2008 Dette kompilerer. int kode = 'a'; Men med denne får jeg feilen: error C2440: 'initializing' : cannot convert from 'char [16]' to 'int' char a = 'a'; int b = a; Noen andre lyse ideer? Lenke til kommentar
Giddion Skrevet 1. juni 2008 Del Skrevet 1. juni 2008 Ser ikke noe problemer med code over, kan du legge ved hele koden? koden jeg prøvde å kompilere: int main() { char a = 'a'; int b = a; return 0; } Ut fra erroren så virker det som om a er en char[16] array. Lenke til kommentar
Akidon Skrevet 1. juni 2008 Del Skrevet 1. juni 2008 (endret) Du har nok rett i det. Tingen er at jeg er nødt til å ha ett char array inn. Men i det char arayet er det bare en char. Og denne må konverteres til int. Edit: Jeg tror jeg klarte det recievedIntMSB = int (recieved_charMSB[0]); Her er hele koden: #include <stdlib> #include <cstdlib> #include <stdafx.h> #include <iostream> #include <string> using namespace std; char recieved_charLSB[16]; char recieved_charMSB[16]; char prossessed_charLSB; char prossessed_charMSB; string recieved_transmition; string destination; int main() { cout << "Enter LSB" << endl; cin >> recieved_charLSB; cout << "Enter MSB" << endl; cin >> recieved_charMSB; // Jeg er nødt til å ha ettt char array inn //Så jeg tenkte å konvertere til char. int recievedIntLSB; //denne kan brukes videre recievedIntLSB = int (prossessed_charLSB); int IntLSB = (recievedIntLSB & 0xF0)>>4; cout << "LSB " << recievedIntLSB << endl; //samme her som over int recievedIntMSB; recievedIntMSB = int (prossessed_charLSB); int IntMSB = (recievedIntMSB & 0xf0); cout << "MSB " << recievedIntMSB << endl; int IntData = IntMSB | IntLSB; char IntDataHex[16]; sprintf( IntDataHex, "%X", IntData ); char *DataOutHex; DataOutHex = IntDataHex; recieved_transmition.insert(0,DataOutHex); cout << "String out " << DataOutHex << endl; return 0; } Endret 1. juni 2008 av Akidon Lenke til kommentar
endrebjo Skrevet 14. juni 2008 Del Skrevet 14. juni 2008 (endret) Hvorfor får jeg "undefined reference to `sinf'" når jeg skal kompilere dette? #include <math.h> int main (void) { float a; a = sinf(1.00); return(0); } Edit: gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7) Endret 14. juni 2008 av endrebjo Lenke til kommentar
x871kx6167ss7 Skrevet 14. juni 2008 Del Skrevet 14. juni 2008 (endret) Prøv å endre fra math.h til cmath. Prøvde koden din med gcc(4.3.0) /g++, og hadde ingen problemer med å kompilere den. Endret 14. juni 2008 av Blackslash Lenke til kommentar
endrebjo Skrevet 14. juni 2008 Del Skrevet 14. juni 2008 Her er full output: endre@endre:~$ gcc sine.c /tmp/ccyAEqk6.o: In function `main': sine.c:(.text+0x1a): undefined reference to `sinf' collect2: ld returned 1 exit status endre@endre:~$ Trenger jeg flere pakker enn dette for å kunne kompilere den?: Lenke til kommentar
DeadManWalking Skrevet 14. juni 2008 Del Skrevet 14. juni 2008 Hvilken editor har du brukt? Lenke til kommentar
endrebjo Skrevet 14. juni 2008 Del Skrevet 14. juni 2008 (endret) SciTE. Edit: Alt som har med stdio.h fungerer ypperlig. Så det kan vel ikke være editoren? Endret 14. juni 2008 av endrebjo Lenke til kommentar
x871kx6167ss7 Skrevet 15. juni 2008 Del Skrevet 15. juni 2008 [dewszaq@blackslash ~]$ cat test.c #include <math.h> int main(void) { float a; a = sinf(1.00); return(0); } [dewszaq@blackslash ~]$ gcc test.c [dewszaq@blackslash ~]$ Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå