Skip to content

Commit 7d6b721

Browse files
author
“寧々”
committed
V1.04 Add VerInfo
1 parent 45e73bd commit 7d6b721

File tree

7 files changed

+41
-13
lines changed

7 files changed

+41
-13
lines changed

MiniCarLib/Core/Util.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,15 @@ public static IPAddress GetLocalIpInSameSubnet(IPAddress ip)
9393
return IPAddress.Any;
9494
}
9595

96+
public static int[] GetLibVersion()
97+
{
98+
int[] rt = new int[2];
99+
var ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
100+
rt[0] = ver.Major;
101+
rt[1] = ver.Minor;
102+
return rt;
103+
}
104+
96105
public static string SourceCodeURL => "https://www.google.com";
97106
public static string AuthorBlogURL => "https://blog.jloli.cc";
98107
}
@@ -138,6 +147,8 @@ public static bool IsInSameSubnet(this IPAddress address2, IPAddress address, IP
138147

139148
return network1.Equals(network2);
140149
}
150+
151+
141152
}
142153

143154
public class NetWorkInterfaceInfo

MiniCarLib/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
3333
//通过使用 "*",如下所示:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.0.3.0")]
36-
[assembly: AssemblyFileVersion("1.0.3.0")]
35+
[assembly: AssemblyVersion("1.04.0.0")]
36+
[assembly: AssemblyFileVersion("1.04.0.0")]

MiniCarLib/QianCar.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ namespace MiniCarLib
1111
public class QianCar : ICar
1212
{
1313
public CarType carType => CarType.QianCar;
14+
public byte CarVersion { get; set; }
1415
public string CarName { get; set; }
1516
public CarState State { get; set; }
1617
public int Speed { get; set; }

MiniCarLib/QianCarAPI.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,5 +108,7 @@ public static void Init(QianCarController ct, string mapfile, byte[] password =
108108
public static void UnregisterCar(QianCar car) => controller.UnregisterCar(car);
109109
public static void ConfirmUnregteration(QianCar car, bool allow, bool removecar = true) => controller.ConfirmUnregteration(car, allow, removecar);
110110
public static void EmergencyStopCar(QianCar car) => controller.EmergencyStopCar(car, 0x00);
111+
public static void SendCustomData(QianCar car,byte[] data)=> controller.SendCustomData(car, new CustomData() { UserData = data });
112+
111113
}
112114
}

MiniCarLib/QianCarController.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ public virtual void ConfirmRegisteration(QianCar car,bool conf,ushort id)
9999
else
100100
res.ServerIP = Util.GetLocalIpInSameSubnet(((CarUDPClient)car.ComClient).Client.Address);
101101
res.ServerPort = Server.DataServer.ListenPort;
102+
int[] ver = Util.GetLibVersion();
103+
int vv = ver[0] * 100 + ver[1];
104+
res.ServerVersion = (ushort)vv;
102105
SendCarDataPack(car, res);
103106
}
104107

@@ -166,7 +169,8 @@ protected virtual void Server_OnCarDataReceived(IComClient client, QianComHeader
166169
if(header.FuncType == DataFunctionType.RegisterRequest)
167170
{
168171
BeforeRegistering?.Invoke(null, data);
169-
RegisrationHandler(client, header, (RegisterRequestData)data);
172+
var c = RegisrationHandler(client, header, (RegisterRequestData)data);
173+
AfterRegistered?.Invoke(c, data);
170174
return;
171175
}
172176

@@ -242,12 +246,13 @@ public virtual void CarEnterConfirmHandler(QianCar car,CarEnterConfirmData data)
242246
car.State = CarState.Idle;
243247
}
244248

249+
public virtual void SendCustomData(QianCar car,CustomData data)
250+
{
251+
SendCarDataPack(car, data);
252+
}
245253

246-
247-
248-
public virtual void RegisrationHandler(IComClient client, QianComHeader header, RegisterRequestData data)
254+
public virtual ICar RegisrationHandler(IComClient client, QianComHeader header, RegisterRequestData data)
249255
{
250-
BeforeRegistering?.Invoke(null, data);
251256
if (CheckRegisteration(data))
252257
{
253258
ICar car = CreateCarFunc(data.carType);
@@ -256,13 +261,16 @@ public virtual void RegisrationHandler(IComClient client, QianComHeader header,
256261
else
257262
car.ID = header.LocalAddress;
258263
((QianCar)car).State = CarState.OutSide;
264+
((QianCar)car).CarVersion = data.CarVersion;
259265
AllCars.AddorAlterCar(car);
260266
ConfirmRegisteration((QianCar)car, true, (ushort)car.ID);
261-
AfterRegistered?.Invoke(car, data);
267+
return car;
262268
}
263269
else
270+
{
264271
Server.SendPack(client, header.LocalAddress, new RegisterResponseData { AllowRegister = false });
265-
272+
return null;
273+
}
266274
}
267275

268276
public virtual void QueryDataHandler(QianCar car, ReportCarStateData data)

MiniCarLib/QianCarData.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,18 +138,20 @@ public void ParseByteData(byte[] data)
138138
public class RegisterRequestData : QianComData
139139
{
140140
public CarType carType { get; set; }
141+
public byte CarVersion { get; set; }
141142
public byte TokenLen => (byte)(Token?.Length ?? 0);
142143
public byte[] Token { get; set; }
143144
public bool NeedAllocID { get; set; }
144145

145-
public override byte DataLen => (byte)(TokenLen + 3);
146+
public override byte DataLen => (byte)(TokenLen + 4);
146147

147148
public override DataFunctionType FuncType => DataFunctionType.RegisterRequest;
148149

149150
public override void FillByteData(byte[] data, int offset)
150151
{
151152
ComDataWriter dw = new ComDataWriter(data, offset);
152153
dw.WriteEnum<CarType>(carType);
154+
dw.WriteByte(CarVersion);
153155
dw.WriteByte(TokenLen);
154156
if (TokenLen > 0)
155157
dw.WriteByteArray(Token, 0, Token.Length);
@@ -160,6 +162,7 @@ public override void ParseByteData(byte[] data, int offset)
160162
{
161163
ComDataReader dr = new ComDataReader(data, offset);
162164
carType = dr.ReadEnum<CarType>();
165+
CarVersion = dr.ReadByte();
163166
byte len = dr.ReadByte();
164167
if (len > 0)
165168
dr.ReadByteArray(Token = new byte[len], 0, len);
@@ -174,8 +177,9 @@ public class RegisterResponseData : QianComData
174177

175178
public IPAddress ServerIP { get; set; }
176179
public ushort ServerPort { get; set; }
180+
public ushort ServerVersion { get; set; }
177181

178-
public override byte DataLen => 9;
182+
public override byte DataLen => 11;
179183

180184
public override DataFunctionType FuncType => DataFunctionType.RegisterResponse;
181185

@@ -189,6 +193,7 @@ public override void FillByteData(byte[] data, int offset)
189193
else
190194
dw.SeekRelevant(4);
191195
dw.WriteHalfWord(ServerPort);
196+
dw.WriteHalfWord(ServerVersion);
192197
}
193198

194199
public override void ParseByteData(byte[] data, int offset)
@@ -200,6 +205,7 @@ public override void ParseByteData(byte[] data, int offset)
200205
dr.ReadByteArray(arr, 0, 4);
201206
ServerIP = new IPAddress(arr);
202207
ServerPort = dr.ReadHalfWord();
208+
ServerVersion = dr.ReadHalfWord();
203209
}
204210
}
205211

MiniCarLibTester/Form1.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ private void button8_Click(object sender, EventArgs e)
126126

127127
private void button9_Click(object sender, EventArgs e)
128128
{
129-
QianCarMap map = new QianCarMap();
130-
map.ParseMapFile(@"D:\QianZong\2021Natu\小车调度\SampleMap.txt");
129+
var ver = Util.GetLibVersion();
130+
textBox1.Text = ver[0].ToString() + "." + ver[1].ToString();
131131
}
132132
}
133133
}

0 commit comments

Comments
 (0)