Pregunta

Estoy tratando de utilizar métodos SERIALPORT .NET desde otro programa que utiliza el motor Unity3D.

Tengo una biblioteca de clase C # (DLL) que registro e implementar una función de devolución de llamada cuando el puerto serie recibe algunos datos.

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

Y luego en mi otro programa, puedo crear una instancia de la clase.

Quiero saber si mi espalda llamada serial_DataReceived dentro de la biblioteca (DLL) será llamado o no. Estoy intentando leer _comBuffer dentro de la biblioteca de otro programa y siempre vacía (a pesar de que los datos están llegando cuando probé con una aplicación de consola dentro de la misma aplicación).

Cualquier ayuda es muy apreciada.

Gracias

¿Fue útil?

Solución

<HUNCH>

Si fuera un diseñador de la clase, me gustaría poner los datos en la devolución de llamada, por lo que si nos fijamos en la clase SerialDataReceivedEventArgs, verá que el interior es lo que buffer con los datos.

Así que, después de recibir un evento, y luego llamar a leer, en realidad se descartan los datos que se envían a usted y solicitud de más.

En otras palabras, sí, el hecho de que es una biblioteca externa no tiene nada que ver con el hecho de que no está funcionando como debiera.

</HUNCH>

Otros consejos

No es por lo general nada especial en los métodos que están en una DLL independiente, siempre y cuando modificadores de acceso se establecen correctamente.

Sin embargo, dependiendo de cómo se configura su solución puede ser un dolor de asegurarse de que tiene la última versión de DLL en la carpeta bin.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top