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()); } }
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 { } } }