We are working with Ping360. After the recent discussion, we started using the C++ library. We are having problems that we don’t understand why.
Before I describe the problems any further, I want to make it clear that Ping360 works with the Desktop client. Although I’m not certain about it, the problem we are having seems to be language/environment independent. What would be the issue here?
We can not control auto_transmit mode.
What we can do
We can send a protocol version message (ID: 5) and receive the protocol version from the device.
We can send a device information message (ID: 4) and receive the device information from the device.
We can send an autotransmit message (Id: 2602).
What we can not do
Either we can not receive any auto transmit messages.
Or the device does not emit any auto transmit messages.
auto_transmit is a part of the protocol specification, but isn’t yet available in Ping360 devices. There’s a new firmware that’s been tested somewhat internally, but it’s not yet public, and there isn’t yet a publicly available firmware updater either.
There was supposed to be a message about that not being available yet in the ping protocol docs, but apparently they haven’t rebuilt properly since that change was put in, so it’s not showing yet.
Thank you @EliotBR , that explains why auto_transmit is not working.
I updated the first post that I send. I forget to mention that we are getting NACK after requesting device_data from ping360. How should we approach this problem?
→ That’s not a nack, it’s a general_request message asking for a 2300 (device_data) message, so presumably that’s the message you sent, not the response from the Ping360
I need to be sure that I’m getting the concept: If I want to get device_data, I should send transducer right? And then wait for the reply that is device_data? Am I mistaken?
I misunderstood which message it was - I’ve corrected my comment.
It seems like you either aren’t getting a reply from the Ping360, or just aren’t recording it. As I understand it the Ping360 can’t have sent you a request for a 2300 message, so perhaps you’re getting no response from it (or not recording the response), and instead thinking that the next message you sent is what it responded with or something?
If it’s helpful, I’m using ping-python to parse your messages.
from brping import PingParser
parser = PingParser()
def parse(message):
# convert human-readable hex string into just the data
data_string = ''.join(part.split(':')[1].strip()
for part in message.split('\n'))
# parse the data, converting string characters back into the hex bytes
for i in range(len(data_string), 2):
result = parser.parse_byte(int(data_string[i:i+2], 16))
# check if message data was valid
assert result == p.NEW_MESSAGE, "incomplete/invalid message"
return parser.rx_msg
# test direct copy of code block
message = '''Message[0-7]: 42 52 02 00 06 00 00 00
Message[8-15]: fc 08
Cheksum: a0 01'''
print(parse(message))