72 lines
2.0 KiB
Plaintext
72 lines
2.0 KiB
Plaintext
@page "/serialtest"
|
|
@using System.IO.Ports
|
|
|
|
<PageTitle>Serial Test</PageTitle>
|
|
|
|
<label for="portname">Port:</label>
|
|
<InputText id="portname" @bind-Value="portname"></InputText>
|
|
<label for="inputdata">Data:</label>
|
|
<InputText id="inputdata" @bind-Value="inputdata"></InputText>
|
|
<button @onclick="SendData">Send</button>
|
|
<p>
|
|
<label>Received: @receivedText</label>
|
|
</p>
|
|
|
|
|
|
|
|
@code {
|
|
SerialPort? port;
|
|
string? portname = "COM5";
|
|
string? receivedText;
|
|
string? inputdata ="LED";
|
|
|
|
bool status = false;
|
|
|
|
bool Sending = false;
|
|
bool Receiving = false;
|
|
|
|
public async Task SendData()
|
|
{
|
|
if (Sending) return; // nichts senden, wenn bereits am Senden
|
|
Sending = true;
|
|
if (port == null && portname != null)
|
|
{
|
|
port = new SerialPort(portname);
|
|
port.BaudRate = 115200; //9600
|
|
port.DataReceived += port_DataReceived;
|
|
//port.DataBits = 8;
|
|
//port.StopBits = StopBits.One;
|
|
//port.Parity = Parity.None;
|
|
//port.Handshake = Handshake.None;
|
|
//port.RtsEnable = true;
|
|
port.Open();
|
|
}
|
|
if (port == null || !port.IsOpen) return; // Port konnte nicht initialisiert werden oder ist bereits geöffnet - dann nicht nochmal öffnen
|
|
// port.Write($"<REZEPT:1-40,3-20,5-30,7-30,1-40,3-20,5-30,7-30,1-40,3-20,5-30,7-30:REZEPT>");
|
|
port.Write($"<{inputdata}> ");
|
|
status = !status;
|
|
Sending = false;
|
|
// inputdata = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
|
{
|
|
if (Receiving) return;
|
|
Receiving = true;
|
|
SerialPort port = (SerialPort)sender;
|
|
if (port != null)
|
|
{
|
|
var text = port.ReadExisting();
|
|
Console.WriteLine(text);
|
|
receivedText = text;
|
|
InvokeAsync(StateHasChanged);
|
|
|
|
// port.Close();
|
|
}
|
|
Receiving = false;
|
|
}
|
|
}
|