/// <summary> /// /// </summary> /// <param name="st"></param> /// <param name="gvm"></param> /// <param name="giveTempValue"></param> public GRWriteGiveModeCommand(GRStation st, GiveTempMode gvm, float giveTempValue) { if (st == null) { throw new ArgumentNullException("grstation"); } this.Station = st; _giveTempMode = gvm; _giveTempValue = giveTempValue; }
/// <summary> /// /// </summary> /// <param name="data"></param> /// <returns></returns> public override CommResultState ProcessReceived(byte[] data) { if (data == null || data.Length == 0) { return(CommResultState.NullData); } if (data.Length != 9 + 0x0A) { return(CommResultState.LengthError); } if (data[4] != 0xA0 || data[5] != 0x14) { return(CommResultState.DataError); } if (data[6] != 0x0A) { return(CommResultState.DataError); } byte cachi, caclo; CRC16.CalculateCRC(data, data.Length - 2, out cachi, out caclo); byte hi = data[data.Length - 1]; byte lo = data[data.Length - 2]; if (cachi != hi || caclo != lo) { return(CommResultState.CheckError); } byte[] innerData = GRCommandMaker.GetReceivedInnerData(data); if (innerData[0] != GRDef.MC_GIVETEMP_MODE) { return(CommResultState.DataError); } _giveTempMode = GetGiveTempMode(innerData[1]); _giveTempValue = BitConverter.ToSingle(innerData, 2); return(CommResultState.Correct); }
private void btnWirte_Click(object sender, System.EventArgs e) { // is connected? float val = 0F; GiveTempMode mode = GetMode(); if (mode == GiveTempMode.TempValue) { if (!GetTempValue(out val)) { MsgBox.Show("输入数据错误!"); return; } } GRWriteGiveModeCommand cmd = new GRWriteGiveModeCommand( _grst, mode, val ); CreateImmediateTaskAndExecute(cmd); }