Domanda

Sto cercando di utilizzare metodi SerialPort .Net da un altro programma che utilizza il motore Unity3D.

Ho una libreria di classi C # (DLL) che registro e implementare una funzione di callback quando la porta seriale riceve alcuni dati.

public CSerialDll()
{         
   _serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
}

void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
   int bytes = _serial.BytesToRead;
   _comBuffer = new byte[bytes];
   _serial.Read(_comBuffer, 0, bytes);
   Console.WriteLine("data recv: " + System.Text.ASCIIEncoding.ASCII.GetString(_comBuffer));
}

E poi nel mio altro programma, ho creare un'istanza della classe.

Vorrei sapere se la mia chiamata indietro serial_DataReceived all'interno della libreria (DLL) sarà chiamato o no. Sto cercando di leggere _comBuffer all'interno della libreria da un altro programma ed è sempre vuota (anche se i dati sono venuta quando ho provato con una console app all'interno della stessa app).

Ogni aiuto è molto apprezzato.

Grazie

È stato utile?

Soluzione

<HUNCH>

Se fossi un designer di classe, vorrei mettere i dati nella richiamata, quindi, se si guarda alla classe di SerialDataReceivedEventArgs, vedrai che al suo interno è si buffer con i dati.

Quindi, dopo aver ottenuto un evento, e quindi chiamare leggere, in realtà scartare i dati che vengono inviati a voi e la richiesta di più.

In altre parole, sì, il fatto che è una libreria esterna non ha nulla a che fare con il fatto che non funziona come dovrebbe.

</HUNCH>

Altri suggerimenti

Non c'è niente di particolarmente speciale in genere sui metodi di essere in una DLL separata, finché modificatori di accesso siano impostate correttamente.

Tuttavia a seconda di come si imposta la soluzione può essere un dolore avendo cura di avere l'ultima DLL nella cartella bin.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top