Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage: LUFA, seltsame Zeichen im Terminal


von Strahlex (Gast)


Lesenswert?

Vermutlich eine ziemliche Anfängerfrage. Habe mittels der LUFA CDC Demo 
ein kleines Programm zusammengecoded, das mir die Eingaben die ich übers 
Terminal eingebe zurückschickt. Wenn ich das jetzt SendByte mache 
funktioniert das auch ganz gut, wandle ich die Eingabe allerdings zuerst 
in einen String um und schicke sie dann per SendString zurück zum PC, 
erhalte ich immer die Eingabe + "zufällige" (eigentlich immer die 
gleichen) Zeichen. Worum könnte das liegen?

Hier ist der Code den ich zum zurücksenden verwenden:
1
          int8_t chars_read,
2
          buffer_pos = 0;
3
          char buffer[128];
4
5
          int8_t data = 0;
6
          while (!(data < 0))
7
          {
8
              data = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
9
              if (!(data < 0)) {
10
                  buffer[buffer_pos] = (char)data;
11
                  buffer_pos++;
12
              }
13
          }
14
                    char name[buffer_pos + 1];
15
                    for (chars_read=0; chars_read < buffer_pos; chars_read++) {
16
                        name[chars_read] = buffer[chars_read];
17
                        CDC_Device_SendByte(&VirtualSerial_CDC_Interface, name[chars_read]);
18
                    }
19
                     CDC_Device_SendString(&VirtualSerial_CDC_Interface, name, strlen(name));

von Andreas K. (derandi)


Lesenswert?

Grob geschätzt: Weil der String kein \0 am Ende hat?

von Strahlex (Gast)


Lesenswert?

Danke, genau das wars ;)

von Bülent C. (mirki)


Lesenswert?

Das geht einfacher:
1
    CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
2
    
3
  int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
4
       if (!(ReceivedByte < 0))
5
         CDC_Device_SendByte(&VirtualSerial_CDC_Interface, (uint8_t)ReceivedByte);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.