`
isiqi
  • 浏览: 16348221 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

.Net Micro Framework研究—TCP/IP通信

阅读更多

试验平台:Digi MF开发板

关于网络通信方面,Digi提供了两个程序,一个是TCP Server运行在Digi的开发板上,一个是TCP Client程序,运行在PC上,通过网络,上位机很容易控制Digi开发的IO信号。客户端程序运行后的界面如下:

(图MF071029004.jpg

如果仅仅运行一下示例程序,那显然不过瘾!既然串口实现了Modbus Rtu协议,那么网口就实现Modbus Tcp协议吧,实现的Modbus Tcp协议比我们用串口实现Modbus Rtu的指令要多一个,不仅实现了3号命令,也实现了16号命令,这样我们就可以通过Modbus Tcp读写Digi开发板的数据了。这次我们操作的是Digi开发板上的5LED灯。用OutputPort对象去操作。

操作GPIO的相关代码如下:

//GPIO信号

DataBuff[0] = 0;

DataBuff[1] = (byte)((output[0].Read() ? 1 : 0) | (output[1].Read() ? 2 : 0) | (output[2].Read() ? 4 : 0) | (output[3].Read() ? 8 : 0) | (output[4].Read() ? 16 : 0));

//GPIO信号

bool[] bFlag = new bool[5];

bFlag[0]=(DataBuff[1] & 0x01)>0 ? true:false;

bFlag[1]=(DataBuff[1] & 0x02)>0 ? true:false;

bFlag[2]=(DataBuff[1] & 0x04)>0 ? true:false;

bFlag[3]=(DataBuff[1] & 0x08)>0 ? true:false;

bFlag[4]=(DataBuff[1] & 0x10)>0 ? true:false;

for (i = 0; i < 5; i++)

{

output[i].Write(bFlag[i]);

}

网络操作相关源码如下:

using System;

using Microsoft.SPOT;

using System.Net;

using System.Net.Sockets;

using System.Text;

using System.Threading;

using Microsoft.SPOT.Hardware;

namespace MFModbusTcp

{

public class ModbusTcpSlave

{

//MF开发板 IO

private OutputPort[] output=new OutputPort[5];

Cpu.Pin[] pin = new Cpu.Pin[5] { (Cpu.Pin)0, (Cpu.Pin)1, (Cpu.Pin)2, (Cpu.Pin)5, (Cpu.Pin)6 };

private Socket socketServer;

private Socket s = null;

//变量缓冲区

private byte[] m_bytData = new byte[256];

private byte[] m_InputTCPBuf = new byte[1024];

private byte[] m_OutputTCPBuf = new byte[1024];

public byte[] DataBuff = new byte[1024];

//启动Modbus Tcp服务

public void Run()

{

//初始化 GPIO

for (int i = 0; i < 5; i++)

{

output[i] = new OutputPort(pin[i], false);

}

socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

socketServer.Bind(new IPEndPoint(DottedDecimalToIp(0, 0, 0, 0), 502));

socketServer.Listen(1);

Debug.Print("Modbus Tcp Slave Started");

while (true)

{

s = socketServer.Accept();

while (s != null)

{

if ((int)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Error) != 0) goto ExitServer;

if (s.Available > 0)

{

TCP_DealwithCommand();

}

Thread.Sleep(10);

}

}

ExitServer:

s.Close();

s = null;

Debug.Print("Modbus Tcp Slave Exit");

}

//数据解析

private void TCP_DealwithCommand()

{

int i = 0;

int lngSendNum = 0;

int lngDataNum = 0;

int lngDataAddr = 0;

//接收数据

int intRet=s.Receive(m_InputTCPBuf);

//Debug.Print("Receive Num:" + intRet.ToString());

for (i = 0; i < 12; i++) m_OutputTCPBuf[i] = m_InputTCPBuf[i];

//---------------------------------------------------------------

//Modbus 读命令

if (m_InputTCPBuf[7] == 3)

{

}

//---------------------------------------------------------------

//Modbus 写命令

if (m_InputTCPBuf[7] == 16)

{

}

}

//IP地址转化

private long DottedDecimalToIp(byte a1, byte a2, byte a3, byte a4)

{

return (long)((ulong)a4 << 24 | (ulong)a3 << 16 | (ulong)a2 << 8 | (ulong)a1);

}

}

}

程序部署运行后,我们就可以用标准的Modbus Tcp Client程序测试了,我使用的是YFIOServer

1、 先配置Modbus Tcp驱动程序

(图MF071029001.jpg

2、 再配置IO连接变量

(图MF071029001.jpg

3、 开始读写GPIO,此时GPIO灯的亮灭,完全被写入的数据控制了。

(图MF071029001.jpg

总论:很难想像,操作TCP的代码比C#的代码还要简洁高效,不到十几分钟,就把一个C#代码改造为MF代码,并且在很短的时间内就调试成功。微软的下一个战略看来马上就成为现实:全世界的每一个智能设备都用MF上网J

分享到:
评论

相关推荐

    .NetMicro Framework的TCP/IP stack

    3. **.NET Micro Framework栈(MSSTACK)**:这是.NET MF自带的TCP/IP实现,专为微控制器设计,简化了API,同时提供了必要的网络服务。MSSTACK包含了一系列的HAL(硬件抽象层)和PAL(平台抽象层)接口,这些接口...

    Expert .NET Micro Framework(德 Jens Kühner)

    7. **网络编程**:讲解如何利用.NET Micro Framework进行TCP/IP通信,支持HTTP、FTP等网络协议。 8. **安全与加密**:讨论嵌入式系统中的安全问题,包括数据保护、身份验证和加密技术。 9. **实时性与并发**:分析...

    Microsoft .NET Micro Framework嵌入式编程(美 汤普逊)

    5. **网络与通信**:介绍.NET MF中的网络功能,如TCP/IP协议栈、HTTP协议、WebSocket支持,以及如何实现设备间的通信。 6. **安全与固件更新**:讲解.NET MF的安全特性,如代码签名、加密,以及如何实现固件的远程...

    Apress - Expert .NET Micro Framework (Apr 2008)

    6. **网络通信**:讲解.NET MF支持的各种网络协议,如TCP/IP、HTTP和WiFi,以及如何实现网络功能。 7. **安全与加密**:探讨.NET MF中的安全特性,包括代码签名、安全策略和加密技术,以保护嵌入式设备免受恶意攻击...

    GHI .NET MICRO FRAMEWORK入门教程

    ### GHI .NET MICRO FRAMEWORK入门教程 #### 关于本书 本书主要介绍如何利用Microsoft .NET Micro Framework(简称.NETMF)进行嵌入式系统的开发。.NET Micro Framework将.NET平台的强大功能与Visual Studio的高效...

    NETMFx:.NET Micro Framework 驱动程序和实用程序库

    例如,网络库可以支持TCP/IP协议栈,允许设备进行网络通信;而文件系统库则提供了读写文件的能力,便于数据存储和检索。 C#是.NET Micro Framework的主要编程语言。它是一种类型安全、面向对象的语言,拥有丰富的...

    嵌入式系统/ARM技术中的嵌入版.Net源码被微软开放 已免除相关授权费

    然而,值得注意的是,.NET Micro Framework的TCP/IP通信堆叠和加密库的源代码并未开放。这部分代码由于涉及外部授权(TCP/IP堆叠来自EBSNet)或超出框架本身的应用范围(加密库),因此不包含在开源项目中。微软建议...

    S7.Net动态链接库DLL.rar

    S7.Net动态链接库DLL是专门针对西门子S7系列PLC设计的一种通信库,它允许用户通过.NET Framework进行编程,实现与各种型号的西门子PLC(包括S7-200、S7-300、S7-400、S7-1200和S7-1500)的高效通信。这个DLL库为...

    超级好的VxWorks入门覆盖vxworks主要内容 .zip

    C#标签可能意味着VxWorks与.NET Micro Framework或者.NET Compact Framework的集成,或者是通过C#来开发VxWorks应用。 1. **VxWorks基本概念**:VxWorks的核心特点是其微内核设计,包括任务管理、内存管理、中断...

    OpenNETCF.Desktop.Communication 2.8.1 -2.9.4版本

    OpenNETCF.Desktop.Communication是针对C#开发者的一个开源库,特别设计用于在终端设备(如Windows CE、Windows Mobile或.NET Compact Framework支持的其他设备)和PC之间进行通信同步。这个库涵盖了2.8.1到2.9.4的...

    M2Mqtt.NetCF39.dll_mqtt_

    这个框架主要针对Windows CE、Windows Mobile和.NET Micro Framework等资源有限的环境。M2Mqtt.NetCF39.dll是专为这些平台设计的版本,它使得在这些平台上实现MQTT协议变得容易且高效。 MQTT协议的核心特点是其简单...

    UDP.zip_s3c6410_s3c6410 UDP

    它拥有强大的处理能力,支持多种网络协议栈,包括TCP/IP协议族,因此非常适合进行网络通信。 在s3c6410处理器上实现UDP通信,首先需要了解并配置其内部的网络控制器,如以太网控制器。这通常涉及到设置MAC地址、...

    Windows.Embedded.CE.6.0.Fundamentals

    它支持TCP/IP协议栈,以及蓝牙、Wi-Fi等多种无线通信方式,使得设备能够接入互联网或者与其他设备进行数据交换。 安全性是任何系统都不能忽视的部分。Windows Embedded CE提供了安全策略和加密服务,如SSL/TLS协议...

    wince 教案,wince 教案

    - **网络支持**:包括TCP/IP协议栈,提供网络连接和通信功能。 - **设备驱动程序模型**:允许开发者为各种硬件编写驱动程序,确保硬件兼容性。 - **应用程序框架**:如.NET Micro Framework,支持.NET应用程序的...

    Windows Embedded Compact 7微软学习资料

    5. **网络功能**:WEC7具有强大的网络支持,包括TCP/IP协议栈、HTTP/HTTPS服务器和客户端,以及SMTP、POP3等邮件协议,便于实现设备间的通信和数据交换。 6. **多媒体支持**:集成了DirectX技术,可以处理音频、...

    搅拌机程序.rar

    2. **编程语言**:程序可能由各种编程语言编写,如C/C++、Python、Java或特定的嵌入式语言如C# for .NET Micro Framework等。选择哪种语言取决于系统需求和资源限制。 3. **电机控制**:搅拌机的运行可能需要精确的...

    从51到嵌入式系统技术与应用

    此外,课程可能还会涉及其他相关主题,如实时操作系统(RTOS)、嵌入式系统的硬件设计、固件更新、通信协议(如串口、USB、TCP/IP)以及传感器和执行器的接口技术。这些都是构建复杂嵌入式系统不可或缺的知识。 总...

    Windows Embedded CE 6.0 Fundamentals

    2. .NET Micro Framework:对于.NET开发者,可以利用此框架在CE上开发C#和VB.NET应用。 3. 设备驱动程序:开发者可以使用DDK(Driver Development Kit)编写驱动程序,实现对硬件的控制。 五、部署与更新 1. 部署...

    VB程序,S7-200PLC通信

    2. **西门子的通信协议**:S7-200PLC支持多种通信协议,如PPI(Protocol for Peripheral Interconnection)、MPI(MultiPoint Interface)、TCP/IP和USS(Universal Serial Interface)。VB程序需要根据选定的协议来...

    Professional Microsoft Windows Embedded CE 6.0第11章

    10. **应用程序框架(Application Frameworks)**:Windows Embedded CE 6.0提供了多种应用程序框架,如.NET Micro Framework和Windows CE .NET。本章可能讨论了如何利用这些框架开发和部署应用程序。 由于提供的...

Global site tag (gtag.js) - Google Analytics