我在.NET 4.0中编写了一个小型服务器组件,它使用TcpListener,Socket,NetworkStream和SerialPort类,所有这些都在系统中.dll assembly(v4.0.30319)。
它作为命令行应用程序运行,因此没有任何UI要求。
它目前在Windows中运行,我目前的目标是让它在Linux上运行。一种方法是使用最新版本的Mono。有没有人有任何我应该注意的提示或陷阱 - 这是可行的吗?
非常感谢任何建议,谢谢。
应用程序的结构:
更新
我已经移植了一个存根程序,它只实现了TcpListener,Socket,NetworkStream,TcpClient和SerialPort的基本功能。
除了SerialPort's DataReceived event handler, which doesn't get called by Mono之外,它运作良好。解决方案只是定期轮询端口。需要进行的另一个小改动是不能访问串口的'ReceivedBytesThreshold'属性;尝试在单声道中设置此项将抛出“不支持的功能”异常。
Ubuntu VM
我将它安装在Ubuntu Desktop 12.04的VirtualBox VM中,包括从主机(Win7)到客户操作系统的串行端口映射,它可以很好地将COM1映射到/ dev / ttyS0。最后一点,您必须以超级用户(sudo)的身份运行生成的应用程序,否则它会在运行时抱怨串行端口权限。
Raspberry Pi
我还得到了Raspberry Pi single board computer在Mono上的工作,我们的硬件工程师提供了一些帮助,他们创建了一个自定义扩展板,与RPi的板载UART(通过GPIO)通信。您需要运行的操作系统是“软浮动”Debian发行版,可在Raspberry Pi download section上找到。使用apt-get包管理器轻松安装Mono就可以了。在这种情况下,串行端口名称是/ dev / ttyAMA0。
答案 0 :(得分:2)
最简单的方法是尝试使用mono来构建它,看看它是否运行。 Mono还有一个compatibility analyzer,它可以运行您的代码,看看它有什么潜在的兼容性问题。
考虑到你正在处理非常标准的课程,听起来你不应该有任何实际问题。