Добавлено чтение с Arduinoюъ.

This commit is contained in:
Artyom 2024-04-22 19:53:03 +03:00
parent e320118245
commit 3884b3f997
7 changed files with 94 additions and 5 deletions

View File

@ -9,6 +9,8 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="System.IO" Version="4.3.0" />
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
</ItemGroup>
</Project>

View File

@ -17,7 +17,7 @@ namespace ApiServer.Controllers
}
[HttpGet]
[Route("adminpost")]
[Route("admin")]
public string GetAdmin()
{
return "Hello, Admin! It's your POST!!!";

View File

@ -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;
}
}
}

View File

@ -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();
}
}
}

View File

@ -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<GetActualStateFromCom>();
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();

View File

@ -14,7 +14,7 @@
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:12345",
"applicationUrl": "http://localhost:12344",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}

20
project1/project1.ino Normal file
View File

@ -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);
}