当前位置:首页 > .NET > C#

编写了一个简略的串口映射工具

优良自学吧提供编写了一个简略的串口映射工具,编写了一个简单的串口映射工具编写了一个简单的串口映射工具,方便调试串口 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using S

编写了一个简单的串口映射工具

编写了一个简单的串口映射工具,方便调试串口

代码:

编写了一个简略的串口映射工具
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ComMax
{
    public partial class Form1 : Form
    {
        private Socket m_ClientSocket;
        private Socket m_ServerSocket;
        private Socket m_Client;
        private SerialPort m_ClientPort;
        private SerialPort m_ServerPort;
        private object m_lock = new object();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Environment.Exit(0);
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

        public void m_ClientPort_DataReceived(object obj, SerialDataReceivedEventArgs args)
        {
            if (m_ClientPort.BytesToRead > 0)
            {
                Thread.Sleep(50);
                byte[] bArr = new byte[m_ClientPort.BytesToRead];
                m_ClientPort.Read(bArr, 0, bArr.Length);
                m_ClientSocket.Send(ComData.pack(bArr));
            }
        }

        public void m_ServerPort_DataReceived(object obj, SerialDataReceivedEventArgs args)
        {
            if (m_ServerPort.BytesToRead > 0)
            {
                Thread.Sleep(50);
                byte[] bArr = new byte[m_ServerPort.BytesToRead];
                m_ServerPort.Read(bArr, 0, bArr.Length);
                m_Client.Send(ComData.pack(bArr));
            }
        }

        private void btnServer_Click(object sender, EventArgs e)
        {
            btnServer.Enabled = false;
            btnClient.Enabled = false;

            m_ServerPort = new SerialPort(txtServerCom.Text.Trim(), 9600, Parity.None, 8, StopBits.One);
            m_ServerPort.ReadBufferSize = 1024;
            m_ServerPort.WriteBufferSize = 1024;
            m_ServerPort.DataReceived += new SerialDataReceivedEventHandler(m_ServerPort_DataReceived);
            m_ServerPort.Open();

            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 3001);
            m_ServerSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            m_ServerSocket.Bind(ipep);
            m_ServerSocket.Listen(10);
            new Thread(new ThreadStart(delegate()
            {
                while (true)
                {
                    m_Client = m_ServerSocket.Accept();

                    new Thread(new ThreadStart(delegate()
                    {
                        while (true)
                        {
                            byte[] inBuffer = new byte[m_Client.ReceiveBufferSize];
                            m_Client.Receive(inBuffer, m_Client.ReceiveBufferSize, SocketFlags.None);//如果接收的消息为空 阻塞 当前循环 
                            byte[] data = ComData.unpack(inBuffer);
                            m_ServerPort.Write(data, 0, data.Length);
                        }
                    })).Start();
                }
            })).Start();
        }

        private void btnClient_Click(object sender, EventArgs e)
        {
            btnServer.Enabled = false;
            btnClient.Enabled = false;

            m_ClientPort = new SerialPort(txtClientCom.Text.Trim(), 9600, Parity.None, 8, StopBits.One);
            m_ClientPort.ReadBufferSize = 1024;
            m_ClientPort.WriteBufferSize = 1024;
            m_ClientPort.DataReceived += new SerialDataReceivedEventHandler(m_ClientPort_DataReceived);
            m_ClientPort.Open();

            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(txtIP.Text.Trim()), 3001);
            m_ClientSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            m_ClientSocket.Connect(ipep);

            new Thread(new ThreadStart(delegate()
            {
                while (true)
                {
                    byte[] inBuffer = new byte[m_ClientSocket.ReceiveBufferSize];
                    m_ClientSocket.Receive(inBuffer, m_ClientSocket.ReceiveBufferSize, SocketFlags.None);//如果接收的消息为空 阻塞 当前循环 
                    byte[] data = ComData.unpack(inBuffer);
                    m_ClientPort.Write(data, 0, data.Length);
                }
            })).Start();
        }
    }
}
View Code

 


(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢