コード例 #1
0
        // ----------------------------------------------------------
        //
        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();
                }
            }
        }
コード例 #2
0
        // ----------------------------------------------------------
        //
        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;
        }
コード例 #3
0
        // ----------------------------------------------------------
        //
        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);
                }
            }
        }
コード例 #4
0
 // order type
 static public String getOrderTypeString(int _order_type)
 {
     return(ParserOrderInputBase.obtainParserName(ParserOrderInputBase.obtainParserType(_order_type)));
 }
コード例 #5
0
        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);
        }