PDU-Mode

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 26 11 2024  00:23:59      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
PDU-Mode

    







BID = 534823

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich
 

  


Hallo liebe Forengemeinde

Ich habe folgendes Problem:

Um eine SMS zu versenden benötige ich den PDU-Mode. Leider habe ich mit sehr viel Zeitaufwand in die falsche Richtung programmiert

Nun komme ich leider nicht mehr weiter.

Der PDU-Mode ist wie folgt aufgebaut:

Nehmen wir an, dass im Text der SMS "hello" steht, dann müssten in der Länge der Nutzdaten 05H stehen und als 7-Bit codierter Text
E8329BFD06
stehen. Nun wie sind die Daten in diesen 5 Byte codiert ? Schreiben wir mall alle 5 Zeichen des Wortes "hello" als 7-bit Repräsentation mit einer Bit-Folge

1101000 1100101 1101100 1101100 1101111

Da diese Bit-Folge beginnend beim ersten Zeichen "h" und dem kleinsten Bit (MSB first) beginnend übertragen wird müssen wir diese Bit-Folge in ihrer Reihenfolge der Aussendung umformen (jedes einzelne Zeichen umdrehen)

0001011 1010011 0011011 0011011 1111011

Ordnen wir nun die 7-Bit als 8-Bit Folge und füllen die restlichen Bits mit 0 auf

00010111 01001100 11011001 10111111 01100000

Die Übergabe der Daten erfolgt nun wieder als 8-Bit Normaldarstellung (LSB first)

11101000 00110010 10011011 11111101 00000110

und schreiben dies als HEX-Darstellung, so erhalten wir den Zeichenstring zur Übergabe

E8 32 9B FD 06

Bislang habe ich folgender Programmcode:



Code :



include "Headerfiles.h"

unsigned char *ZText;
unsigned char Textleer1[]=" ""[1code]

include "Headerfiles.h"

unsigned char *ZText;
unsigned char Textleer1[]=" ""\0"; //Zeile löschen

uint8_t i,y;
uint8_t z;
unsigned char Nummer[]="43647364763476";
unsigned char Text[]="AB";
unsigned char Textbin[sizeof(Text)*8];
unsigned char Strausgabe[sizeof(Text)*2];;

unsigned char *strtext;
unsigned char *strin;
unsigned char *strout;
unsigned char *strbin;


static unsigned char *dual(unsigned char arg, unsigned char *puffer)

{

for(i=0;i<8;i++,arg <<= 1)
{
*puffer = (arg&0x80 ? '1' : '0');
puffer--;

if(i==0)
{
puffer++;
}
}

return puffer;
}

unsigned char* PDU()
{

strin=(unsigned char*)Text;
strout=(unsigned char*)Textbin;
unsigned char *strret=strout;
z=0;

ZText=strin; //Übergabe des Textes
lcd_text(0x00);
warten(1);

while(*strin)
{
strout=dual(*strin, strout);
strin++;

if(z<8)
{
z++;
}
if(z==8)
{
z=0;
}
};

ZText=strret; //Übergabe des Textes
lcd_text(0x00);
warten(3);

for(i=0;i<z;i++,strout++)
{
*strout='0';
}

strbin=strout;

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x00);
ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=strbin; //Übergabe des Textes
lcd_text(0x40);

warten(3);



unsigned int zahl=0;
y=0;


while(*strbin)
{
for(i=0;i<4;i++,strbin++)
{
if(*strbin=='1')
{
if(i==0)
{
zahl+=8;
}
if(i==1)
{
zahl+=4;
}
if(i==2)
{
zahl+=2;
}
if(i==3)
{
zahl+=1;
}

}
}

if(zahl<10)
{
Strausgabe[y]=(unsigned char)zahl+48;
}
else
{
if(zahl==10)
{
Strausgabe[y]='A';
}
if(zahl==11)
{
Strausgabe[y]='B';
}
if(zahl==12)
{
Strausgabe[y]='C';
}
if(zahl==13)
{
Strausgabe[y]='D';
}
if(zahl==14)
{
Strausgabe[y]='E';
}
if(zahl==15)
{
Strausgabe[y]='F';
}
}

Strausgabe[y+1]='\0';

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=(unsigned char*)Strausgabe; //Übergabe des Textes
lcd_text(0x40);

y++;
zahl=0;
}
warten(1);
};
[/code1]"; //Zeile löschen

uint8_t i,y;
uint8_t z;
unsigned char Nummer[]="43647364763476";
unsigned char Text[]="AB";
unsigned char Textbin[sizeof(Text)*8];
unsigned char Strausgabe[sizeof(Text)*2];;

unsigned char *strtext;
unsigned char *strin;
unsigned char *strout;
unsigned char *strbin;


static unsigned char *dual(unsigned char arg, unsigned char *puffer)

{

for(i=0;i<8;i++,arg <<= 1)
{
*puffer = (arg&0x80 ? '1' : '0');
puffer--;

if(i==0)
{
puffer++;
}
}

return puffer;
}

unsigned char* PDU()
{

strin=(unsigned char*)Text;
strout=(unsigned char*)Textbin;
unsigned char *strret=strout;
z=0;

ZText=strin; //Übergabe des Textes
lcd_text(0x00);
warten(1);

while(*strin)
{
strout=dual(*strin, strout);
strin++;

if(z<8)
{
z++;
}
if(z==8)
{
z=0;
}
};

ZText=strret; //Übergabe des Textes
lcd_text(0x00);
warten(3);

for(i=0;i<z;i++,strout++)
{
*strout='0';
}

strbin=strout;

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x00);
ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=strbin; //Übergabe des Textes
lcd_text(0x40);

warten(3);



unsigned int zahl=0;
y=0;


while(*strbin)
{
for(i=0;i<4;i++,strbin++)
{
if(*strbin=='1')
{
if(i==0)
{
zahl+=8;
}
if(i==1)
{
zahl+=4;
}
if(i==2)
{
zahl+=2;
}
if(i==3)
{
zahl+=1;
}

}
}

if(zahl<10)
{
Strausgabe[y]=(unsigned char)zahl+48;
}
else
{
if(zahl==10)
{
Strausgabe[y]='A';
}
if(zahl==11)
{
Strausgabe[y]='B';
}
if(zahl==12)
{
Strausgabe[y]='C';
}
if(zahl==13)
{
Strausgabe[y]='D';
}
if(zahl==14)
{
Strausgabe[y]='E';
}
if(zahl==15)
{
Strausgabe[y]='F';
}
}

Strausgabe[y+1]='[1code]

include "Headerfiles.h"

unsigned char *ZText;
unsigned char Textleer1[]=" ""\0"; //Zeile löschen

uint8_t i,y;
uint8_t z;
unsigned char Nummer[]="43647364763476";
unsigned char Text[]="AB";
unsigned char Textbin[sizeof(Text)*8];
unsigned char Strausgabe[sizeof(Text)*2];;

unsigned char *strtext;
unsigned char *strin;
unsigned char *strout;
unsigned char *strbin;


static unsigned char *dual(unsigned char arg, unsigned char *puffer)

{

for(i=0;i<8;i++,arg <<= 1)
{
*puffer = (arg&0x80 ? '1' : '0');
puffer--;

if(i==0)
{
puffer++;
}
}

return puffer;
}

unsigned char* PDU()
{

strin=(unsigned char*)Text;
strout=(unsigned char*)Textbin;
unsigned char *strret=strout;
z=0;

ZText=strin; //Übergabe des Textes
lcd_text(0x00);
warten(1);

while(*strin)
{
strout=dual(*strin, strout);
strin++;

if(z<8)
{
z++;
}
if(z==8)
{
z=0;
}
};

ZText=strret; //Übergabe des Textes
lcd_text(0x00);
warten(3);

for(i=0;i<z;i++,strout++)
{
*strout='0';
}

strbin=strout;

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x00);
ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=strbin; //Übergabe des Textes
lcd_text(0x40);

warten(3);



unsigned int zahl=0;
y=0;


while(*strbin)
{
for(i=0;i<4;i++,strbin++)
{
if(*strbin=='1')
{
if(i==0)
{
zahl+=8;
}
if(i==1)
{
zahl+=4;
}
if(i==2)
{
zahl+=2;
}
if(i==3)
{
zahl+=1;
}

}
}

if(zahl<10)
{
Strausgabe[y]=(unsigned char)zahl+48;
}
else
{
if(zahl==10)
{
Strausgabe[y]='A';
}
if(zahl==11)
{
Strausgabe[y]='B';
}
if(zahl==12)
{
Strausgabe[y]='C';
}
if(zahl==13)
{
Strausgabe[y]='D';
}
if(zahl==14)
{
Strausgabe[y]='E';
}
if(zahl==15)
{
Strausgabe[y]='F';
}
}

Strausgabe[y+1]='\0';

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=(unsigned char*)Strausgabe; //Übergabe des Textes
lcd_text(0x40);

y++;
zahl=0;
}
warten(1);
};
[/code1]';

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=(unsigned char*)Strausgabe; //Übergabe des Textes
lcd_text(0x40);

y++;
zahl=0;
}
warten(1);
};



Das mit der Binär in eine Zahl und dann in Hex umwandeln funktioniert.

Leider bin ich nicht so Erfahren in C programmieren.

Das Problem besteht darin die einzelnen Binären 8 Bit umwandeln zusammensetzen und wieder ausseinandersplitten um wieder das ganze zusammenzusetzen.

Bin schon am verzweifeln

Mfg
Rambodischien


BID = 534825

cholertinu

Inventar



Beiträge: 3755
Wohnort: CH

 

  


Zitat :
Rambodischien hat am 16 Jul 2008 10:32 geschrieben :

und dem kleinsten Bit (MSB first)

was verwechselt? MSB

BID = 534827

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Die Beschreibung ist nicht von mir die habe ich aus dem Internet.

Mfg
Rambodischien

BID = 534889

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Habe eine andere Lösung gefunden.

Jetzt stoße ich auf folgendes Problem.

Ich will einen Zeiger an die letzte Stelle verweisen und danach mit *pointer-- bis an die letzte Stelle gehen.

Meine Frage: Wie kann ich den pointer auf die letze Stelle eines Feldes verweisen?

Mfg
Rambodischien

BID = 534894

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Ich habe jetzt einen Code von 2141 und der sollte aber 4121 lauten.

Wie kann ich das am einfachsten realisieren?

Ich habe es schon so probiert aber leider kein Erfolg.

In dem unsigned char Strausgabe steht 2141.

uint8_t z=1;
uint8_t i;

for(i=sizeof(Strausgabe)-1;i>0;i=i-2)
{
Strausgabe1[z-1]=Strausgabe[i-1];
Strausgabe1[z]=Strausgabe[i];
z=z+2;
}

BID = 534925

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hallo Rambodieschen,


Zitat :

Leider bin ich nicht so Erfahren in C programmieren.

Dann, nimms mir nicht übel, mache doch erstmal was anderes.
Du machst hier Klimmzüge, die nicht nötig wären.

Schon allein die Tatsache, die Bytes erstmal in einen 8 Byte langen String aus Nullen und Einsen umzurechnen kostet Zeit und Speicher. Dann diesen, ich nenne es mal Binärstring wieder zu zerteilen, in Hex umzurechnen etc. ist völlig fehl am Platze, da es wiederum Zeit und Speicher verbraucht. Speicher deshalb, weil du von anfang an einen Puffer reservieren musst - dynamisch holt man sich auf µControllern i.d.R. keinen Speicher.

Bedenke folgendes: 7 Bytes nehmen in dieser Kodierung nur noch 8 Bytes ein, klar.
Das kann man mit 15 Byte Puffer und ein paar Schiebeoperationen erledigen, ohne komplexe Umrechnungen vorzunehmen. Allein die Tatsache, dass in deinem Quelltext noch


Zitat :

[...]
{

if(zahl==10)

{

Strausgabe[y]='A';

}

if(zahl==11)

{

Strausgabe[y]='B';

}

if(zahl==12)

{

Strausgabe[y]='C';

}

if(zahl==13)

{

Strausgabe[y]='D';

}

if(zahl==14)

{

Strausgabe[y]='E';

}

if(zahl==15)

{

Strausgabe[y]='F';

}

[...]

vorhanden ist, lässt für mich den Schluss übrig, dass die ganze Sitzung in dem Thread, in dem ich viel geschrieben habe, dir nicht viel gebracht hat. Es treten immernoch solche Sachen
Zitat :
Ich will einen Zeiger an die letzte Stelle verweisen und danach mit *pointer-- bis an die letzte Stelle gehen.
ein, die keinen Sinn ergeben, wir erinnern uns: *pointer greift durch Dereferenzierung auf den Inhalt, auf den der Zeiger zeigt, zu. Es wird behandelt, wie der Datentyp, auf den der Zeiger zeigt; in diesem Fall müsste es schlicht pointer-- heißen.

Also, überdenk' das nochmals - mach erstmal einfachere Sachen, und du wirst merken, wie einfach man auch dieses, mit "reinen Binärdaten" und Operationen auf Bitebene machen kann; ohne Rechnungen mit ASCII-Zeichen .

Edit: OK, ich rudere etwas zurück: Es wird in deinem Modus tatsächlich sehr merkwürdig kodiert. Eine Umrechnung ist also doch nötig, aber trotzdem einfacher mit Bitoperationen zu erledigen. Eine Routine, die die Bits in einem Char umdreht ist recht einfach aufzubauen.

_________________


[ Diese Nachricht wurde geändert von: DonComi am 16 Jul 2008 20:33 ]

BID = 534942

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Tut mir leid ich weiß es ist ein großes Projekt, aber ich brauche das für die Schule.
Leider hatten wir in der Schule nie C-Programmiert deshalb muss es so gehen. Im Moment möchte ich nur die Sache zum laufen bringen.

Das mit dem pointer-- ist klar habe mich verschrieben (bin ein bisschen durcheinander ).

Wieso funktionert der Code nicht:

Zitat :

Ich habe jetzt einen Code von 2141 und der sollte aber 4121 lauten.

Wie kann ich das am einfachsten realisieren?

Ich habe es schon so probiert aber leider kein Erfolg.

In dem unsigned char Strausgabe steht 2141.

uint8_t z=1;
uint8_t i;

for(i=sizeof(Strausgabe)-1;i>0;i=i-2)
{
Strausgabe1[z-1]=Strausgabe[i-1];
Strausgabe1[z]=Strausgabe[i];
z=z+2;
}


Mfg
Rambodischien

BID = 534951

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Habe einen Fehler gefunden ich muss anstatt uint8_t i muss ich int i verwenden. Leider funktioniert das mit dem sizeof(Strausgabe) nicht.

Hat einer eine Idee warum das nicht funktioniert?

Mfg
Rambodischien

BID = 535069

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hallo Ramdodieschen,

Ich habe mir nochmals Gedanken gemacht.
Also, was du brauchst sind folgende Module:

1. Eine Routine, die die Bits umsortiert, und zwar wird das LSB das MSB. Dabei ist die Information, die nach dem Umsortieren der Bits an der 0. Stelle steht unwichtig. Dort wandert ja später das 7. Bit des zweiten Zeichens rein. Also, Erster Schritt: alle Bits umsortieren, quasi das Byte auf Bitebene spiegeln. Dazu habe ich mal eine Funktion hingekritzelt, die sicherlich noch erweiterbar wäre; sie soll aber ja nur das Prinzip darstellen.

uint8_t swapbits(uint8_t datain)
{

    uint8_t tmp=0;
    uint8_t i,j;

    for(i=0, j=7;i<8;i++, j--){

      if( datain & (1<<i)) tmp |= 1<<j;

    };
    return tmp;

};
Man sieht zwei Iteratoren, einer beginnt beim LSB, der andere beim MSB. Man kanns mit C noch wesentlich schöner kodieren, muss aber nicht immer sein .
Z.B. wäre es denkbar, das alles auf Zeiger umzuschreiben, da du viel Zeigerarithmetik verwenden musst. (auch um Speicher zu sparen -> die einmal umgedrehten Bytes können sogar an der gleichen Stelle gespeichert werden, wo sie vorher waren).
Versuche mal, den Kode zu kommentieren.
2. Ein Modul, welches auf Zeigerebene die Bits umkopiert, und zwar in den durch die neue Kodierung mit 7 Bits freiwerdenden Bereich des jeweils vorderen Bytes. Dazu mache ich mir evtl. später Gedanken. In Assembler hätte ich gleich eine Idee (Schibeoperation mit Carry).
3. Ein Modul, was die nun neuenstandenen Bytes in Hexadezimaldarstellung umrechnet - dieses Modul habe ich dir schon erstellt (im anderen Thread zum Thema).

Viel Erfolg, ich mache mir weiterhin ein paar Gedanken!

_________________


[ Diese Nachricht wurde geändert von: DonComi am 17 Jul 2008 14:55 ]

BID = 535114

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hab mal nachgedacht: man kann die Vertauschung der Bits und das Kopieren in den 7-Bit-Kode in einem Rutsch erledigen.


_________________

BID = 535148

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

Ich möchte mich hiermit mich bei DonComi herzlich bedanken für die stahlseildicke Nerven und die Geduld.

DankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDanke



Habe jetzt einen Code der Funktioniert. Nun bedarf es einigen Verbesserungen um weniger Speicher zu verbraten.

Hier einmal der Code:



Code :



#include "Headerfiles.h"

unsigned char *ZText;
unsigned char Textleer1[]=" ""[1code]

#include "Headerfiles.h"

unsigned char *ZText;
unsigned char Textleer1[]=" ""\0"; //Zeile löschen

int i;
uint8_t y;
uint8_t z;
uint8_t x;
uint8_t nullen;



unsigned char *strin;
unsigned char *strout;
unsigned char *strbin;



static unsigned char *dual(unsigned char arg, unsigned char *puffer)

{

for(i=0;i<8;i++,arg <<= 1)
{
//*puffer = (arg&0x80 ? '1' : '0');
if(arg&0x80)
{
*puffer='1';
}
else
{
*puffer='0';
}
puffer++;

if(i==0)
{
puffer--;
}
}

return puffer;
}

unsigned char* PDU()
{

unsigned char Text[]="AB";
unsigned char Textbin[(sizeof(Text)-1)*8];
unsigned char Strausgabe[(sizeof(Text)-1)*2];
unsigned char Strausgabe1[(sizeof(Text)-1)*2];

strin=strrev((unsigned char*)Text);
strout=(unsigned char*)Textbin;
strbin=strout;

z=0;
nullen=0;

for(i=0;i<sizeof(Text)-1;i++)
{
if(z<8)
{
z++;
}
if(z==8)
{
z=0;
nullen=nullen+2;
}
}



for(i=0;i<z;i++,strout++)
{
*strout='0';
}

while(*strin)
{
strout=dual(*strin, strout);
strin++;
};


ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=strbin; //Übergabe des Textes
lcd_text(0x40);

warten(2);



uint8_t zahl=0;

y=0;

while(*strbin)
{
for(i=0;(i<4)&&*strbin;i++,strbin++)
{
if(*strbin=='1')
{
zahl+=1<<(3-i);
}
}

if((zahl&=0xF)<0xA)
{
Strausgabe[y]=zahl+'0';
}
else
{
Strausgabe[y]=zahl+'A'-0xA;
}

y++;
zahl=0;
}

x=1;
i=0;

for(i=sizeof(Strausgabe1)-(1+nullen);i>0;i-=2)
{
Strausgabe1[x-1]=Strausgabe[i-1];
Strausgabe1[x]=Strausgabe[i];
x=x+2;
}

Strausgabe1[x-1]='\0';

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x00);

ZText=(unsigned char*)Strausgabe1; //Übergabe des Textes
lcd_text(0x00);

warten(1);

};

[/code1]"; //Zeile löschen

int i;
uint8_t y;
uint8_t z;
uint8_t x;
uint8_t nullen;



unsigned char *strin;
unsigned char *strout;
unsigned char *strbin;



static unsigned char *dual(unsigned char arg, unsigned char *puffer)

{

for(i=0;i<8;i++,arg <<= 1)
{
//*puffer = (arg&0x80 ? '1' : '0');
if(arg&0x80)
{
*puffer='1';
}
else
{
*puffer='0';
}
puffer++;

if(i==0)
{
puffer--;
}
}

return puffer;
}

unsigned char* PDU()
{

unsigned char Text[]="AB";
unsigned char Textbin[(sizeof(Text)-1)*8];
unsigned char Strausgabe[(sizeof(Text)-1)*2];
unsigned char Strausgabe1[(sizeof(Text)-1)*2];

strin=strrev((unsigned char*)Text);
strout=(unsigned char*)Textbin;
strbin=strout;

z=0;
nullen=0;

for(i=0;i<sizeof(Text)-1;i++)
{
if(z<8)
{
z++;
}
if(z==8)
{
z=0;
nullen=nullen+2;
}
}



for(i=0;i<z;i++,strout++)
{
*strout='0';
}

while(*strin)
{
strout=dual(*strin, strout);
strin++;
};


ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=strbin; //Übergabe des Textes
lcd_text(0x40);

warten(2);



uint8_t zahl=0;

y=0;

while(*strbin)
{
for(i=0;(i<4)&&*strbin;i++,strbin++)
{
if(*strbin=='1')
{
zahl+=1<<(3-i);
}
}

if((zahl&=0xF)<0xA)
{
Strausgabe[y]=zahl+'0';
}
else
{
Strausgabe[y]=zahl+'A'-0xA;
}

y++;
zahl=0;
}

x=1;
i=0;

for(i=sizeof(Strausgabe1)-(1+nullen);i>0;i-=2)
{
Strausgabe1[x-1]=Strausgabe[i-1];
Strausgabe1[x]=Strausgabe[i];
x=x+2;
}

Strausgabe1[x-1]='[1code]

#include "Headerfiles.h"

unsigned char *ZText;
unsigned char Textleer1[]=" ""\0"; //Zeile löschen

int i;
uint8_t y;
uint8_t z;
uint8_t x;
uint8_t nullen;



unsigned char *strin;
unsigned char *strout;
unsigned char *strbin;



static unsigned char *dual(unsigned char arg, unsigned char *puffer)

{

for(i=0;i<8;i++,arg <<= 1)
{
//*puffer = (arg&0x80 ? '1' : '0');
if(arg&0x80)
{
*puffer='1';
}
else
{
*puffer='0';
}
puffer++;

if(i==0)
{
puffer--;
}
}

return puffer;
}

unsigned char* PDU()
{

unsigned char Text[]="AB";
unsigned char Textbin[(sizeof(Text)-1)*8];
unsigned char Strausgabe[(sizeof(Text)-1)*2];
unsigned char Strausgabe1[(sizeof(Text)-1)*2];

strin=strrev((unsigned char*)Text);
strout=(unsigned char*)Textbin;
strbin=strout;

z=0;
nullen=0;

for(i=0;i<sizeof(Text)-1;i++)
{
if(z<8)
{
z++;
}
if(z==8)
{
z=0;
nullen=nullen+2;
}
}



for(i=0;i<z;i++,strout++)
{
*strout='0';
}

while(*strin)
{
strout=dual(*strin, strout);
strin++;
};


ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x40);

ZText=strbin; //Übergabe des Textes
lcd_text(0x40);

warten(2);



uint8_t zahl=0;

y=0;

while(*strbin)
{
for(i=0;(i<4)&&*strbin;i++,strbin++)
{
if(*strbin=='1')
{
zahl+=1<<(3-i);
}
}

if((zahl&=0xF)<0xA)
{
Strausgabe[y]=zahl+'0';
}
else
{
Strausgabe[y]=zahl+'A'-0xA;
}

y++;
zahl=0;
}

x=1;
i=0;

for(i=sizeof(Strausgabe1)-(1+nullen);i>0;i-=2)
{
Strausgabe1[x-1]=Strausgabe[i-1];
Strausgabe1[x]=Strausgabe[i];
x=x+2;
}

Strausgabe1[x-1]='\0';

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x00);

ZText=(unsigned char*)Strausgabe1; //Übergabe des Textes
lcd_text(0x00);

warten(1);

};

[/code1]';

ZText=(unsigned char*)Textleer1; //Übergabe des Textes
lcd_text(0x00);

ZText=(unsigned char*)Strausgabe1; //Übergabe des Textes
lcd_text(0x00);

warten(1);

};




Ist nicht der beste Code aber er funktioniert wenigstens.

Das mit dem Drehen der Zahlen muss ich mir einmal genauer Anschauen.

P.S.: Ich bin für andere Vorschläge und Verbesserungen (fast) immer offen

Mfg
Rambodischien


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 182400285   Heute : 57    Gestern : 7426    Online : 554        26.11.2024    0:23
4 Besucher in den letzten 60 Sekunden        alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0640480518341