I was starting down the same path (writing a Linux utility for interacting with the GD77), and it's great to find that other people have already done some development work!
I have a question about the serial port protocol. Looking at the source for the CPS, the sendCommand method (in Extras/OpenGD77/OpenGD77Form.cs) appears to validate commands by checking the response from the radio for:
Code: Select all
((readbuffer[0] == sendbuffer[0]) && (readbuffer[1] == sendbuffer[1]))
The code in https://github.com/kzyapkov/opengd77xfer solves the problem by just explicitly checking for "-" as a response.
The radio must produce a valid response for CPS, because CPS includes this check:
Code: Select all
if (!sendCommand(0))
{
displayMessage("Error connecting to the OpenGD77");
dataObj.responseCode = 1;
break;
}
What's going on here?