Discussion of issues related specifically to writing code for native mode devices. This includes ZBasic code as well as assembly language code and C code, both inline and standalone.
The ControlCom() call should be made after the OpenCom() call as you've shown. As soon as it is executed, pin 27 should be high indicating that it is OK to transmit to the ZX. Pin 28 should be an input and if that pin is high the ZX will transmit any data available in the output queue.
You can test the operation by connecting pullup resistor and a switch to ground to pin 28. Closing the switch should prevent the ZX from transmitting, opening it should allow transmission. Similarly, you can send characters to the ZX and if they are not removed from the receive queue pin 27 will eventually go low indicating that nothing more should be sent.