Go Down

Topic: Problem beim Hex Array (Read 1 time) previous topic - next topic

Pittii

Es kommt was anderes  über den seriellen Port heraus  wie gewünscht.

Soll ein init string  mit 9600Bd gesendet werden

byte message0[] = {0x40,0x40,0x43,0x69,0x01,0x2B,0x0D,0x0A,0x40,0x40,0x43,0x69,0x01,0x2B,0x0D,0x0A};

danach noch 7 Blöcke wo der Hex Code auch nicht stimmt

#define GPSRATE1 9600

mySerial.begin(GPSRATE1);
delay(10);
mySerial.write(message0, 16);
delay(20);

usw.

Das Senden mit 9600 Bd geht, ist aber fehlerhaft

beim ersten Block  kommt 0x01,0x0D,0xA5,0x05,0x2B, 0x0d usw raus


Fehlermeldung ist da aber Kompilation funktioniert
Fehler:
sketch_juni_2_motorola.ino:97: warning: deprecated conversion from string constant to 'char*'
sketch_juni_2_motorola.ino:97: warning: deprecated conversion from string constant to 'char*'
sketch_juni_2_motorola.ino:97: warning: deprecated conversion from string constant to 'char*'
sketch_juni_2_motorola.ino:97: warning: deprecated conversion from string constant to 'char*'
sketch_juni_2_motorola.ino:97: warning: deprecated conversion from string constant to 'char*'

Hoffe mir kann jemand helfen und die Info's reichen

vielen Dank für's lesen

Pitti

Doc_Arduino

Hallo,

immer kompletten Sketch bitte.

Kann derzeit nur raten. Du nimmst Software Seriell? Warum nicht die Hardware Serial?
Probier mal .print statt .write.
Wenn es Gründe für software serial gibt, dann probiere auch mal die alte soft serial lib, die soll besser sein.


Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Serenifly

Willst du einen String oder ein Byte Array? Das sind zwei verschiedene Sachen

write() ist schon richtig für Byte Arrays. print() erwartet einen C String und der müsste dann auch NULL-terminiert sein.

Pittii

Morgen, ist natürlich ein Byte Array - also 7 Array's. (String geht nicht  weil 00 drin vorkommt )

Die 7 Blöcke sind im serial - Logger zu sehen, auch die Anzahl der Bytes stimmt, eben nur die Werte nicht, deswegen meine Frage  ob dies mit der Fehlermeldung zusammenhängt, ob der Kompiler da Werte falsch interpretiert.

Werde mal die  serial lib probieren, ob sich da was ändert.


combie

#4
Jun 23, 2015, 11:27 am Last Edit: Jun 23, 2015, 11:29 am by combie
Code: [Select]
#include <SoftwareSerial.h>



byte message0[] = {0x40,0x40,0x43,0x69,0x01,0x2B,0x0D,0x0A,0x40,0x40,0x43,0x69,0x01,0x2B,0x0D,0x0A};


#define GPSRATE1 9600

SoftwareSerial mySerial(3,4);

void setup()
{
  // put your setup code here, to run once:
mySerial.begin(GPSRATE1);
delay(10);
mySerial.write(message0,  sizeof(message0));
delay(20);


}

void loop() {
  // put your main code here, to run repeatedly:

}



Die Warnungen kommen bei mir nicht.
Auch deutet die Wiederholung an, dass das in einer Schleife passiert.
Ich sehe keine Schleife.

Was steht in Zeile 97?
Ich sehe keine 97 Zeilen.

Der Fehler dürfte also noch im Verborgenen liegen.
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
Quelle: Jean-Paul Sartre

Pittii

Hallo, danke , war ""Betriebsblind"" die Zeilen haben 0 mit meinem Problem zu tun.
Die array,s liegen bei Zeile < 50

Das Abarbeiten der Array's  gibt  keinen Fehler - kann nur noch in der Übertragung liegen.

Serenifly

Probier mal AltSoftSerial:
https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html

Verbraucht einen Timer und geht nur an bestimmten Pins, aber ist wesentlich zuverlässiger

Pittii



Hatte grade mal die Hardware-Serielle probiert ( mit Code Schnipseln ) da kommen die array's sauber auf dem Monitor raus.


Muss an der Soft-Seriellen liegen, werde die Altsoft... mal testen

Pittii

hab mir am UnoR3 Pin 8,9 freigemacht und  mit AltSoftSerial gehts wie geschmiert.
Kommt wie bei der HardwareSerial, das raus was rauskommen soll.



Danke für die Hilfe.


Pitti





Go Up