111,097
社区成员




public class Veh
{
public Veh();
public string AxleSpacing { get; set; }
public string AxleWeight { get; set; }
public DateTime DateTime { get; set; }
public int LanelId { get; set; }
public int NumOfAxle { get; set; }
public float VehAcceleration { get; set; }
public float VehSpeed { get; set; }
public int VehType { get; set; }
public string VehTypeName { get; set; }
public static Veh DeSerializeFromBytes(ref byte[] bytes);
public byte[] SerializeToBytes();
}
public static Veh DeSerializeFromBytes(ref byte[] bytes)
{
Veh veh = new Veh();
BinaryReader reader = new BinaryReader(new MemoryStream(bytes));
veh.vehType = reader.ReadInt32();
veh.vehTypeName = reader.ReadString();
veh.vehSpeed = reader.ReadSingle();
veh.vehAcceleration = reader.ReadSingle();
veh.lanelId = reader.ReadInt32();
veh.numOfAxle = reader.ReadInt32();
veh.axleWeight = reader.ReadString();
veh.axleSpacing = reader.ReadString();
veh.dateTime = DateTime.FromBinary(reader.ReadInt64());
return veh;
}
其实这是加载了一个actipro的老版本的dll的,对其改编打包,但是不知道用的是哪部分?新版的actipto wpf studio看samples,发现哪个也用不上。private VehPage()
{
InitializeComponent();
listenPort = 65432;
client = new UdpClient(listenPort);
client.JoinMulticastGroup(IPAddress.Parse("239.255.255.255"));
client.BeginReceive(new AsyncCallback(ReceiveCallback), client);
}
public void ReceiveCallback(IAsyncResult ar)
{
IPEndPoint e = new IPEndPoint(IPAddress.Any, listenPort);
byte[] receiveBytes = client.EndReceive(ar, ref e);
Veh veh = Veh.DeSerializeFromBytes(ref receiveBytes);
this.Dispatcher.Invoke(new Action(
delegate
{
addVeh(veh);
}));
client.BeginReceive(new AsyncCallback(ReceiveCallback), client);
}
public static VehPage GetInstance()
{
if (instance == null)
{
instance = new VehPage();
}
return instance;
}
private void addVeh(Veh veh)
{
if (veh.LanelId == 1)
{
if (lane1.Children.Count < 10)
{
VehUnit vehUnit = new VehUnit();
vehUnit.Margin = new Thickness(30);
vehUnit.BindData(veh);
lane1.Children.Insert(0, vehUnit);
}
else
{
VehUnit unit = (VehUnit)lane1.Children[lane1.Children.Count - 1];
lane1.Children.Remove(unit);
lane1.Children.Insert(0, unit);
unit.BindData(veh);
unit.Reload();
}
}
else if (veh.LanelId == 2)
{
if (lane2.Children.Count < 10)
{
VehUnit vehUnit = new VehUnit();
vehUnit.Margin = new Thickness(30);
vehUnit.BindData(veh);
lane2.Children.Insert(0, vehUnit);
}
else
{
VehUnit unit = (VehUnit)lane2.Children[lane2.Children.Count - 1];
lane2.Children.Remove(unit);
lane2.Children.Insert(0, unit);
unit.BindData(veh);
unit.Reload();
}
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
if (lane1.Children.Count < 10)
{
VehUnit uinit = new VehUnit();
uinit.Margin = new Thickness(30);
lane1.Children.Insert(0, uinit);
}
else
{
VehUnit unit = (VehUnit)lane1.Children[lane1.Children.Count - 1];
lane1.Children.Remove(unit);
lane1.Children.Insert(0, unit);
unit.Reload();
}
}
}
以前有个人在winform下制作的,想对其模仿,改在wpf和ASP下