first time i can able to read data second time if i want to read data i am facing issue
Some times i am getting data.length 0 , and some time if data length grater then 0 also i am not getting data Exception as
java.lang.RuntimeException: java.lang.IllegalArgumentException: Data send failed.
java.lang.NullPointerException: Attempt to get length of null array
public void readDLMSPacket(byte[] data, GXReplyData reply) throws Exception {
System.out.println("==data"+data.length);
if (data == null || data.length == 0) {
return;
}
IGXMedia media = mDevice.getMedia();
reply.setError((short) 0);
Object eop = (byte) 0x7E;
Integer pos = 0;
boolean succeeded = false;
ReceiveParameters<byte[]> p =
new ReceiveParameters<byte[]>(byte[].class);
p.setEop(eop);
p.setCount(5);
p.setWaitTime(mDevice.getWaitTime() * 1000);
synchronized (media.getSynchronous()) {
while (!succeeded) {
writeTrace("<- " + now() + "\t" + GXCommon.bytesToHex(data));
System.out.print(now() + "Tx:" + "\t" + GXCommon.bytesToHex(data));
System.out.println();
media.send(data, null);
if (p.getEop() == null) {
p.setCount(1);
}
succeeded = media.receive(p);
if (!succeeded) {
// Try to read again...
if (pos++ == 3) {
throw new RuntimeException("Failed to receive reply from the device in given time.");
}
AlertClass.alert_("Data send failed. Try to resend " + pos.toString() + "/3",getApplicationContext());
System.out.println("Data send failed. Try to resend " + pos.toString() + "/3");
}
}
// Loop until whole DLMS packet is received.
try {
while (!mClient.getData(p.getReply(), reply)) {
if (p.getEop() == null) {
p.setCount(1);
}
if (!media.receive(p)) {
// If echo.
if (reply.isEcho()) {
media.send(data, null);
}
// Try to read again...
if (++pos == 3) {
throw new Exception(
"Failed to receive reply from the device in given time.");
}
AlertClass.alert_("Data send failed3. Try to resend" + pos.toString() + "/3",getApplicationContext());
System.out.println("Data send failed. Try to resend " + pos.toString() + "/3");
}
}
} catch (Exception e) {
System.out.println("readDLMSPacket_exeption");
Log.d("==data", String.valueOf( now() + "\t" + GXCommon.bytesToHex(p.getReply())));
writeTrace("-> " + now() + "\t" + GXCommon.bytesToHex(p.getReply()));
System.out.print(now()+"RxE:" + "\t" + GXCommon.bytesToHex(p.getReply()));
System.out.println();
throw e;
}
}
writeTrace("-> " + now() + "\t" + GXCommon.bytesToHex(p.getReply()));
System.out.print(now()+"Rx:" + "\t" + GXCommon.bytesToHex(p.getReply()));
System.out.println();
if (reply.getError() != 0) {
if (reply.getError() == ErrorCode.REJECTED.getValue()) {
Thread.sleep(1000);
readDLMSPacket(data, reply);
} else {
System.out.println("Data send failed. Try to resend once ");
// throw new GXDLMSException(reply.getError());
}
}
// readDLMSPacket(mClient.keepAlive(), reply);
}
Hi, Your code doesn't help…
Hi,
Your code doesn't help. It doesn't tell anything about what you are trying to do.
What kind of data are you sending and what the meter is replying?
BR,
Mikko
in my case First step …
in my case
First step : i am getting Meter Number
second step : i am enabling secure handshake and trying to get meter data
some times i am getting data some time i am not getting data some time
Data sent failed Error Alert coming
16:07:30.238Tx: 7E A0 1F 03 21 93 76 27 81 80 13 05 01 80 06 02 02 00 07 04 00 00 00 01 08 04 00 00 00 01 B4 F9 7E
16:07:30.321Rx: 7E A0 1F 21 03 73 78 66 81 80 13 05 02 01 00 06 01 80 07 04 00 00 00 01 08 04 00 00 00 01 FD FE 7E
16:07:30.327Tx: 7E A0 2B 03 21 10 FB AF E6 E6 00 60 1D A1 09 06 07 60 85 74 05 08 01 01 BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 42 1E 5D FF FF 19 35 7E
16:07:30.449Rx: 7E A0 37 21 03 30 6C 7C E6 E7 00 61 29 A1 09 06 07 60 85 74 05 08 01 01 A2 03 02 01 00 A3 05 A1 03 02 01 00 BE 10 04 0E 08 00 06 5F 1F 04 00 00 00 10 02 26 00 07 FE 3F 7E
16:07:30.456Tx: 7E A0 19 03 21 32 6F D8 E6 E6 00 C0 01 C1 00 01 00 00 2B 01 03 FF 02 00 B0 AA 7E
16:07:30.529Rx: 7E A0 15 21 03 52 5D 8A E6 E7 00 C4 01 C1 00 06 00 0F 56 0A C7 7A 7E
16:07:30.535Tx: 7E A0 11 03 21 54 87 3B E6 E6 00 62 03 80 01 00 BD 9B 7E
16:07:30.593Rx: 7E A0 11 21 03 74 85 BC E6 E7 00 63 03 80 01 00 2C 0F 7E
16:07:30.598Tx: 7E A0 07 03 21 53 03 C7 7E
16:07:30.663Rx: 7E A0 1E 21 03 73 C3 7A 81 80 12 05 01 80 06 01 80 07 04 00 00 00 01 08 04 00 00 00 01 53 3B 7E
16:07:31.181Tx: 7E A0 1F 03 61 93 10 61 81 80 13 05 01 80 06 02 02 00 07 04 00 00 00 01 08 04 00 00 00 01 B4 F9 7E
Hi, Are you using Java or…
Hi,
Are you using Java or Xamarin (C#)?
BR,
Mikko
i am Using Java
i am Using Java