lg_backend/langguanApi/Service/GpsService.cs

54 lines
1.7 KiB
C#

using langguanApi.Model.Entity;
using MongoDB.Bson.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace langguanApi.Service
{
public class GpsService
{
private GpsHistoryService _service = ServiceLocator.Instance.GetService<GpsHistoryService>();
/// <summary>
/// 缓冲器
/// </summary>
private byte[] result = new byte[1024];
private int port => 5002;
/// <summary>
/// 启动GPS服务
/// </summary>
/// <returns></returns>
public async Task Start()
{
// 创建本地IP地址和TCP端口号
var ipEndPoint = new IPEndPoint(IPAddress.Any, port);
TcpListener listener = new(ipEndPoint);
try
{
listener.Start();
Console.WriteLine($"Waiting for gps connection... port:{port}");
using TcpClient handler = await listener.AcceptTcpClientAsync();
await using NetworkStream stream = handler.GetStream();
int received = await stream.ReadAsync(result);
var message = Encoding.UTF8.GetString(result, 0, received);
Console.WriteLine($"GPS received: \"{message}\"");
}
catch (Exception ex)
{
Console.WriteLine($"GPS error:{ex.Message}");
}
}
/// <summary>
/// 发送GPS数据
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public async Task Send(string message)
{
var json = Newtonsoft.Json.JsonConvert.DeserializeObject<GpsHistoryDTO>(message);
await _service.AddGpsHistory(json);
}
}
}