SGD commands - specifically getvar

I wrote a simple Go program to connect to the printer, run an a command

! U1 getvar "zpl.system_status"\r\n

I was then trying to read the response but my read listener kept timing out.  I was expecting a \n at the end of the data coming from the printer but was not getting it. Is there a way to tell the printer to respond and terminate the line with \n?

If not, what's the best way to listen for a response. I ended up reading the stream and then setting a timeout to wait for more data, but that seems kind of hacky.

Is there a specific character I can wait for to indicate the printer is done sending the response?

I also logged in with a telnet client manually and saw the same behavior.

Anonymous (not verified)
Hi Mike, You are correct that

Hi Mike, You are correct that the SGD commands do not have a end character, just double quotes to start and end.  This is default behavior for SGD commands.  If you are using a newer (Link-OS) printer, you can send the SGD as a JSON string and the response is also in JSON:

{}{"zpl.system_status":null}

will respond with:

{"zpl.system_status":"0,0,00000000,00000000,0,00000000,00000000"}

So you can take the '}' as the end character.  Also it's easier to parse and you always know the response is for the SGD you have requested if you are requesting multiple.

Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


Log in to post comments