Hej, od jakiegoś czasu męczę się z napisaniem kodu w C#, który poprawnie obsługiwałby port COM. Chodzi mi o to, abym mógł przesłać dane po czym mają do mnie wrócić wyświetlając się na ekranie. Póki co posługując się MSDN napisałem taki kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.IO.Ports;
namespace serialports1
{
class Program
{
static void Main(string[] args)
{
SerialPort _serialPort = new SerialPort();
string[] _serialName = SerialPort.GetPortNames();
Console.WriteLine(_serialName[0]);
_serialPort.PortName = _serialName[0];
_serialPort.BaudRate = 9600;
_serialPort.Parity = Parity.None;
_serialPort.StopBits = StopBits.One;
_serialPort.DataBits = 8;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialDatataReceived);
try
{
_serialPort.Open();
}
catch (Exception error)
{
Console.WriteLine("ERROR: "+error);
}
_serialPort.WriteLine("hello!");
Console.ReadLine();
}
private static void _serialDatataReceived(object sender,SerialDataReceivedEventArgs e)
{
var port = (SerialPort)sender;
string msg = port.ReadExisting();
Console.WriteLine(msg);
}
}
}
Do symulacji portów COM używam Virtual Serial Port Driver 8.0. Wysyłanie danych działa, jednak mam problem z ich odebraniem. Użyłem debuggera i okazało się że zdarzenie SerialDataReceived w ogóle nie jest wywoływane. Czy mógłby ktoś udzielić wskazówek jak poprawić kod? Byłbym bardzo wdzięczny:)