コード例 #1
0
        public List <object> BuyOrderRequest(SmsPdu pdu)
        {
            List <object> ResultList = new List <object>();

            try
            {
                if (pdu is SmsDeliverPdu)
                {
                    SmsDeliverPdu bpdu    = (SmsDeliverPdu)pdu;
                    string        Text    = bpdu.UserDataText.ToUpper();
                    string        SMSCode = string.Empty;
                    string        Output_CompanyShortCode = string.Empty;
                    long          Output_ShareQuantity    = 0;
                    string        Output_BuyorSellOrder   = string.Empty;
                    string        Output_MarketPrice      = string.Empty;
                    long          Output_RegCustCode      = 0;
                    string        OutPut_OrderRange       = string.Empty;
                    long          OutPut_OrderID          = 0;
                    string        Output_Message          = bpdu.UserDataText;
                    string        Output_PhoneNumber      = bpdu.OriginatingAddress;
                    char[]        delimiterChars          = { ' ', ',', '.', ':', '\t', '/', ';', '.', };
                    string[]      Word    = Text.Split(delimiterChars);
                    string[]      Message = Word.Where(t => !string.IsNullOrEmpty(Convert.ToString(t))).ToArray();


                    Output_RegCustCode = Convert.ToInt64(objData.GetCustCodeFromPhoneNo(bpdu.OriginatingAddress));
                    if (Output_RegCustCode != 0)
                    {
                        SMSCode = SMSCode + SMSCommadCode.RegCust_Code + "-";
                    }
                    else
                    {
                        SMSCode = SMSCode + SMSCommadCode.DefaultCode + "-";
                    }


                    string CompanyShortCode = Message[0].ToUpper();
                    string ComShortCode     = objData.GetCompanyShortCodeFromCompanyShortCode(CompanyShortCode);
                    if (ComShortCode != "")
                    {
                        Output_CompanyShortCode = ComShortCode;
                        SMSCode = SMSCode + SMSCommadCode.CompanyShortCode + "-";
                    }
                    else if (ComShortCode == "")
                    {
                        SMSCode = SMSCode + SMSCommadCode.DefaultCode + "-";
                    }



                    if (Message.Length > 2)
                    {
                        if (IsTextValidated(Message[1].ToString()) == true)
                        {
                            long Quentaty = Convert.ToInt64(Message[1]);
                            if (Quentaty != 0)
                            {
                                Output_ShareQuantity = Convert.ToInt64(Quentaty);
                                SMSCode = SMSCode + SMSCommadCode.ShareQuentity + "-";
                            }
                            else if (Quentaty == 0)
                            {
                                SMSCode = SMSCode + SMSCommadCode.DefaultCode + "-";
                            }
                        }
                    }
                    if (Output_ShareQuantity == 0)
                    {
                        SMSCode = SMSCode + SMSCommadCode.DefaultCode + "-";
                    }



                    string   BuyandSellOrder = "B,S";
                    string   Order           = "";
                    string[] BuyorSellOrder  = BuyandSellOrder.Split(',');

                    foreach (string OrderType in BuyorSellOrder)
                    {
                        if (Message.Contains(OrderType))
                        {
                            Order = OrderType;
                            if (Order == "B")
                            {
                                Output_BuyorSellOrder = "Buy";
                                SMSCode = SMSCode + SMSCommadCode.BuyOrder + "-";
                            }
                            else if (Order == "S")
                            {
                                Output_BuyorSellOrder = "Sell";
                                SMSCode = SMSCode + SMSCommadCode.BuyOrder + "-";
                            }
                            else
                            {
                                SMSCode = SMSCode + SMSCommadCode.DefaultCode + "-";
                            }
                        }
                    }
                    if (Output_BuyorSellOrder == "")
                    {
                        SMSCode = SMSCode + SMSCommadCode.DefaultCode + "-";
                    }


                    string MarketPrise = "MP";
                    string PriceRange  = "";
                    if (Message.Length == 4)
                    {
                        PriceRange = Message[3].ToString();
                        if (Message.Length > 4)
                        {
                            string[] Input_PriceRange = null;
                            var      listtmp          = new List <string>(Regex.Split(Text, @"\D+"));
                            Input_PriceRange = listtmp.Where(t => !string.IsNullOrEmpty(Convert.ToString(t))).ToArray();
                            PriceRange       = Input_PriceRange[1].ToString() + "-" + Input_PriceRange[2].ToString();
                        }

                        if (Message.Contains(MarketPrise))
                        {
                            Output_MarketPrice = "Market Price";
                            SMSCode            = SMSCode + SMSCommadCode.MarketPrice;
                        }
                        else if (PriceRange != "")
                        {
                            Output_MarketPrice = PriceRange;
                            SMSCode            = SMSCode + SMSCommadCode.MarketPrice;
                        }
                        else
                        {
                            SMSCode = SMSCode + SMSCommadCode.DefaultCode;
                        }
                    }
                    else
                    {
                        SMSCode = SMSCode + SMSCommadCode.DefaultCode;
                    }



                    OutPut_OrderID = objData.GenerateOrderID("tbl_order_place", "Order_ID");


                    ResultList.Add(Output_RegCustCode);
                    ResultList.Add(Output_CompanyShortCode);
                    ResultList.Add(Output_ShareQuantity);
                    ResultList.Add(Output_BuyorSellOrder);
                    ResultList.Add(Output_MarketPrice);
                    ResultList.Add(Output_PhoneNumber);
                    ResultList.Add(OutPut_OrderID);
                    ResultList.Add(SMSCode);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(ResultList);
        }
コード例 #2
0
        private void GetAllMessagesFromAllStorage()
        {
            try
            {
                if (Gsm.IsConnected() && Gsm.IsOpen())
                {
                    DecodedShortMessage[] SimMessages = Gsm.ReadMessages(PhoneMessageStatus.All, GetMessageStorage(MessageLocation.Sim));
                    Gsm.DeleteMessages(DeleteScope.All, GetMessageStorage(MessageLocation.Sim));

                    foreach (DecodedShortMessage message in SimMessages)
                    {
                        SmsPdu pdu = (SmsPdu)message.Data;

                        if (pdu is SmsDeliverPdu)
                        {
                            // Received message
                            SmsDeliverPdu data = (SmsDeliverPdu)pdu;

                            string   sim_msg          = data.UserDataText;
                            DateTime sim_receive_date = data.SCTimestamp.ToDateTime();
                            string   sim_num          = data.OriginatingAddress;

                            //BSOB.SMS sms = new BSOB.SMS();
                            //sms.MESSAGE = sim_msg;
                            //sms.PHONENO = sim_num;
                            //sms.RECEIVEDDATE = sim_receive_date;
                            //Order(sms);

                            bsob.SMSQueuing(sim_msg, sim_num, sim_receive_date);
                            //insert statement here
                        }
                    }

                    DecodedShortMessage[] PhoneMessages = Gsm.ReadMessages(PhoneMessageStatus.All, GetMessageStorage(MessageLocation.Phone));
                    Gsm.DeleteMessages(DeleteScope.All, GetMessageStorage(MessageLocation.Phone));


                    foreach (DecodedShortMessage message in PhoneMessages)
                    {
                        SmsPdu pdu = (SmsPdu)message.Data;

                        if (pdu is SmsDeliverPdu)
                        {
                            // Received message
                            SmsDeliverPdu data = (SmsDeliverPdu)pdu;

                            string   phone_msg           = data.UserDataText;
                            DateTime phone_received_date = data.SCTimestamp.ToDateTime();
                            string   phone_num           = data.OriginatingAddress;

                            //BSOB.SMS sms = new BSOB.SMS();
                            //sms.MESSAGE = phone_msg;
                            //sms.PHONENO = phone_num;
                            //sms.RECEIVEDDATE = phone_received_date;
                            //Order(sms);

                            bsob.SMSQueuing(phone_msg, phone_num, phone_received_date);
                            //insert statement here
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogError("GetAllMessagesFromAllStorage " + ex.Source + " " + ex.Message);

                if (Gsm.IsConnected() && Gsm.IsOpen())
                {
                    Gsm.Close();
                }
            }
        }
コード例 #3
0
ファイル: cls_sms.cs プロジェクト: M-Amrollahi/sms-panel
        /// <summary>
        ///
        /// </summary>
        /// <returns>datatable:phone,message,date</returns>
        public DataTable f_getReceivedSMS()
        {
            if (!cls_Modem.p_getInstance.f_openPort())
            {
                return(null);
            }

            string str_report = "";

            try
            {
                m_semaphoreWriteSMS.WaitOne();

                string strCmd = "at+cmgf=0\r";
                cls_Modem.p_getInstance.f_write(strCmd);
                cls_Modem.p_getInstance.f_readFeedback();

                strCmd = "at+cnmi=1,0,0,1,0\r";
                cls_Modem.p_getInstance.f_write(strCmd);
                cls_Modem.p_getInstance.f_readFeedback();

                strCmd = "at+cpms=\"SM\"\r";
                cls_Modem.p_getInstance.f_write(strCmd);
                cls_Modem.p_getInstance.f_readFeedback();

                strCmd = "at+cmgl=4\r";
                cls_Modem.p_getInstance.f_write(strCmd);
                str_report = cls_Modem.p_getInstance.f_readFeedback();

                m_semaphoreWriteSMS.Release();
            }
            catch (Exception exp)
            {
                f_logReport(Enum_logState.Error, exp.Message + exp.StackTrace);
                m_semaphoreWriteSMS.Release();
                return(null);
            }

            if (Regex.IsMatch(str_report, cls_base.PATTERN_ERROR) || str_report == cls_base.ERROR_FEEDBACK)
            {
                f_logReport(Enum_logState.Error, str_report.Replace(cls_base.NEW_LINE, ""));
                return(null);
            }
            str_report = str_report.Replace(cls_base.OK_FEEDBACK, "");
            if (str_report == "")
            {
                return(null);
            }

            DataTable obj_receivedSMS = new DataTable();

            obj_receivedSMS.Columns.Add("phone");
            obj_receivedSMS.Columns.Add("message");
            obj_receivedSMS.Columns.Add("date");

            ///get respnces in parts
            ///
            string[] str_data = str_report.Split(new string[] { "+CMGL: ", cls_base.NEW_LINE }, StringSplitOptions.RemoveEmptyEntries);
            List <cls_CMGLResponse> obj_responses = new List <cls_CMGLResponse>();

            for (int i = 0; i < str_data.Length; i = i + 2)
            {
                string[] obj_strResp = str_data[i].Split(new string[] { "," }, StringSplitOptions.None);
                obj_responses.Add(new cls_CMGLResponse
                {
                    p_pdu = str_data[i + 1]
                    ,
                    p_idx = int.Parse(obj_strResp[0])
                    ,
                    p_state = int.Parse(obj_strResp[1])
                    ,
                    p_alpha = 0
                    ,
                    p_lenght = int.Parse(obj_strResp[3])
                });
            }

            ///this list , contain complete smses to delete from a SIM
            ///
            List <cls_CMGLResponse> obj_deleteResponses = new List <cls_CMGLResponse>();

            ///this list , catch the same smses to find that sms is complete receive or not
            ///
            List <cls_CMGLResponse> obj_tempResponses = new List <cls_CMGLResponse>();

            List <SmsPdu> obj_lstPDUs = new List <SmsPdu>();

            try
            {
                string str_smsText = "";

                for (int i = 0; i < obj_responses.Count; i++)
                {
                    str_smsText = "";
                    IncomingSmsPdu obj_pdu    = (IncomingSmsPdu)SmsDeliverPdu.Decode(obj_responses[0].p_pdu, true);
                    bool           isComplete = false;

                    obj_tempResponses.Add(obj_responses[i]);
                    obj_lstPDUs.Add(obj_pdu);

                    ///To know sms has other parts or not
                    ///
                    if (!SmartMessageDecoder.AreAllConcatPartsPresent(obj_lstPDUs))
                    {
                        for (int j = i + 1; (j < obj_responses.Count) && !SmartMessageDecoder.AreAllConcatPartsPresent(obj_lstPDUs); j++)
                        {
                            obj_pdu = (SmsDeliverPdu)SmsDeliverPdu.Decode(obj_responses[j].p_pdu, true);
                            if (SmartMessageDecoder.ArePartOfSameMessage(obj_lstPDUs[0], obj_pdu))
                            {
                                obj_tempResponses.Add(obj_responses[j]);
                                obj_lstPDUs.Add(obj_pdu);
                            }
                        }
                        if (SmartMessageDecoder.AreAllConcatPartsPresent(obj_lstPDUs))
                        {
                            str_smsText = SmartMessageDecoder.CombineConcatMessageText(obj_lstPDUs);
                            isComplete  = true;
                        }
                    }
                    else
                    {
                        str_smsText = SmartMessageDecoder.CombineConcatMessageText(obj_lstPDUs);
                        isComplete  = true;
                    }

                    for (int k = 0; k < obj_tempResponses.Count; k++)
                    {
                        obj_responses.Remove(obj_tempResponses[k]);
                        i--;
                    }

                    ///update DB and datagrid
                    if (isComplete)
                    {
                        obj_deleteResponses.AddRange(obj_tempResponses);

                        DataRow obj_dtRow = obj_receivedSMS.NewRow();
                        obj_dtRow["phone"]   = ((SmsDeliverPdu)obj_lstPDUs[0]).OriginatingAddress;
                        obj_dtRow["message"] = str_smsText;
                        obj_dtRow["date"]    = ((SmsDeliverPdu)obj_lstPDUs[0]).GetTimestamp().ToDateTime().ToString();

                        obj_receivedSMS.Rows.Add(obj_dtRow);
                        f_logReport(Enum_logState.None, "Message received from \"" + ((SmsDeliverPdu)obj_lstPDUs[0]).OriginatingAddress + "\" " + DateTime.Now.ToLongTimeString());
                    }
                    else
                    {
                        long y = DateTime.Now.Ticks - ((SmsDeliverPdu)obj_lstPDUs[0]).GetTimestamp().ToDateTime().Ticks;
                        if (y > 1800000)
                        {
                            obj_deleteResponses.AddRange(obj_tempResponses);
                        }
                    }

                    obj_tempResponses.Clear();
                    obj_lstPDUs.Clear();
                }
            }
            catch (Exception exp)
            {
                f_logReport(Enum_logState.Error, exp.Message + exp.StackTrace);
            }

            ///delete sms from memory
            ///
            try
            {
                m_semaphoreWriteSMS.WaitOne();

                for (int i = 0; i < obj_deleteResponses.Count; i++)
                {
                    string strCmd = "at+cmgd=" + obj_deleteResponses[i].p_idx.ToString() + ",0\r";
                    cls_Modem.p_getInstance.f_write(strCmd);
                    strCmd = cls_Modem.p_getInstance.f_readFeedback();
                }

                m_semaphoreWriteSMS.Release();
            }
            catch (Exception exp)
            {
                f_logReport(Enum_logState.Error, exp.Message + exp.StackTrace);
            }

            return(obj_receivedSMS);
        }
コード例 #4
0
ファイル: SmsHandler.cs プロジェクト: 2steuer/alarmsystem
        void ReceiveMessages()
        {
            Log.Add(LogLevel.Verbose, "SMS", "Reading SMS messages from device...");
            Stopwatch sw = new Stopwatch();

            sw.Start();

            DecodedShortMessage[] msgs = _gsm.ReadMessages(PhoneMessageStatus.All, "MT");

            Log.Add(LogLevel.Verbose, "SMS", String.Format("{0} messages in storage", msgs.Length));

            foreach (DecodedShortMessage msg in msgs)
            {
                string   from     = string.Empty;
                string   text     = string.Empty;
                DateTime received = DateTime.Now;

                bool _fullMessageReceived = false;

                SmsDeliverPdu pdu = (SmsDeliverPdu)msg.Data;

                if (SmartMessageDecoder.IsPartOfConcatMessage(pdu))
                {
                    IConcatenationInfo info = SmartMessageDecoder.GetConcatenationInfo(pdu);

                    Log.Add(LogLevel.Debug, "SMS", string.Format("Received multi-part message {0}: {1}/{2}", info.ReferenceNumber, info.CurrentNumber, info.TotalMessages));

                    if (_concatPdus.ContainsKey(info.ReferenceNumber))
                    {
                        _concatPdus[info.ReferenceNumber].Add(pdu);
                    }
                    else
                    {
                        _concatPdus.Add(info.ReferenceNumber, new List <SmsPdu>()
                        {
                            pdu
                        });
                    }

                    if (SmartMessageDecoder.AreAllConcatPartsPresent(_concatPdus[info.ReferenceNumber]))
                    {
                        _fullMessageReceived = true;

                        from     = pdu.OriginatingAddress;
                        received = pdu.SCTimestamp.ToDateTime();
                        text     = SmartMessageDecoder.CombineConcatMessageText(_concatPdus[info.ReferenceNumber]);
                    }
                }
                else
                {
                    Log.Add(LogLevel.Debug, "SMS", "Received single-part SMS.");

                    _fullMessageReceived = true;

                    from     = String.Format("{0}", pdu.OriginatingAddress);
                    received = pdu.SCTimestamp.ToDateTime();
                    text     = pdu.UserDataText;
                }

                if (_fullMessageReceived)
                {
                    Log.Add(LogLevel.Info, "SMS", String.Format("Incoming SMS from {0}", from));

                    if (NormalizeNumbers)
                    {
                        from = NormalizeNumber(from);
                    }

                    if (_resolveNumbers)
                    {
                        from = ResolveNameByNumber(from);
                    }

                    Log.Add(LogLevel.Debug, "SMS", String.Format("Message from {0} at {1}: {2}", from, received, text));

                    if (OnMessageReceived != null)
                    {
                        OnMessageReceived(this, new Message(from, received, text));
                    }
                }

                _gsm.DeleteMessage(msg.Index, msg.Storage);
            }
            sw.Stop();

            Log.Add(LogLevel.Verbose, "SMS", String.Format("Reading took {0}ms", sw.Elapsed.TotalMilliseconds));
        }