c#一次性接收3帧数据,但是只能显示一帧数据,请问是怎么回事
程序如下:
public const CAN.Format RxFrame_Format = CAN.Format.Base;
public const CAN.Type RxFrame_Type = CAN.Type.Data;
//public const UInt32 RxFrame_NodeID = 0x14F6A1E6;
public const UInt32 RxFrame_NodeID2 = 0X320;//0x18ff50e5;
public const UInt32 RxFrame_NodeID1 = 0X310;
public const UInt32 RxFrame_NodeID3 = 0X330;
public const byte RxFrame_DLC = 8;
public class DeviceValue
{
public double Voltage;
public double Current;
public double Power;
public double tempreture;
public double InCurrent;
public double InVoltage;
public CAN.Timestamp Timestamp;
}
DeviceValue ValueGet(byte[] data, CAN.Frame frame)
{
DeviceValue value = new DeviceValue();
if (frame.node_id == RxFrame_NodeID3)
{
value.tempreture = (double)(data[2] * 0x100 + data[1]) / 2-40;
}
if (frame.node_id == RxFrame_NodeID1)
{
value.InVoltage = (double)(data[2] * 0x100 + data[1]) / 2;
value.InCurrent = (double)(data[4] * 0x100 + data[3]) / 64;
value.Power = (double)(data[6] * 0x100 + data[5]) / 2;
}
if (frame.node_id == RxFrame_NodeID2)
{
value.Voltage = (double)(data[2] * 0x100 + data[1]) / 32;
value.Current = (double)(data[4] * 0x100 + data[3]) / 4;
}
return value;
}
private delegate void AsyncValueSetHandler(double v, double a, double w, double t, double ia, double iv);
private void AsyncValueSet(double v, double a, double w, double t, double ia, double iv)
{
Label_OV.Text = v.ToString("F1") + "V";
Label_OA.Text = a.ToString("F1") + "A";
Label_W.Text = w.ToString("F1") + "W";
Label_T.Text = t.ToString("F1") + "C";
Label_IA.Text = ia.ToString("F1") + "A";
Label_IV.Text = iv.ToString("F1") + "V";
}
public void ValueSet(double v, double a, double w, double t,double ia,double iv)
{
try
{
this.BeginInvoke(new AsyncValueSetHandler(AsyncValueSet), new object[] { v, a, w, t, ia, iv });
}
catch { }
}
现在我只能显示RxFrame_NodeID1的数据,其他2个显示不了,请问下需要怎么改