private void SendFrame(BacnetPtpFrameTypes frame_type, byte[] buffer = null, int msg_length = 0)
{
if (m_port == null) return;
int full_length = PTP.PTP_HEADER_LENGTH + msg_length + (msg_length > 0 ? 2 : 0);
if(buffer == null) buffer = new byte[full_length];
PTP.Encode(buffer, 0, frame_type, msg_length);
//debug
if (StateLogging)
Trace.WriteLine(" " + frame_type, null);
//send
SendWithXonXoff(buffer, 0, full_length);
}