// ---------------------------------------------------------- // 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(); } } }
// ---------------------------------------------------------- // public SerialPortOrderInput(String _port_num, int _port_baud_rate, ParserOrderInputBase _parser, String _print_output_port_num) { Debug.WriteLine("SerialPortOrderInput호출"); m_port_num = _port_num; m_port_baud_rate = _port_baud_rate; m_parser = _parser; m_print_output_port_num = _print_output_port_num; Debug.WriteLine("m_port_num : " + m_port_num + " m_print_output_port_num : " + m_print_output_port_num); // 파서에 정이된 데이터의 시작, 종료 값 저장 byte[] _sod = null; byte[] _eod = null; if (null != _parser) { _sod = _parser.getInputData_SOD(); _eod = _parser.getInputData_EOD(); } if (null != _sod && null != _eod) // 시작, 종료 둘 다 있는경우 { PROTOCOL_SOD = (byte[])_sod.Clone(); // start of data //PROTOCOL_EOD = (byte[])_eod.Clone(); // end of data //PROTOCOL_TMP = new byte[PROTOCOL_EOD.Length]; // 비교를 위해 담아둘 공간 Debug.Assert(_sod.Length == _eod.Length); // 시작, 종료 길이가 같아야 한다. } else if (null != _sod && null == _eod) // 시작만 있고 종료는 없는경우 { PROTOCOL_SOD = (byte[])_sod.Clone(); // start of data //PROTOCOL_EOD = _eod; PROTOCOL_TMP = new byte[PROTOCOL_SOD.Length]; // 비교를 위해 담아둘 공간 } else { PROTOCOL_SOD = null; //PROTOCOL_EOD = null; PROTOCOL_TMP = null; } // set notify sener this.NotifySender = _port_num; }
// ---------------------------------------------------------- // public void connectSerialPorts() { // ---------------------------------- // disconnect disconnectSerialPorts(); Utility.Utility.LogWrite("connectSerialPorts"); // ---------------------------------- // input config if (null == m_pool_input_config) { m_pool_input_config = new PoolConfigOrderInput(Kons.ShopCallpass.AppMain.AppCore.ORDER_INPUT_CONFIG_COUNT); } m_pool_input_config.loadObjectAll(); // connect to order-input port m_order_input_listen_serial_port_list = new SerialPortOrderInput[m_pool_input_config.COUNT]; for (int i = 0; i < m_order_input_listen_serial_port_list.Length; i++) { try { ObjConfigOrderInput input_config = m_pool_input_config.getObject(i); if (null != input_config && input_config.IS_USE) { int input_type = Kons.Utility.KnUtil.parseInt32(input_config.m_input_type); Utility.Utility.LogWrite("input_type : " + input_type); ParserOrderInputBase parser = null; switch (ParserOrderInputBase.obtainParserType(input_type)) { case ParserOrderInputBase.PARSER_TYPE.BAEMIN: parser = new ParserOrderInputCommon(); break; case ParserOrderInputBase.PARSER_TYPE.OKPOS: parser = new ParserOrderInputCommon(); break; case ParserOrderInputBase.PARSER_TYPE.DELGEN: parser = new ParserOrderInputCommon(); break; case ParserOrderInputBase.PARSER_TYPE.POSFEED: parser = new ParserOrderInputCommon(); break; case ParserOrderInputBase.PARSER_TYPE.EASYPOS: parser = new ParserOrderInputCommon(); break; case ParserOrderInputBase.PARSER_TYPE.YOGIYO: parser = new ParserOrderInputCommon(); break; case ParserOrderInputBase.PARSER_TYPE.BEDALTONG: parser = new ParserOrderInputCommon(); break; case ParserOrderInputBase.PARSER_TYPE.ETC: parser = new ParserOrderInputCommon(); break; } // 입력포트 시작 - 읽기(listen) 대기 포트번호를 가지고 열어둔다 m_order_input_listen_serial_port_list[i] = new SerialPortOrderInput(input_config.m_listen_port_num, input_config.m_listen_port_baud, parser, input_config.m_conn_print_port_num); Utility.Utility.LogWrite("parser : " + parser); m_order_input_listen_serial_port_list[i].Notify += onNotifyOrderInputSerialPort; m_order_input_listen_serial_port_list[i].connectSerialPort(); Utility.Utility.LogWrite("가즈아!!"); // dictionary m_dic_order_input_listen_serial_port.Add(input_config.m_listen_port_num, m_order_input_listen_serial_port_list[i]); // count m_connected_input_port_count++; } } catch (Exception err) { Utility.Utility.LogWrite("connectSerialPorts여기서 예외 발생함 : " + err.Message); ModelAppDevice device = new ModelAppDevice(); device.writeLog(err.Message); } } }
// order type static public String getOrderTypeString(int _order_type) { return(ParserOrderInputBase.obtainParserName(ParserOrderInputBase.obtainParserType(_order_type))); }
public bool requestSendRowData() { // head String uri = Kons.ShopCallpass.AppMain.AppCore.Instance.getWebRestUrl() + "/regOrderInputRawData.aspx"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; req.Headers.Add("__ak", Kons.ShopCallpass.AppMain.AppCore.Instance.getAppKey()); req.Headers.Add("__av", Kons.ShopCallpass.AppMain.AppCore.Instance.getAppVersion().ToString()); req.Headers.Add("__lk", Kons.ShopCallpass.AppMain.AppCore.Instance.getLoginUserLoginKey()); req.Timeout = 9000; //req.KeepAlive = false; // prepare data ParserOrderInputBase parser = (null == m_caller_serial_port ? null : m_caller_serial_port.getOrderParser()); String input_port_name = (null == parser ? "none" : ParserOrderInputBase.obtainParserName(parser.getParserType())); byte[] order_input_type_buf = Encoding.UTF8.GetBytes(input_port_name); Int32 order_input_type_len = order_input_type_buf.Length; byte[] order_input_raw_data_buf = this.m_data_buf; Int32 order_input_raw_data_len = this.m_data_len; Utility.Utility.LogWrite("서버 작업 부분 : " + Encoding.Default.GetString(this.m_data_buf)); Utility.Utility.LogWrite("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); String print_port_name = (null == m_caller_serial_port.getPrintOutputPortNum() ? "null" : m_caller_serial_port.getPrintOutputPortNum()); byte[] print_output_type_buf = Encoding.UTF8.GetBytes(print_port_name); Int32 print_output_type_len = print_output_type_buf.Length; // body byte[] send_body_data_buf = new byte[4 + order_input_type_len + 4 + order_input_raw_data_len + 4 + print_output_type_len]; int wLen = 0; try { using (MemoryStream ms = new MemoryStream(send_body_data_buf, 0, send_body_data_buf.Length)) { using (BinaryWriter bw = new BinaryWriter(ms, Encoding.Default)) { bw.Write(order_input_type_len); wLen += 4; bw.Write(order_input_type_buf, 0, order_input_type_len); wLen += order_input_type_len; bw.Write(order_input_raw_data_len); wLen += 4; bw.Write(order_input_raw_data_buf, 0, order_input_raw_data_len); wLen += order_input_raw_data_len; bw.Write(print_output_type_len); wLen += 4; bw.Write(print_output_type_buf, 0, print_output_type_len); wLen += print_output_type_len; } } } catch (Exception err) { TsLog.writeLog(err.Message); } // write body data on request stream //String recv_result = ""; //int recv_len = 0; try { req.ContentLength = (null == send_body_data_buf ? 0 : send_body_data_buf.Length); if (null != send_body_data_buf) { using (Stream stream_data = req.GetRequestStream()) { stream_data.Write(send_body_data_buf, 0, send_body_data_buf.Length); } } using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { //Stream stream = res.GetResponseStream(); //Array.Clear(m_recv_buf, 0, m_recv_buf.Length); //Byte[] buf = m_temp_buf; //int read_len = 0; //do //{ // Array.Clear(buf, 0, buf.Length); // read_len = stream.Read(buf, 0, buf.Length); // if (read_len != 0) // { // Array.Copy(buf, 0, m_recv_buf, recv_len, read_len); // recv_len += read_len; // } //} while (read_len > 0); //// parsing to string //recv_result = Encoding.UTF8.GetString(m_recv_buf, 0, recv_len); } } catch (Exception err) { TsLog.writeLog(err.Message); return(false); } return(true); }