Håller på med serieportsavläsning av HW och skall göra en liten RFID-simulator då jag bara har begränsad tillgång till tester mot hårdvaran. Exception:et får du troligtvis för att du inte knutit någon metod till DataReceived eventet. Fixa med:Eventhantering
Tanken var då en klass som ärver System.IO.Ports.SerialPort och sedan override:ar DataRecieved-eventet. Tror jag vet hur jag ska göra men får inte eventet att funka pga SerialDataReceivedEventArgs inte kan instantieras. Test-eventet (utan parametrear) fungerar ju...
Mvh
Markus
namespace AntennSimulatorComponent
{
public delegate void DataRecievedDelegate(object sender, System.IO.Ports.SerialDataReceivedEventArgs e);
public delegate void TestDelegate();
public class Simulator : System.IO.Ports.SerialPort
{
public event DataRecievedDelegate DataRecieved;
public event TestDelegate Test;
protected virtual void OnDataRecieved(System.IO.Ports.SerialDataReceivedEventArgs e)
{
// Ger fel:
// System.NullReferenceException was unhandled Message="Object reference not set to an instance of an object."
DataRecieved(this, e);
}
protected virtual void OnTest()
{
Test(); // funkar
}
// Testmetod klienten anropar för att trigga igång event-testen
public void foo()
{
OnTest();
System.IO.Ports.SerialDataReceivedEventArgs sdrea = null; // saknar konstruktor... hur göra???
OnDataRecieved(sdrea);
}
public Simulator()
{
}
}
}
Sv: Eventhantering
if ( null != DataReceived )
{
DataReceived( this, e );
}
Klassen SerialDataReceivedEventArgs har en konstruktor som är märkt internal, d.v.s. den kan bara instansieras av kod i samma assembly, i detta fall System.dll.