Serielle Schnittstelle

Hi!

Ich habe eine Arduino Uno und möchte über die serielle Schnittstelle einem gerätBefehle zukommen lassen. Diese sollen im HEX Format übertragen werden. Baudrate(4800),IDLE HIGH, Parity None.

Ich habe zum Testen folgenden Code verwendet:

int V = 65;

void setup(){
Serial.begin(4800);
}
void loop()
{
Serial.println(V, HEX);
delay(3000);
}

An sich mit dem Serial Monitor kommt wunderschön das raus was ich haben möchte. Mit dem Messgerät von Agilent Technologies MSO6054A kommt aber nur Müll bei rum.

Wie kommuniziert der Arduino überhaupt? Muss ich irgendwelche sachen beachten? Gibt es dazu gute Sachen zum Nachlesen? Bin für jeden Tip dankbar :)

Bist du sicher, dass das Gerät das als ASCII will und das nicht nur so im Datenblatt steht damit es besser lesbar ist? HEX ist erst mal nur eine Darstellung für Menschen. Falls das Gerät lediglich eine Zahl im Binärformat erwartet brauchst du Serial.write()

Außerdem hängt print*ln*() hinten ein Linefeed an. Das solltest du auch abklären und gegebenenfalls nur print() verwenden.

hi,

ich weiß nicht, was Du mit idle high meinst, aber Du kannst bei serial begin mehr als die baudrate angeben, schau mal hier bei reference > serial > begin.

gruß stefan

Wie sendest du "Einem gerät" Daten, wenn es nicht über den Arduino geht ? Der Arduino sendet nicht RS232 oder so was, sondern "TTL-Level" = 0/5 V, wobei IDLE == Stopbit auf 5V ( HIGH ) wäre.

int v=65;
Serial.println(V, HEX);

sendest du übrigens 3 Byte, die du genauso auch mit

Serial.write("41\n",3);

senden könntest und auch so ( Eine Zeile mit dem Text "41") im SerialMonitor sehen solltest.

Mit dem Messgerät von Agilent Technologies MSO6054A kommt aber nur Müll bei rum.

Das spricht jetzt erstmal noch nicht gegen das Messgerät ;) Von der ersten 1->0 Flanke bis zum letzten 0->1 sollten bei 4800Bd 3 Byte ca. 6ms dauern.