This is true : if you send a command (not a query) like DIS 0, then do a read, you will get a timeout because there is nothing coming back.
I see in your code you are writing, then testing to see if what you wrote had a '?' at the end. This is to see if you just wrote a query and need to read. You then read what's coming back if there was a '?'. in theory, using this code and the string "DIS 0" should work. Seems to me you are executing the read function though. That would account for DIS? always working, DIS0 working the first time, then a timeout. What happens is the device gets the DIS 0, turns off the display, gets a command to read, while your code is waiting to get something back or timeout you send another command (any command) and this f
ails. This is because there is nothing for the device to send back to the read, it's not failing on the next command (or query). give some time for timeout, then send the next command and it will work right.
As for the problem, look for other code that always calls read after write. Or look for some other process appending a '?' to SendCommand variable. Or are you really putting the value in ilwrt into the SendCommand variable correctly?
Hope this helps,
Jared