From 3884b3f997ae22ae96b0d11487b0fd0fc1578fbf Mon Sep 17 00:00:00 2001 From: Artyom Date: Mon, 22 Apr 2024 19:53:03 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=20?= =?UTF-8?q?Arduino=D1=8E=D1=8A.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CyberSystem/ApiServer/ApiServer.csproj | 2 + .../ApiServer/Controllers/PostContoller.cs | 2 +- .../ApiServer/Controllers/StateController.cs | 15 ++++++ .../ApiServer/GetActualStateFromCom.cs | 48 +++++++++++++++++++ CyberSystem/ApiServer/Program.cs | 10 ++-- .../ApiServer/Properties/launchSettings.json | 2 +- project1/project1.ino | 20 ++++++++ 7 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 CyberSystem/ApiServer/Controllers/StateController.cs create mode 100644 CyberSystem/ApiServer/GetActualStateFromCom.cs create mode 100644 project1/project1.ino diff --git a/CyberSystem/ApiServer/ApiServer.csproj b/CyberSystem/ApiServer/ApiServer.csproj index 8768216..c50afcc 100644 --- a/CyberSystem/ApiServer/ApiServer.csproj +++ b/CyberSystem/ApiServer/ApiServer.csproj @@ -9,6 +9,8 @@ + + diff --git a/CyberSystem/ApiServer/Controllers/PostContoller.cs b/CyberSystem/ApiServer/Controllers/PostContoller.cs index 25b31a3..d7a0ed5 100644 --- a/CyberSystem/ApiServer/Controllers/PostContoller.cs +++ b/CyberSystem/ApiServer/Controllers/PostContoller.cs @@ -17,7 +17,7 @@ namespace ApiServer.Controllers } [HttpGet] - [Route("adminpost")] + [Route("admin")] public string GetAdmin() { return "Hello, Admin! It's your POST!!!"; diff --git a/CyberSystem/ApiServer/Controllers/StateController.cs b/CyberSystem/ApiServer/Controllers/StateController.cs new file mode 100644 index 0000000..8af7548 --- /dev/null +++ b/CyberSystem/ApiServer/Controllers/StateController.cs @@ -0,0 +1,15 @@ +using Microsoft.AspNetCore.Mvc; + +namespace ApiServer.Controllers +{ + [ApiController] + [Route("api/state")] + public class StateContoller + { + [HttpGet] + public byte GetActualState() + { + return GetActualStateFromCom.CurrentState; + } + } +} diff --git a/CyberSystem/ApiServer/GetActualStateFromCom.cs b/CyberSystem/ApiServer/GetActualStateFromCom.cs new file mode 100644 index 0000000..de2274b --- /dev/null +++ b/CyberSystem/ApiServer/GetActualStateFromCom.cs @@ -0,0 +1,48 @@ +using System; +using System.IO.Ports; +using System.Threading; +using System.Threading.Tasks; + + +namespace ApiServer +{ + public class GetActualStateFromCom : IHostedService, IDisposable + { + public static byte CurrentState { get; set; } + + static SerialPort _serialPort; + + static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) + { + SerialPort serialPort = (SerialPort)sender; + string receivedData = serialPort.ReadExisting(); + + Console.WriteLine("Полученные данные: " + receivedData); + CurrentState = Convert.ToByte(receivedData); + } + + public Task StartAsync(CancellationToken cancellationToken) + { + string portName = "COM3"; + int baudRate = 9600; + + _serialPort = new SerialPort(portName, baudRate); + _serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); + _serialPort.Open(); + + Console.WriteLine("Чтение данных с порта: " + portName); + + return Task.CompletedTask; + } + + public Task StopAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } + + public void Dispose() + { + _serialPort.Dispose(); + } + } +} diff --git a/CyberSystem/ApiServer/Program.cs b/CyberSystem/ApiServer/Program.cs index 0b40fc1..8d6f988 100644 --- a/CyberSystem/ApiServer/Program.cs +++ b/CyberSystem/ApiServer/Program.cs @@ -1,3 +1,5 @@ +using ApiServer; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. @@ -5,15 +7,16 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); -//builder.Services.AddSwaggerGen(); +builder.Services.AddSwaggerGen(); +builder.Services.AddHostedService(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { - //app.UseSwagger(); - //app.UseSwaggerUI(); + app.UseSwagger(); + app.UseSwaggerUI(); } app.UseAuthorization(); @@ -21,3 +24,4 @@ app.UseAuthorization(); app.MapControllers(); app.Run(); + diff --git a/CyberSystem/ApiServer/Properties/launchSettings.json b/CyberSystem/ApiServer/Properties/launchSettings.json index e1ba3c5..99277b1 100644 --- a/CyberSystem/ApiServer/Properties/launchSettings.json +++ b/CyberSystem/ApiServer/Properties/launchSettings.json @@ -14,7 +14,7 @@ "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", - "applicationUrl": "http://localhost:12345", + "applicationUrl": "http://localhost:12344", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/project1/project1.ino b/project1/project1.ino new file mode 100644 index 0000000..afb393a --- /dev/null +++ b/project1/project1.ino @@ -0,0 +1,20 @@ +const int digitalPin = 13; + +void setup() { + Serial.begin(9600); +} + +void loop() { + const int value = digitalRead(digitalPin); + + if (value == HIGH) + { + Serial.print(1); + } + else + { + Serial.print(0); + } + + delay(500); +}