private void Fun_RecvFromCRT(ref Data.CRT_STRUCT myCRT, ref ClientAPP.TCP_STRUCT Server_CRT) { Trace.WriteLine("Entering" + myCRT.CRTName + "Fun_RecvFromCRT!!"); Delegate la = new UpdateText(UpdateTextMethod); while (Server_CRT.IsConnected) { try { byte[] RecvBufCRTa = new byte[1024]; int RecvNum = Server_CRT.sck.Receive(RecvBufCRTa); if (RecvNum > 0) { int[] RecvBufInt = Program.BytesToInt(RecvBufCRTa); myCRT.TCMsgStatus = RecvBufInt[7]; this.Invoke(la, RecvBufInt[7].ToString(), myCRT.mytextbox); } else { Trace.WriteLine("收到数据少于等于0!"); break; } } catch (Exception e) { Console.WriteLine(e.Message); Trace.WriteLine("Exception leave!!"); break; } } }
private void Fun_Transfer2CRT(ref Data.CRT_STRUCT myCRT, ref ClientAPP.TCP_STRUCT Server_CRT, ref Queue <byte[]> DataQueue_save) { while (Server_CRT.IsConnected) { if (myCRT.DataQueue_CRT.Count() > 0) { byte[] SendByte = myCRT.DataQueue_CRT.Dequeue(); Server_CRT.sck.Send(SendByte); //Data.dtUSRP.Rows[3]["数量"] = (int)Data.dtUSRP.Rows[3]["数量"] + 1; //增加存储,DataQueue_save为引用的对应SaveFile里面的Queue DataQueue_save.Enqueue(SendByte); myCRT.Transfer2CRTa_TempStr = ""; for (int m = 24; m < SendByte.Length - 8; m++) { myCRT.Transfer2CRTa_TempStr += SendByte[m].ToString("x2"); } Trace.WriteLine("Fun_Transfer2CRT:" + myCRT.Transfer2CRTa_TempStr); } } }
private void Fun_RecvFromCRT_Return(ref Data.CRT_STRUCT myCRT, ref ClientAPP.TCP_STRUCT Server_CRT) { Trace.WriteLine("++++++++++Entering" + myCRT.CRTName + "Fun_RecvFromCRT_Return!!"); while (Server_CRT.IsConnected) { try { byte[] RecvBufCRTa = new byte[1092]; int RecvNum = Server_CRT.sck.Receive(RecvBufCRTa); if (RecvNum > 0) { //TempRecvBuf 本次收到的数据 byte[] TempRecvBuf = new byte[RecvNum]; Array.Copy(RecvBufCRTa, TempRecvBuf, RecvNum); SaveFile.Lock_Dat3.EnterWriteLock(); SaveFile.DataQueue_out3.Enqueue(TempRecvBuf); SaveFile.Lock_Dat3.ExitWriteLock(); String tempstr = ""; for (int i = 0; i < TempRecvBuf.Length; i++) { tempstr += TempRecvBuf[i].ToString("x2"); } //Trace.WriteLine("Recvd:" + RecvNum.ToString() + ":" + tempstr); //this.textBox_SCShow.BeginInvoke( // new Action(() => // { // if (textBox_SCShow.Lines.Count() > 10) // textBox_SCShow.Clear(); // textBox_SCShow.AppendText(tempstr + "\n"); // } // ) // ); try { Data.dtYC.Rows[0]["数量"] = (int)Data.dtYC.Rows[0]["数量"] + 1; //收到总数 } catch (Exception ex) { MyLog.Error(ex.Message); } if (RecvNum > 68) { //YCBuf 本次收到的实际遥测数据 byte[] YCBuf = new byte[RecvNum - 68]; Array.Copy(RecvBufCRTa, 64, YCBuf, 0, RecvNum - 68); SaveFile.Lock_Dat4.EnterWriteLock(); SaveFile.DataQueue_out4.Enqueue(YCBuf); SaveFile.Lock_Dat4.ExitWriteLock(); String tempstr2 = ""; for (int i = 0; i < YCBuf.Length; i++) { tempstr2 += YCBuf[i].ToString("x2"); } // Trace.WriteLine(tempstr2); //ushort CRC = 0xffff; //ushort genpoly = 0x1021; //for (int i = 0; i < YCBuf.Length-2; i = i + 1) //{ // CRC = Function.CRChware(YCBuf[i], genpoly, CRC); //} //// MyLog.Info("Calc 通道1 CRC = " + CRC.ToString("x4")); //Trace.WriteLine("Calc 通道1 CRC = " + CRC.ToString("x4")); } } else { Trace.WriteLine("收到数据少于等于0!"); break; } } catch (Exception e) { Trace.WriteLine(e.Message); break; } } Trace.WriteLine("----------Leaving" + myCRT.CRTName + "Fun_RecvFromCRT_Return!!"); }