Textausgabe mit eDIP128

OP #4593203
Lesenswert?
• ▲
▼
Zur Ausgabe eines Textes auf einem eDIP128 nutze ich den folgenden Code:
1
void Graphik_Text_ausgabe(int8_t x1, int8_t y1, char * Text)
2
  {
3
  uint8_t bcc; 
4
    >>  bcc = 0x11 + 0x07 + 0x1b + 'Z' + 'L' + x1 + y1 + strlen(Text);
5
  i2c_start(slave_adresse_1);
6
  i2c_write(0x11);    // DC1 0x11
7
  i2c_write(0x07);    // len   
8
  i2c_write(0x1b);    // ESC   0x1b
9
  i2c_write('Z');      // 
10
  i2c_write('L');      // 
11
  i2c_write(x1);
12
  i2c_write(y1);
13
  i2c_write(* Text);
14
  i2c_write(00);
15
  i2c_write(bcc);
16
  i2c_start(slave_adresse_2);
17
  e = i2c_readAck();
18
  i2c_stop();
19
  }
Als Rückgabe Wert bekomme ich 21 - Fehler.
Mit der Berechnung von bcc stimmt was nicht. Da fehlt was?
Als Text nutze ich das Wort "Test"
kann mal jemand drüber schauen?
achim
Gast #4593241
Lesenswert?
• ▲
▼
>    >>  bcc = 0x11 + 0x07 + 0x1b + 'Z' + 'L' + x1 + y1 + strlen(Text);

Das mit dem strlen() war wohl nix. Die Checksumme muss über
alle Buchstaben des Textes gebildet werden.

>  i2c_write(* Text);

Die Funktion gibt sicher nicht den Text aus.
Das musst du Buchstabe für Buchstabe tun.
OP #4593260
Lesenswert?
• ▲
▼
Habe es geändert in
1
void Graphik_Text_ausgabe(int8_t x1, int8_t y1, char * Text)
2
  {
3
  uint8_t bcc, i=0; 
4
  bcc = 0x11 + 0x06 + 0x1b + 'Z' + 'L' + x1 + y1 + strlen(Text);
5
  i2c_start(slave_adresse_1);
6
  i2c_write(0x11);    // DC1 0x11
7
  i2c_write(0x06 + strlen(Text));    // len   07 Strich
8
  i2c_write(0x1b);    // ESC   0x1b
9
  i2c_write('Z');      // 
10
  i2c_write('L');      // 
11
  i2c_write(x1);
12
  i2c_write(y1);
13
  
14
  for (i=0;i<=strlen(Text); i++)
15
  i2c_write(Text[i]);
16
  return 0;
17
  
18
  i2c_write(00);
19
  i2c_write(bcc);
20
  i2c_start(slave_adresse_2);
21
  e = i2c_readAck();
22
  i2c_stop();
23
  itoa( e, Buffer, 10 );    // Zeile 1 Zahl 3
24
  lcd_printlc(3,5,Buffer);
25
  }
ist noch ein Fehler drin ???? Kannst du bitte noch mal schauen
achim
OP #4593608
Lesenswert?
• ▲
▼
Mit diesem Cide funktioniert es auch ohne return, hatte sich scheinbar 
eingeschlichen
1
void Graphik_Text_ausgabe(int8_t x1, int8_t y1, char * Text)
2
  {    
3
    int bcc,i;
4
  bcc = 0x11 + 0x06 + 0x1b + 'Z' + 'L' + x1 + y1 + strlen(Text);
5
  for (i=0; i<=strlen(Text); i++)
6
  bcc += Text[i];
7
  i2c_start(slave_adresse_1);
8
  i2c_write(0x11);
9
  i2c_write(0x06 + strlen(Text));
10
  i2c_write(0x1b);
11
  i2c_write('Z');
12
  i2c_write('L');
13
  i2c_write(x1);
14
  i2c_write(y1);
15

16
  for (i=0; i<=strlen(Text); i++)
17
  i2c_write(Text[i]);
18
  i2c_write(bcc);
19
      
20
  i2c_stop();
21
      
22
  //i2c_start(slave_adresse_2);
23
  //e = i2c_readAck();
24
  //i2c_stop();
25
       
26
  //itoa( e, Buffer, 10 );    // Zeile 1 Zahl 3
27
  //lcd_printlc(3,5,Buffer);      
28
  }
Im unteren Teil des Codes steht noch etwas auskommentierten. Hat die 
Aufgabe die Fehlermeldung anzuzeigen. Es kommt auf ein zweites Display 
und zeigt entweder 6 (ok) oder 21 (Fehler) an. Klappt aber noch nicht
achim

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren