Advertisement

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)

还没有任何评论哟~