Пример #1
0
        public virtual void ReadCallback(IAsyncResult ar)
        {
            String      content = String.Empty;
            StateObject state   = (StateObject)ar.AsyncState;
            Socket      handler = state.workSocket;

            try
            {
                int bytesRead = handler.EndReceive(ar);
                if (bytesRead > 0)
                {
                    string receiveData = ""; //接收到的数据
                    string sendData    = "ST=91;CN=9013;";
                    string str_CRC     = "";
                    receiveData += Encoding.ASCII.GetString(state.buffer, 0, bytesRead);
                    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss : ") + receiveData);
                    bool Inte = Integrity(ref receiveData, ref str_CRC);
                    try
                    {
                        ReceiveMession ReceiveM = new ReceiveMession(receiveData);
                        if (Inte)
                        {
                            sendData = sendData + ReceiveM.PW + ";" + ReceiveM.MN + ";" + "Flag=0;CP=&&" + ReceiveM.QN + "&&";
                            int Count = sendData.Length;
                            sendData = "##" + Count.ToString("0000") + sendData + CRC.getCrc16Code(str_CRC) + "\r\n";

                            lock (this)
                            {
                                DataStack.Enqueue(ReceiveM);
                            }
                        }
                        else
                        {
                            sendData = sendData + ReceiveM.PW + ";" + ReceiveM.MN + ";" + "Flag=1;CP=&&" + ReceiveM.QN + "&&";
                            int Count = sendData.Length;
                            sendData = "##" + Count.ToString("0000") + sendData + CRC.getCrc16Code(str_CRC) + "\r\n";
                        }
                        byte[] byteData = Encoding.ASCII.GetBytes(sendData);//回发信息
                        handler.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), handler);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToString());
                    }
                }

                handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Пример #2
0
        private void ToDatabase(ReceiveMession Rm)
        {
            string SQL_str = string.Format("insert into T_SuperStationmin (StartTime,EndTime,City,Station,Item,Value,Quality,Type,DValue,OPCode) values('{0}','{1}','{2}','{3}'", Rm.dateTime, Rm.dateTime, "上海", "环科院站");

            for (int i = 0; i < Rm.Data.Length; i++)
            {
                string OPCode = "N";
                if (Rm.Data[i].Contains(","))
                {
                    OPCode = Rm.Data[i].Split(',')[1].Split('=')[1];
                }
                string   data    = Rm.Data[i].Split(',')[0];
                string[] code    = GetItemCode(data);
                string   Str_SQL = string.Format(",{0},{1},'{2}','{3}',{4},'{5}')", code[0], double.Parse(data.Split('=')[1]), "", code[1], double.Parse(data.Split('=')[1]), OPCode);
                Str_SQL = SQL_str + Str_SQL;
                try
                {
                    db.Execute(Str_SQL);
                }
                catch
                { }
            }
        }