C# UDP、串口的数据接收与发送
发布时间
阅读量:
阅读量
UDP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace UDP
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
启动接受线程
IPAddress localIP = IPAddress.Parse("127.0.0.1");
IPEndPoint localIPEndPoint = new IPEndPoint(localIP, 8888);
uc = new UdpClient(localIPEndPoint);
//启动接受线程
Thread threadReceive = new Thread(ReceiveMessages);
threadReceive.IsBackground = true;
threadReceive.Start();
}
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);//设置目标的IP,这里的127.0.0.1是本地IP,8888为目标端口
UdpClient uc = new UdpClient();
private void ReceiveMessages()
{
IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
try
{
byte[] receiveBytes = uc.Receive(ref remoteIPEndPoint);
string message = Encoding.ASCII.GetString(receiveBytes, 0, receiveBytes.Length);
this.Dispatcher.Invoke(new Action(() => {
textBox.Text += message;
}));
}
catch
{
break;
}
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
UdpClient uc = new UdpClient();
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);//设置目标的IP,这里的127.0.0.1是本地IP,8888为目标端口
uc.Send(Encoding.ASCII.GetBytes("ZY"), Encoding.ASCII.GetBytes("ZY").Length, iep);
}
}
}
添加引用(串口部分):
using System.IO.Ports;
串口输出:
com = new SerialPort("com5");//设置发送端串口名
com.Open();//如无串口则会报错,可以下个虚拟串口
com.Write("123");//串口输出信息
串口接收:
com.DataReceived += new SerialDataReceivedEventHandler(com_DataReceived);//串口接收数据事件
void com_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//输入接收数据后的代码
}
如果串口发送byte数组16位进制码,可以用方法:
public static string byteToHexStr(byte[] bytes)
{
string returnStr = "";
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
returnStr += bytes[i].ToString("X2");
}
}
return returnStr;
}
转成字符串,再做判断。
全部评论 (0)
还没有任何评论哟~
