Skocz do zawartości
Lharhard

C/c++ Moze Ktoś Pomoze !

Rekomendowane odpowiedzi

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(); }

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...