以太网转串口是工控领域最常见的智能通信模块,有的是一网口转1串口,有的是一网口转4串口,最多的可以达到一转16串口(好像有的最多可以支持32串口)。如果该类模块做的足够完善,可以提供一个windows系统的设备驱动,安装后,在windows系统上就可以看到虚拟出的串口了。不过这样做,虽然简便了开发,但是性能有些问题,所以有的模块还支持直接用TCP或UDP进行连接,不同端口号对应不同的串口,这样编程可以达到一个比较高的数据吞吐量(我在上个公司用Moxa 5630模块开发隧道广告的数据通信时,就遇到类似问题,也就是最大限度地提高单位时间的数据吞吐量)。
现在我们就用.NET MF网络开发板做一个一网口转1串口示例演示。
简单期间,网络部分的代码,我们可以借用《Socket编程之服务端》中介绍的代码,串口部分的代码,我们可以参考《远程PLC读写控制》和《PC通过Modbus协议远程操控开发板》中的串口代码来进行改写。
核心代码如下:
public ProcessClientRequest(Socket clientSocket, Boolean asynchronously)
{
sp.Open();
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
//--
m_clientSocket = clientSocket;
if (asynchronously) // Spawn a new thread to handle the request.
new Thread(ProcessRequest).Start();
else ProcessRequest();
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{         
if (sp.BytesToRead > 0)
{
byte[] bytData = new byte[sp.BytesToRead];
sp.Read(bytData, 0, bytData.Length);
string s = new string(System.Text.UTF8Encoding.UTF8.GetChars(bytData));
System.TinyGUI.Graphics.Print("<<< " + s + "\r\n"); //显示串口接收的数据
m_clientSocket.Send(bytData);     //把串口接收的数据通过网络发送出去
}
}
private void ProcessRequest()
{
const Int32 c_microsecondsPerSecond = 1000000;
// 'using' ensures that the client's socket gets closed.
using (m_clientSocket)
{
while (true)
{
// Wait for the client request to start to arrive.
Byte[] buffer = new Byte[1024];
if (m_clientSocket.Poll(5 * c_microsecondsPerSecond, SelectMode.SelectRead))
{
// If 0 bytes in buffer, then the connection has been closed,
// reset, or terminated.
if (m_clientSocket.Available == 0) return;
// Read the first chunk of the request (we don't actually do
// anything with it).
Int32 bytesRead = m_clientSocket.Receive(buffer, m_clientSocket.Available, SocketFlags.None);
byte[] bytData = new byte[bytesRead];
Array.Copy(buffer, bytData, bytData.Length);
string s = new string(System.Text.UTF8Encoding.UTF8.GetChars(bytData));
System.TinyGUI.Graphics.Print(">>> "+s+"\r\n"); //显示网络接收的数据
//---------------------------
if (sp.IsOpen)
{
sp.Write(bytData, 0, bytData.Length); //通过串口发送出去
sp.Flush();
}
//---------------------------
}
}
}
把代码部署开发板后执行,我们直接用我们的TCP Client工具进行测试(下载地址如下:http://www.sky-walker.com.cn/MFRelease/Tools/YFTCPClient.rar)。
打开任意一个串口调试工具,设置波特率115200,准备和TCP Client进行通信。
(开发板有两个串口,其中COM1我们把它设为Debug口,所以不能使用了,我们用的是COM2口)。
测试过程图如下:
可以看出TCP Client工具所发出的信息,串口调试助手已经收到,同样,串口调试助手所发的数据,TCP Client也可以收到。
此时开发板运行状态图如下:
其实,我们比较“牛”一点的是一个网口可以转6个串口(其中一个连接Zigbee,一个是RS485,还带若干IO)的物联网网关模块(如下图),该系统基于STM32F207,正在调试过程中。
 
本文源码:http://www.sky-walker.com.cn/MFRelease/Sample/YFMFTCP2Serialport.rar
MF简介:http://blog.csdn.net/yefanqiu/article/details/5711770
官方网站:http://www.sky-walker.com.cn/
本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/657623,如需转载请自行联系原作者

【.Net MF网络开发板研究-06】以太网转串口相关推荐

  1. 【.Net MF网络开发板研究-01】IP地址设定及简单web演示

    早期推出的开发板并不具备网口,所以.NET Micro Framework很多基于网络的功能,便无从研究了,其实在物联网时代,具备网络功能才是王道. 新开发板除了具备以太网模块以外,还增加了USB H ...

  2. 【.Net MF网络开发板研究-03】获取雅虎天气(HttpClient示例)

    在上篇文章介绍了Http Server,通过PC上的IE浏览器(相当于Http client)来访问开发板上的Http服务.这次我们在网络开发板上实现Http Client,获取雅虎网站的天气信息,并 ...

  3. 【.Net MF网络开发板研究-04】Socket编程之服务端

    前几篇文章介绍了Http相关的应用,其实从技术角度而言,应该先介绍Socket编程,然后再介绍Http,毕竟Http是用Socket相关函数编程实现的. .NET Micro Framework的So ...

  4. MT7628学习笔记(8)——开发板联网(以太网和WIFI模式)

    设置网口模式命令: ethmode命令 网口状态 ethmode 查看网络模式命令 ethmode l 单网口0,LAN ethmode w 单网口0,WAN ethmode wllll 五网口,Po ...

  5. 物联网开发笔记(52)- 使用Micropython开发ESP32开发板之W5500以太网网络模块有线网络通信

    一.目的 这一节我们学习如何使用我们的ESP32开发板来进行有线网络通信. 二.环境 ESP32 + W5500以太网网络模块有线网络通信模块 + Thonny IDE + 几根杜邦线 接线方法: 网 ...

  6. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究(ADC)

    一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...

  7. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(DMA)

    一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...

  8. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(SPI flash)

    一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...

  9. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(printf)

    一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...

  10. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(RS485)

    一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...

最新文章

  1. 四图,读懂 BIO、NIO、AIO、多路复用 IO 的区别
  2. Zencart的首页php 301,Zencart 做了301重定向后不能登陆网站后台的解决方案
  3. 双目立体视觉匹配算法-----SAD匹配算法、BM算法、SGBM算法、GC算法
  4. 【转】项目面试-如何介绍自己的项…
  5. Spring整合JsonRpc
  6. 程序员在帖子发的问题,底下评论彻底演变成娱乐帖了……
  7. 华为云电脑.模式_云电脑还是云手机,为何阿里、华为都要做?
  8. k8s教程(pod篇)-容器获取pod信息(Downward API)
  9. python中pandas什么意思_python pandas 基础理解
  10. 为什么excel文件中的表不能删除?
  11. 岁月划过生命线(2016 年终总结 -季度之星)
  12. 【2D转换之盒子居中】
  13. 余三码的优点及其与8421码的对比
  14. 网络安全-网站后台的寻找+网页JS文件信息收集
  15. 艾美捷ProSci丨ProSci 40S核糖体蛋白S19重组蛋白介绍
  16. daocloud(道客daocloud)
  17. 2022年最新江西机动车签字授权人模拟试题及答案
  18. Elasticsearch 分片管理解析
  19. unity塔防游戏怪物转向_萌宠打怪物手游下载-萌宠打怪物官方版下载
  20. xp linux双系统引导修复工具下载,双系统引导修复工具下载

热门文章

  1. 推荐三款U盘烧写工具
  2. 华为认证、华三认证、思科认证考哪个好?
  3. 最全面SpringBoot教程-转自方志朋
  4. 计算机毕设选题可以选什么?计算机本科毕业设计选题2023年指南
  5. rn 视频播放组件react-native-video
  6. Word中字母上方标注特殊符号 完美解决
  7. deeping linux安装安卓,Deepin 安装Android-studio
  8. 文件传输工具WinSCP下载安装教程
  9. 【Multisim仿真】数字电路仿真16路往复流水灯
  10. 单片机原理与接口技术期末总复习