NPORT 串口转以太网学习笔记 使用 C#开发
最近几天发现写博客非常有意思,以前总是上网搜资料看别人的东西,现在自己也该写点东西和大家
分享。我觉得分享是一件非常快乐的事情,在分享的过程中我也会对自己有所反思,一些东西通过文字表
达时,会突然发现自己没有发现的问题,经过这么一个过程以前理解不清楚的就有很能豁然开朗。
今天和大家分享一下一款摩莎的串口转以太网模块——NPORT,在这里我不会介绍摩莎公司,也不去
刻意介绍 NPORT。这 次 我 主要和大家分享一下,如何使用 C#编写 NPORT 的上位机程序(型号 NPORT5510,
单串口)。虽然摩莎给了非常详细的范例,使用 VC,VB,Delphi 三种不同的平台演示如何调用 NPORT 的
DLL 文件,但这些平台都是上个世纪的“版本”,现在比较流行的 C#却只字未提,在摩莎的官网上也有人
问如何使用 C#调用这些 DLL 文件,但是官方的回答也很官方“你可以去访问 MSDN 寻找答案”。实在没
有办法,只好搜集资料研究这个 NPORT 的 DLL 中调用了,那么我就来详细说说在 C#中如何使用这个 DLL
文件。
首先建立了一个工程(这是废话),然 后照着摩莎提供的 VC 的范例,设计了一个相似的界面,功能无
非是打开和关闭 NPORT,读取数据或者写入数据到 NPORT,简单的几个按钮和文本框完全可以搞定这件
事。没有 C#基础的人也一定可以完成这件事。
接着把摩莎提供的 DLL 文件,放入工程(解决方案)的 bin->Debug 目录下面。然后添加了一个类文
件,取名为 NPORT,命名空间改为 IPSerial,类的名称取了型号的名字,而命名空间就写成为 IPSerial,
使用了 DLL 文件的名称。在该类中必须添加如下命名空间
using System.Runtime.InteropServices;
由于 NPORT 是非托管的代码,说白了不是用.Net 开发的,所以使用这个命名空间才可以把 DLL
文件中的函数载入进来,载入则使用 DllImport 方法。具体的代码如下:
using System;
using System.Text;
//调用非托管的DLL文件
using System.Runtime.InteropServices;
namespace IPSerial
{
class NPORT
{
[DllImport("IPSerial.dll", EntryPoint = "nsio_init", SetLastError = true,
CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention =
CallingConvention.StdCall)]