基于TCP/IP实现串口到网络的通讯转换 | 您所在的位置:网站首页 › 读取网页数据转换成串口数据 › 基于TCP/IP实现串口到网络的通讯转换 |
工作模式
测试工具: USR-M0_V2.2.5.8 基础设置:模块静态IP 设置成服务器IP,HTTP服务端口 设置成4001,网关 设置成当前连接的网关IP,勾选 Reset、Link、RFC2217。如下图所示: 端口设置:校验/数据/停止 设置成NONE/8/1,串口波特率 设置成9600,模块工作方式 设置成TCP Server,本地端口 设置成21018,远程端口 设置成8234。如下图所示: 测试工具: SerialPortUtility 串口设置:串口选择TCP/UDP,波特率选择9600,Mode选择TCP Client,Dest IP 输入192.168.5.19,Dest Port 输入21018。如下图所示: 首先需要声明一个InitializeTcpClient方法,用来接收服务器IP和端口号 这里需要引用 SuperSocket.ClientEngine.dll 和 SuperSocket.ProtoBase.dll private AsyncTcpSession InitializeTcpClient(string serverIP, int port) { client = new AsyncTcpSession(); // 连接断开事件 client.Closed += client_Closed; // 收到服务器数据事件 client.DataReceived += client_DataReceived; // 连接到服务器事件 client.Connected += client_Connected; // 发生错误的处理 client.Error += client_Error; IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(serverIP), port); client.Connect(endPoint); return client; } private void client_Closed(object sender, EventArgs e) { Console.WriteLine("连接断开"); } private void client_DataReceived(object sender, DataEventArgs e) { string deviceData = Encoding.Default.GetString(e.Data); ReadWeight(deviceData); } private void client_Connected(object sender, EventArgs e) { Console.WriteLine("连接成功"); } private void client_Error(object sender, SuperSocket.ClientEngine.ErrorEventArgs e) { Console.WriteLine(e.Exception.Message); }将deviceData字符串转换为字符数组,进行拆分替换后,最终拿到称量值数据 public string weight = ""; private string ReadWeight(string deviceData) { try { string[] deviceStr = deviceData.Split(" ".ToCharArray()); if (deviceStr.Length > 0) { string[] weightStr = deviceStr[1].Split("\r".ToCharArray()); weight = weightStr[0].ToUpper().Trim().Replace("SS", "").Replace("SD", "").Replace("g", "").Replace(Environment.NewLine, "").Substring(0, 6); } return weight; } catch (Exception ex) { return ex.ToString(); } } 4.最终效果当 PWR、WORK、LINK、TX 指示灯亮起,表示连接成功 ME,ML,MS天平和电脑通讯指导文件 USR-TCP232-306 产品使用手册 请作者喝杯咖啡吧如果本文对你有帮助的话,可以请作者喝杯咖啡~ 微信支付宝![]() ![]() |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |