我正在尝试从另一个使用Unity3D引擎的程序中使用.NET SerialPort方法。

我有AC#类库(DLL),当串行端口接收到一些数据时,可以注册并实现回调函数。

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

然后在我的另一个程序中,我创建了类的实例。

我想知道我的回电serial_datareceived在库中(dll)是否会被调用。我正在尝试从另一个程序中读取库中的_combuffer,并且它总是空的(即使我在同一应用程序中使用控制台应用程序测试时,数据也出现)。

任何帮助是极大的赞赏。

谢谢

有帮助吗?

解决方案

<HUNCH>

如果我是班级设计师,我会将数据放入回调中,因此,如果您查看 SerialDataReceivedEventArgs 上课,您会看到内部是您带有数据的缓冲区。

因此,在获得事件后,然后致电阅读,实际上您会丢弃发送给您的数据并要求更多。

换句话说,是的,它是一个外部库这一事实与它无法正常工作的事实无关。

</HUNCH>

其他提示

通常,只要正确设置访问修饰符,方法在单独的DLL中通常没有什么特别的。

但是,根据您如何设置解决方案,可能会痛苦,以确保您的bin文件夹中有最新的DLL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top