gps 数据接收

This commit is contained in:
yanghongwei 2024-07-27 20:53:33 +08:00
parent 54c03916a8
commit bb455678cc
4 changed files with 609 additions and 2 deletions

View File

@ -432,11 +432,46 @@
</member> </member>
<member name="M:langguanApi.Controllers.TransportController.Add(langguanApi.Model.AddTransport)"> <member name="M:langguanApi.Controllers.TransportController.Add(langguanApi.Model.AddTransport)">
<summary> <summary>
新增清洁运输 新增门禁
</summary> </summary>
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Controllers.TransportController.AddWasherList(System.Collections.Generic.List{langguanApi.Model.AddWasher})">
<summary>
推送洗车机列表(洗车机列表和洗车机记录组合在一起)
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.TransportController.WasherList">
<summary>
获取洗车机列表
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.TransportController.WasherHistoryList(langguanApi.Model.transportReqPage)">
<summary>
获取洗车机历史记录(起始时间和结束时间非空根据起始时间和结束时间筛选数据如果为空默认获取30条数据)
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.TransportController.AddRuckScalesList(System.Collections.Generic.List{langguanApi.Model.AddTruckScalesDto})">
<summary>
推送地磅列表
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.TransportController.GetTransport(langguanApi.Model.transportReqPage)">
<summary>
获取清洁运输(门禁和地磅组合,地磅获取总重量,后期会用地磅重量-车辆车辆)
</summary>
<param name="reqPage"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.UserController.Login(langguanApi.Model.Dto.UserLogin)"> <member name="M:langguanApi.Controllers.UserController.Login(langguanApi.Model.Dto.UserLogin)">
<summary> <summary>
登陆 登陆
@ -641,6 +676,36 @@
basemodel basemodel
</summary> </summary>
</member> </member>
<member name="T:langguanApi.Model.CleanTransportationDto">
<summary>
清洁运输展示信息
</summary>
</member>
<member name="P:langguanApi.Model.CleanTransportationDto.CarNumber">
<summary>
车牌号
</summary>
</member>
<member name="P:langguanApi.Model.CleanTransportationDto.CarColor">
<summary>
车牌颜色
</summary>
</member>
<member name="P:langguanApi.Model.CleanTransportationDto.Weight">
<summary>
运输量
</summary>
</member>
<member name="P:langguanApi.Model.CleanTransportationDto.Time">
<summary>
通过时间
</summary>
</member>
<member name="P:langguanApi.Model.CleanTransportationDto.CarType">
<summary>
车牌类型
</summary>
</member>
<member name="P:langguanApi.Model.columnView.hour"> <member name="P:langguanApi.Model.columnView.hour">
<summary> <summary>
@ -1902,6 +1967,11 @@
有效期限 有效期限
</summary> </summary>
</member> </member>
<member name="P:langguanApi.Model.Transport.Time">
<summary>
出入场时间
</summary>
</member>
<member name="P:langguanApi.Model.AddTransport.CarNumber"> <member name="P:langguanApi.Model.AddTransport.CarNumber">
<summary> <summary>
车牌号 车牌号
@ -1967,6 +2037,306 @@
有效期限 有效期限
</summary> </summary>
</member> </member>
<member name="T:langguanApi.Model.TruckScales">
<summary>
地磅
</summary>
</member>
<member name="P:langguanApi.Model.TruckScales.Weight">
<summary>
重量
</summary>
</member>
<member name="P:langguanApi.Model.TruckScales.GoodsType">
<summary>
货物类型
</summary>
</member>
<member name="P:langguanApi.Model.TruckScales.CarNumber">
<summary>
车牌
</summary>
</member>
<member name="P:langguanApi.Model.TruckScales.DTime">
<summary>
时间
</summary>
</member>
<member name="P:langguanApi.Model.AddTruckScalesDto.Weight">
<summary>
重量
</summary>
</member>
<member name="P:langguanApi.Model.AddTruckScalesDto.GoodsType">
<summary>
货物类型
</summary>
</member>
<member name="P:langguanApi.Model.AddTruckScalesDto.CarNumber">
<summary>
车牌
</summary>
</member>
<member name="P:langguanApi.Model.AddTruckScalesDto.DTime">
<summary>
时间
</summary>
</member>
<member name="P:langguanApi.Model.Washer.Name">
<summary>
洗车机名称Name
</summary>
</member>
<member name="P:langguanApi.Model.Washer.EquipmentStatus">
<summary>
设备状态(EquipmentStatus,0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.RunStatus">
<summary>
运行状态(RunStatus,0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.WPAlarm">
<summary>
水压报警(WPAlarm 0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.PSAlarm">
<summary>
相序报警(PSAlarm0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.FaultAlarm">
<summary>
故障报警(FaultAlarm 0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.RinsePressure">
<summary>
冲洗压力
</summary>
</member>
<member name="P:langguanApi.Model.Washer.RinseCurrent">
<summary>
冲洗电流
</summary>
</member>
<member name="P:langguanApi.Model.Washer.RinseVoltage">
<summary>
冲洗电压(RinseVoltage 单位V)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.Discharge">
<summary>
水流量(Discharge 单位T)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.Electricity">
<summary>
电量(Electricity KW/H)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.Current">
<summary>
电流(Current A)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.WaterPressure">
<summary>
水压(WaterPressure MPa)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.RunTime">
<summary>
运行时间(RunTime)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.RecodeTime">
<summary>
清洗记录时间(RecodeTime)
</summary>
</member>
<member name="P:langguanApi.Model.Washer.EquipmentId">
<summary>
洗车机编码
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.Name">
<summary>
洗车机名称Name
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.EquipmentStatus">
<summary>
设备状态(EquipmentStatus,0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.RunStatus">
<summary>
运行状态(RunStatus,0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.WPAlarm">
<summary>
水压报警(WPAlarm 0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.PSAlarm">
<summary>
相序报警(PSAlarm0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.FaultAlarm">
<summary>
故障报警(FaultAlarm 0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.RinsePressure">
<summary>
冲洗压力
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.RinseCurrent">
<summary>
冲洗电流
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.RinseVoltage">
<summary>
冲洗电压(RinseVoltage 单位V)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.Discharge">
<summary>
水流量(Discharge 单位T)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.Electricity">
<summary>
电量(Electricity KW/H)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.Current">
<summary>
电流(Current A)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.WaterPressure">
<summary>
水压(WaterPressure MPa)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.RunTime">
<summary>
运行时间(RunTime)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.RecodeTime">
<summary>
清洗记录时间(RecodeTime)
</summary>
</member>
<member name="P:langguanApi.Model.AddWasher.EquipmentId">
<summary>
洗车机编码
</summary>
</member>
<member name="T:langguanApi.Model.GetWasherDto">
<summary>
添加洗车机
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.Name">
<summary>
洗车机名称Name
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.EquipmentStatusString">
<summary>
设备状态(EquipmentStatus,0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.RunStatusString">
<summary>
运行状态(RunStatus,0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.WPAlarmString">
<summary>
水压报警(WPAlarm 0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.PSAlarmString">
<summary>
相序报警(PSAlarm0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.FaultAlarmString">
<summary>
故障报警(FaultAlarm 0表示异常1表示正常)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.RinsePressure">
<summary>
冲洗压力
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.RinseCurrent">
<summary>
冲洗电流
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.RinseVoltage">
<summary>
冲洗电压(RinseVoltage 单位V)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.Discharge">
<summary>
水流量(Discharge 单位T)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.Electricity">
<summary>
电量(Electricity KW/H)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.Current">
<summary>
电流(Current A)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.WaterPressure">
<summary>
水压(WaterPressure MPa)
</summary>
</member>
<member name="P:langguanApi.Model.GetWasherDto.EquipmentId">
<summary>
洗车机编码
</summary>
</member>
<member name="T:langguanApi.Model.WasherHistoryDto">
<summary>
添加洗车机历史
</summary>
</member>
<member name="P:langguanApi.Model.WasherHistoryDto.EquipmentId">
<summary>
洗车机编码
</summary>
</member>
<member name="P:langguanApi.Model.WasherHistoryDto.RunTime">
<summary>
运行时间(RunTime)
</summary>
</member>
<member name="P:langguanApi.Model.WasherHistoryDto.RecodeTime">
<summary>
清洗记录时间(RecodeTime)
</summary>
</member>
<member name="M:langguanApi.Service.AlertService.Add(langguanApi.Model.AddAlertDto)"> <member name="M:langguanApi.Service.AlertService.Add(langguanApi.Model.AddAlertDto)">
<summary> <summary>
新加 新加
@ -2258,6 +2628,47 @@
<param name="deviceId"></param> <param name="deviceId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="F:langguanApi.Service.Gps808SocketServer.result">
<summary>
缓冲器
</summary>
</member>
<member name="F:langguanApi.Service.Gps808SocketServer.maxClientCount">
<summary>
最大连接数
</summary>
</member>
<member name="F:langguanApi.Service.Gps808SocketServer.ip">
<summary>
服务IP地址
</summary>
</member>
<member name="P:langguanApi.Service.Gps808SocketServer.port">
<summary>
服务端口号
</summary>
</member>
<member name="F:langguanApi.Service.Gps808SocketServer.ClientSockets">
<summary>
客户端列表
</summary>
</member>
<member name="F:langguanApi.Service.Gps808SocketServer.ipEndPoint">
<summary>
IP终端
</summary>
</member>
<member name="F:langguanApi.Service.Gps808SocketServer.ServerSocket">
<summary>
服务端Socket
</summary>
</member>
<member name="M:langguanApi.Service.Gps808SocketServer.Start">
<summary>
启动服务
</summary>
<returns></returns>
</member>
<member name="M:langguanApi.Service.Hj212Service.GetIndexData(System.Int32)"> <member name="M:langguanApi.Service.Hj212Service.GetIndexData(System.Int32)">
<summary> <summary>
首页数据 首页数据
@ -2680,6 +3091,34 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.TransportService.GetTransport(langguanApi.Model.transportReqPage)">
<summary>
获取清洁运输列表(门禁和地磅组合)
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.TransportService.GetColorString(System.Int32)">
<summary>
获取车辆颜色
</summary>
<param name="color"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.TruckScalesService.AddTruckScalesList(System.Collections.Generic.List{langguanApi.Model.AddTruckScalesDto})">
<summary>
新加
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.TruckScalesService.GetTruckScalesList">
<summary>
获取地磅集合
</summary>
<param name="ids"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.UserService.login(System.String,System.String)"> <member name="M:langguanApi.Service.UserService.login(System.String,System.String)">
<summary> <summary>
登录 登录
@ -2740,6 +3179,26 @@
<param name="userId"></param> <param name="userId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.WasherService.addWasher(System.Collections.Generic.List{langguanApi.Model.AddWasher})">
<summary>
新增洗车机
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.WasherService.getWasherList">
<summary>
获取洗车机列表
</summary>
<returns></returns>
</member>
<member name="M:langguanApi.Service.WasherService.WasherHistoryList(langguanApi.Model.transportReqPage)">
<summary>
获取洗车机历史记录
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.WeatherService.GetWeather"> <member name="M:langguanApi.Service.WeatherService.GetWeather">
<summary> <summary>
爬气象局的天气数据% 爬气象局的天气数据%

View File

@ -0,0 +1,145 @@
using IceCoffee.FastSocket.Tcp;
using langguanApi.Model.Dto;
using langguanApi.Model;
using langguanApi.Service.HJ212;
using System.Net.Sockets;
using System.Net;
using System.Text;
using JT808.Protocol;
using Org.BouncyCastle.Utilities;
using LogicExtensions;
using JT808.Protocol.Enums;
using JT808.Protocol.MessageBody;
namespace langguanApi.Service
{
public class Gps808SocketServer
{
/// <summary>
/// 缓冲器
/// </summary>
private byte[] result = new byte[1024];
/// <summary>
/// 最大连接数
/// </summary>
private int maxClientCount;
/// <summary>
/// 服务IP地址
/// </summary>
private string ip;
/// <summary>
/// 服务端口号
/// </summary>
private int port => 5002;
// 编码
// private string code;
/// <summary>
/// 客户端列表
/// </summary>
private List<Socket> ClientSockets;
/// <summary>
/// IP终端
/// </summary>
private IPEndPoint ipEndPoint;
/// <summary>
/// 服务端Socket
/// </summary>
private Socket ServerSocket;
private static NetServer server;
private static IceCoffee.FastSocket.Tcp.TcpClient client;
/// <summary>
/// 启动服务
/// </summary>
/// <returns></returns>
public async Task Start()
{
ip = IPAddress.Any.ToString();
server = new NetServer(ip, port);
server.Started += OnNetServer_Started;
server.ExceptionCaught += OnNetServer_ExceptionCaught;
server.SessionStarted += OnNetServer_SessionStarted;
server.SessionClosed += OnNetServer_SessionClosed;
server.ReceivedData += OnNetServer_ReceivedData;
server.SendData += OnNetServer_SendData;
server.Start();
}
private void OnNetServer_Started()
{
Console.WriteLine($"开始监听gps: {ip}:{port}");
}
private void OnNetServer_SendData(NetSession session, NetPackage netPackage, string rawText)
{
Console.WriteLine($"发送给gps: {session.RemoteIPEndPoint}: {rawText}");
}
private void OnNetServer_SessionClosed(TcpSession session)
{
Console.WriteLine("会话关闭gps: " + session.RemoteIPEndPoint + ", 当前会话总数: " + server.SessionCount);
}
private static void OnNetServer_SessionStarted(TcpSession session)
{
Console.WriteLine("会话开始gps: " + session.RemoteIPEndPoint + ", 当前会话总数: " + server.SessionCount);
}
private async void OnNetServer_ReceivedData(TcpSession session, NetPackage netPackage, string rawText)
{
Console.WriteLine("收到自gps: " + session.RemoteIPEndPoint + ": " + rawText);
byte[] bytes = rawText.ToBytes();
//2.将数组反序列化
// var jT808Package =new JT808Serializer.Deserialize(bytes.AsSpan());
//3.解析数据
var jT808Package = new JT808Serializer().Deserialize(bytes);
//4.数据包体
JT808_0x0200 jT808_0x0200 = (JT808_0x0200)jT808Package.Bodies;
var lon = jT808_0x0200.Lat;
var lat= jT808_0x0200.Lng;
Console.WriteLine("经度:" + lon + " 纬度:" + lat);
//4.处理数据
//5.返回数据
//6.发送数据
// st 27 =voc,st=31 cems, st=32,tsp, st=22 微站
}
private void OnNetServer_ExceptionCaught(Exception ex)
{
Console.WriteLine("Error in NetServer gps" + ex);
}
byte[] CallCRC(byte[] data)
{
string ccc = Convert.ToString(getCrc(data), 16).PadLeft(4, '0');
return Encoding.ASCII.GetBytes(ccc.ToUpper());
}
private int getCrc(byte[] data)
{
int high;
int flag;
// 16位寄存器所有数位均为1
int wcrc = 0xffff;
for (int i = 0; i < data.Length; i++)
{
// 16 位寄存器的高位字节
high = wcrc >> 8;
// 取被校验串的一个字节与 16 位寄存器的高位字节进行“异或”运算
wcrc = high ^ data[i];
for (int j = 0; j < 8; j++)
{
flag = wcrc & 0x0001;
// 把这个 16 寄存器向右移一位
wcrc = wcrc >> 1;
// 若向右(标记位)移出的数位是 1,则生成多项式 1010 0000 0000 0001 和这个寄存器进行“异或”运算
if (flag == 1)
wcrc ^= 0xa001;
}
}
return wcrc;
}
}
}

View File

@ -68,6 +68,8 @@ namespace langguanApi.Service
server.SendData += OnNetServer_SendData; server.SendData += OnNetServer_SendData;
server.Start(); server.Start();
} }
private void OnNetServer_Started() private void OnNetServer_Started()
{ {
Console.WriteLine($"开始监听: {ip}:{port}"); Console.WriteLine($"开始监听: {ip}:{port}");

View File

@ -16,6 +16,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="IceCoffee.FastSocket" Version="1.0.3" /> <PackageReference Include="IceCoffee.FastSocket" Version="1.0.3" />
<PackageReference Include="JT808" Version="2.6.8" />
<PackageReference Include="Mapster" Version="7.4.0" /> <PackageReference Include="Mapster" Version="7.4.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.27" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.27" />
<PackageReference Include="MongoDB.Bson" Version="2.27.0" /> <PackageReference Include="MongoDB.Bson" Version="2.27.0" />