Hallo,
ich habe folgenden Code mit welchem ich 13 Byte über die serielle Schnittstelle schicken möchte.
Es wird diese Bytefolge an die serielle Schnittstelle übergeben:
-9164-112800000000125
Es kommt als Antwort nur 1 Byte -91 zurück.
Normalerweise sollten es 13 sein.
Ich vermute, dass die Gegenstelle ein Problem mit signed (unsigned) im 1. und 3. Byte hat. tx_buffer[0] und tx_buffer[2].
Diese muss ich ja casten, da sonst Java meckert.
Wenn ja, wie kann ich das bewerkstelligen?
Wenn ich denselben Code mit C#
verwende, funktioniert es.
MfG
ich habe folgenden Code mit welchem ich 13 Byte über die serielle Schnittstelle schicken möchte.
Java:
byte []tx_buffer = new byte[13];
String temp = "" ;
byte checksum = 0;
// Buffer vorbelegen
tx_buffer[0] = (byte) 165; // Fest lt. Protokoll
tx_buffer[1] = 64; // 40=GPRS 80=übergeordnet - anscheinend egal
tx_buffer[2] = (byte)144; // 90 = Spannung, Strom und SOC
tx_buffer[3] = 8; // 8 = Länge fix, nicht ändern
tx_buffer[4] = 0; // Rest auf 0 setzen
tx_buffer[5] = 0;
tx_buffer[6] = 0;
tx_buffer[7] = 0;
tx_buffer[8] = 0;
tx_buffer[9] = 0;
tx_buffer[10] =0;
tx_buffer[11] =0;
code = tx_buffer[2];
// Checksumme berechnen und an Byte 13 eintragen
for (int i=0;i<=11;i++)
{
checksum += tx_buffer[i];
temp += tx_buffer[i];
}
tx_buffer[12] = checksum;
temp += String.valueOf(tx_buffer[12]);
jTextField1.setText(String.valueOf(temp));
// jTextField1.setText(tx_buffer.toString());
// für Anzeige "-" entfernen und Leerzeichen raus nehmen
// temp = BitConverter.ToString(tx_buffer);
// temp = temp.Replace('-', ' ');
// temp = Regex.Replace(temp, @"\s", "");
// textBoxDATASTRING.Text = temp;
// textBoxSend.Text += "\r\n" + temp;
// An Serialport übergeben
serialPort.writeBytes(tx_buffer,13);
Es wird diese Bytefolge an die serielle Schnittstelle übergeben:
-9164-112800000000125
Es kommt als Antwort nur 1 Byte -91 zurück.
Normalerweise sollten es 13 sein.
Ich vermute, dass die Gegenstelle ein Problem mit signed (unsigned) im 1. und 3. Byte hat. tx_buffer[0] und tx_buffer[2].
Diese muss ich ja casten, da sonst Java meckert.
Wenn ja, wie kann ich das bewerkstelligen?
Wenn ich denselben Code mit C#
verwende, funktioniert es.
MfG