// ---------------------------------------------------------- // public void procParsing() { Utility.Utility.LogWrite("procParsing"); m_read_rawdata.initObj(); while (m_pool_orderinput_rawdata.pop(ref m_read_rawdata)) // pop from pool list { Utility.Utility.LogWrite("m_read_rawdata : " + m_read_rawdata); // set ref ObjOrderInputSerialRawDataBuf buf_obj = m_read_rawdata; if (null != buf_obj) { // notify sendMyNotify(SerialPortOrderInput.SERIAL_PORT_NOTIFY_WHAT.RAW_DATA_STREAM, buf_obj); // parsing SerialPortOrderInput serial_port = m_read_rawdata.m_caller_serial_port; if (null != serial_port) { ParserOrderInputBase parser = serial_port.getOrderParser(); Utility.Utility.LogWrite("procParsing parser : " + parser); if (null != parser) // 파서가 지정되어 있을때만 파싱 요청한다 { Utility.Utility.LogWrite("buf_obj.m_data_buf : " + System.Text.Encoding.Default.GetString(buf_obj.m_data_buf)); serial_port.saveRawDataToParsing(buf_obj.m_data_buf, 0, buf_obj.m_data_len); } } // reset read object buf_obj.initObj(); } } }
// ---------------------------------------------------------- // private void onNotifyOrderInputSerialPort(object _sender, object _what, object _obj) { Utility.Utility.LogWrite("onNotifyOrderInputSerialPort"); switch ((SerialPortOrderInput.SERIAL_PORT_NOTIFY_WHAT)_what) { case SerialPortOrderInput.SERIAL_PORT_NOTIFY_WHAT.RAW_DATA_STREAM: { Utility.Utility.LogWrite("case SerialPortOrderInput.SERIAL_PORT_NOTIFY_WHAT.RAW_DATA_STREAM:"); // 받은 데이터를 풀에 저장해 둔다 SerialPortOrderInput.SerialRawDataBufInfo src = (SerialPortOrderInput.SerialRawDataBufInfo)_obj; int src_offset = src.offset; int remain_len = src.len; while (0 < remain_len) { Utility.Utility.LogWrite("while안"); ObjOrderInputSerialRawDataBuf des = m_pool_orderinput_rawdata.create(); // push to pool list if (null != des) { Utility.Utility.LogWrite("if 안"); des.m_caller_serial_port = src.caller_serial; int copy_len = (remain_len < des.m_data_buf.Length ? remain_len : des.m_data_buf.Length); if (0 < copy_len) { Utility.Utility.LogWrite("copylen if 안"); System.Array.Copy(src.buf, src_offset, des.m_data_buf, 0, copy_len); } des.m_data_len = copy_len; // set remain length src_offset += copy_len; remain_len -= copy_len; } } } break; case SerialPortOrderInput.SERIAL_PORT_NOTIFY_WHAT.ORDER_OBJECT: Utility.Utility.LogWrite("case SerialPortOrderInput.SERIAL_PORT_NOTIFY_WHAT.ORDER_OBJECT:"); sendMyNotify(_what, _obj); break; default: sendMyNotify(_what, _obj); break; } }
// ---------------------------------------------------------- // public ControllerOrderInput() { m_pool_orderinput_rawdata = new KnPooledQueue <ObjOrderInputSerialRawDataBuf>(POOL_CAPACITY); m_read_rawdata = new ObjOrderInputSerialRawDataBuf(); }