做网站自己买域名,自媒体怎么申请注册,工信部信息备案网站首页,编辑公众号Winform上位机TCP客户端/服务端、串口通信
背景
日常练习#xff0c;着急换工作#xff0c;心态都快乱了。
工具
串口调试助手
网络调试助手
代码
客户端
using Microsoft.VisualBasic.Logging;
using System.Net.Sockets;
using System.Text;namespace TcpClientDem…Winform上位机TCP客户端/服务端、串口通信
背景
日常练习着急换工作心态都快乱了。
工具
串口调试助手
网络调试助手
代码
客户端
using Microsoft.VisualBasic.Logging;
using System.Net.Sockets;
using System.Text;namespace TcpClientDemo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}TcpClient tcpClient new TcpClient();/// summary/// 连接服务端/// /summary/// param namesender/param/// param namee/paramprivate void connect_Click(object sender, EventArgs e){if (!tcpClient.Connected){tcpClient.Connect(IP.Text, int.Parse(PORT.Text));//开启线程一直读取数据Task.Run(() {while (true){NetworkStream networkStream tcpClient.GetStream();if (networkStream ! null){byte[] datas new byte[1024];networkStream.Read(datas, 0, datas.Length);this.BeginInvoke(new Action(() {log.Text Encoding.UTF8.GetString(datas);}));}}});}}/// summary/// 发送数据/// /summary/// param namesender/param/// param namee/paramprivate void send_Click(object sender, EventArgs e){NetworkStream networkStream tcpClient.GetStream();if (networkStream ! null){byte[] datas Encoding.UTF8.GetBytes(log.Text);networkStream.Write(datas, 0, datas.Length);}}private void Form1_Load(object sender, EventArgs e){IP.Text 127.0.0.1;PORT.Text 8899;}}
}服务端
using Microsoft.VisualBasic.Logging;
using System.Net;
using System.Net.Sockets;
using System.Text;namespace TcpSeverDemo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//监听类TcpListener listener null;//客户端TcpClient handler null;NetworkStream stream null;bool isrun false;/// summary/// 打开/// /summary/// param namesender/param/// param namee/paramprivate void openServer_Click(object sender, EventArgs e){if (IP.Text.Trim().Length 9 Port.Text.Trim().Length 0){MessageBox.Show(IP和端口无效);return;}listener new TcpListener(IPAddress.Parse(IP.Text), int.Parse(Port.Text));listener.Start();isrun true;}private void send_Click(object sender, EventArgs e){if (stream ! null){byte[] buffer Encoding.UTF8.GetBytes(log.Text);//load已经连接,可以直接发送stream.Write(buffer, 0, buffer.Length);}}private void Form1_Load(object sender, EventArgs e){IP.Text 127.0.0.1;Port.Text 9800;try{Task.Run(() {while (true){if (isrun listener ! null){//用来接收handler listener.AcceptTcpClient();//创建网络流 已经连接stream handler.GetStream();byte[] buffer new byte[1024];if (stream ! null){stream.Read(buffer, 0, buffer.Length);this.BeginInvoke(new Action(() {log.Text Encoding.UTF8.GetString(buffer);}));}}Thread.Sleep(50);}});}catch (Exception){}}/// summary/// 关闭/// /summary/// param namesender/param/// param namee/paramprivate void Form1_FormClosing(object sender, FormClosingEventArgs e){isrun false;if (listener ! null){listener.Stop();}}}
}
串口
using Microsoft.VisualBasic.Logging;
using System.Data;
using System.IO.Ports;
using System.Text;namespace PortDemo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}SerialPort serialPort new SerialPort();private void open_Click(object sender, EventArgs e){try{if (!serialPort.IsOpen){serialPort.Open();serialPort.DataReceived SerialPort_DataReceived;}}catch (Exception ex){log.Text ex.Message;}}private void read_Click(object sender, EventArgs e){}private void write_Click(object sender, EventArgs e){serialPort.Write(log.Text);}private void Form1_Load(object sender, EventArgs e){//导入一些基础参数Liststring ports SerialPort.GetPortNames().ToList();foreach (var item in ports){port.Items.Add(item);}Listint baus new Listint { 9600, 115200 };foreach (var item in baus){bau.Items.Add(item);}Listint databits new Listint { 6, 7, 8 };foreach (var item in databits){databit.Items.Add(item);}Liststring cks new Liststring { None };foreach (var item in cks){check.Items.Add(item);}Liststring stops new Liststring { One };foreach (var item in stops){stop.Items.Add(item);}try{serialPort.PortName port.Text;serialPort.BaudRate int.Parse(bau.Text);serialPort.Parity Parity.None;serialPort.DataBits int.Parse(databit.Text);serialPort.StopBits StopBits.One;}catch (Exception ex){log.Text ex.Message;}}private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e){byte[] bytes new byte[1024];try{serialPort.Read(bytes, 0, bytes.Length);string data Encoding.UTF8.GetString(bytes);this.Invoke(() {log.Text data;});}catch (Exception ex){log.Text ex.Message;}}}
} Socket通信
using System;
using System.Net;
using System.Net.Sockets;class Program
{static void Main(){Socket listener new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);listener.Bind(new IPEndPoint(IPAddress.Any, 13000));listener.Listen(10);while (true){Console.WriteLine(Waiting for a connection...);Socket handler listener.Accept();Console.WriteLine(Connected!);// 处理连接HandleClient(handler);}}private static void HandleClient(Socket client){NetworkStream stream new NetworkStream(client);byte[] data new byte[256];while (true){int bytes stream.Read(data, 0, data.Length);if (bytes 0)break;string text Encoding.ASCII.GetString(data, 0, bytes);Console.WriteLine(Received: {0}, text);}client.Close();}
}
最简单的调用之后会补充实际细节。这种基本不需要自己手动造轮子除非重新开发基本都是封装好的会调用就可以需要自己写的时候网上找找一堆。