C# 监听串口数据并触发事件
来源:互联网 发布:单片机为什么需要复位 编辑:程序博客网 时间:2024/06/05 07:48
using System;using System.Text;using System.Net;using System.Net.Sockets;namespace HtTcp{ public delegate void ITCPAcsEvents_OnEventEventHandler(string _Type, string _ReturnValue); public class HtTcpAcs { public event ITCPAcsEvents_OnEventEventHandler OnEvent; public HtTcpAcs() { } public void HtTcpAcsx(string IpAddress,int IpPorts) { Socket serverSocket; IPEndPoint ephost = new IPEndPoint(IPAddress.Parse(IpAddress), IpPorts); serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); #region 发送接收 try { int counter = 0; string retrunValue = ""; string retrunType = ""; serverSocket.Connect(ephost); while (true) { //接收的消息 暂定获取1M数据 Byte[] recvBytes = new Byte[2048]; Int32 bytes = serverSocket.Receive(recvBytes, recvBytes.Length, SocketFlags.None); string msg = TcpDataHelp.ToHexString(recvBytes, recvBytes.Length).ToUpper(); //截取有效帧数据 int i = msg.IndexOf("3A") + 2; int j = msg.IndexOf("0D0A"); string strred = msg.Substring(i, j - i); string strxy = strred.Substring(0, strred.Length - 2); string strbd = strred.Substring(strred.Length - 2, 2); if (TcpValidate.CheckSumgz(strxy) == strbd) { //获取编码 string funCode = strxy.Substring(2, 2); //判断编码 区分数据解析函数 switch (funCode) { retrunValue = Convert.ToInt64(strxy.Substring(4, strxy.Length - 4), 16).ToString(); } if (OnEvent!=null) { OnEvent(funCode, retrunValue); } } //Thread.Sleep(100); } } catch (Exception ex) {
MessageBox.Show(<span style="font-family: Arial, Helvetica, sans-serif;">"连接/发送/接收过程中,发生了错误!\r\n"</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span>
} finally { serverSocket.Close(); } #endregion } //监听控制器 }}
0 0
- C# 监听串口数据并触发事件
- C#中串口接收数据触发事件
- C# Active控件,并触发javascript事件
- 事件工具:监听/触发
- 自动触发监听事件
- node 触发监听事件
- 【串口通信】--事件监听
- php事件与事件监听、事件触发
- C#实现串口监听
- C#串口监听
- c#监听串口
- Select下拉框动态获取数据,并触发事件
- C#中的事件触发
- C#触发事件
- C#触发事件
- C#中的触发事件
- C#中的触发事件
- c# 与java 相同实现 自定义事件的触发及监听
- libevent源码剖析-事件主循环
- Python安装库的时候出现Error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)
- 动态table 动态增加删除行
- QT程序调试(资源死锁问题)
- GridView在ListVi中不能完全显示或只显示一行的解决方法
- C# 监听串口数据并触发事件
- 字符串匹配的Boyer-Moore算法
- 插入数据之后获得表唯一主键
- 如何区分“invoice代码”和“invoice号码”?
- Jetson TK1 + ROS Rviz出现的问题:segmentation fault 及解决方案
- 命令行工具解析Crash文件,dSYM文件进行符号化
- nginx upstream
- leetcode之链表转换成平衡二叉树
- 字符串与base64互转