Lharhard Opublikowano 12 Listopada 2005 Zgłoś Opublikowano 12 Listopada 2005 Witam, mam powazny problem. Mam stworzone pole bitowe skladajace sie z 2 elementów pod nazwą 'obj'. Wszystko ładnie pieknie. Gdy odwołuje sie do poszczegolnych elementów %d wypisuje mi ich wartosc integer. Tak samo gdy odwołam sie %d do obj ... wypisuje cała liczbe integer ( na która składaja sie te elementy ) Teraz problem. Musze tą liczbe ( obj ) przesłać przez port COM rozkazami outport,outp,outoporb ( do wyboru ) tylko te rozkazy nie chca mi tego przesłac ( bo przesyłaja albo char, albo integer ) Chciałem takze przypisać obj do jakiejś liczby integer i ja wysłać , ale nie można, kompilator stwierdza ze nie moze traktować obj jako integer. Czy jest jakiś sposób zeby dostać liczbe integer z obj, ktore jest polem bitowym ??? Schemat poglądowy: class ramka { public: unsigned add :4 ; unsigned fun :4 ;};ramka obj;void main(void){ clrscr(); printf("\nPracujemy w trybie MASTER\n"); obj.add=0x03; //address obj.fun=0x03; //function printf("\n"); printf("%d",obj.add); printf("\n"); printf("%d",obj.fun); printf("\n"); printf("Znak\Wartosc= %c \ %d",obj,obj); getchar(); } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 12 Listopada 2005 Zgłoś Opublikowano 12 Listopada 2005 Z polami bitowymi to może być różnie na różnych kompilatorach, podaj wiecej informacji na jakim pracujesz, i dobrze bybyło abyś podał cały program m.in. te miejsca gdzie wysyłasz do portu te dane. Wróżką nikt nie jest, ale może to kwestja rozmieszczenia zmiennych wpisanych do pól, spróbój przedzielić zmienne polem o wart. 0 co powinno spowodować że nowe pole zacznie sie od nowego 32 bit segmentu, noi wypadało by też popróbować z róznymi dlugościami pól bitowych. ;] #include <iostream>using namespace std; class ramka {public: unsigned int add :4, :0, fun :4;};int main(){ ramka obj; obj.add=0x03; //address obj.fun=0x03; //function cout << "\nPracujemy w trybie MASTER\n" << endl << obj.add << endl << obj.fun << endl << "Znak Wartosc= " << obj.add << " " << obj.fun; cin.get(); return 0; } Podaj wiecej szczegółów. printf("Znak\Wartosc= %c \ %d",obj,obj); :blink: , nie za bardzo rozumiem , no ale być może to taki "szczegół". W każdym razie podaj najlepiej cały program. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...