小弟最近写了个C#串口通讯软件,目前链接串口已无问题,但是不知道如何接收和输出HEX数据
以下是小弟的串口代码。。。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
namespace Data_query
{
public partial class Data_query : Form
{
SerialPort Port1 = new SerialPort();
private void Serial_Select()
{
string[] Ports = SerialPort.GetPortNames();
foreach (string Port in Ports)
{
Serial_Number.Items.Add(Port);
}
}
public Data_query()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
label.ForeColor = Color.Red;
Serial_Select();
Serial_Number.SelectedIndex = 0;
Serial_Baud.SelectedIndex = 0;
}
//打开关闭串口
private void Enter1_Click(object sender, EventArgs e)
{
if(Enter1.Text=="打开串口")
{
try
{
Port1.PortName = Serial_Number.SelectedItem.ToString();
Port1.BaudRate = Convert.ToInt32(Serial_Baud.SelectedItem);
Port1.DataBits = 8;
Port1.RtsEnable = true;
Port1.Open();
Port1.DiscardInBuffer();
Port1.DiscardOutBuffer();
Enter1.Text = "关闭串口";
Serial_Baud.Enabled = false;
Serial_Number.Enabled = false;
label.Text = "串口:" + Serial_Number.SelectedItem.ToString() + " 波特率:" + Serial_Baud.SelectedItem.ToString() + " 数据位:8 已建立链接";
label.ForeColor = Color.Blue;
}
catch
{
MessageBox.Show("目标串口无法打开,请重新尝试","错误信息",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
else if (Enter1.Text == "关闭串口")
{
Port1.DiscardInBuffer();
Port1.DiscardOutBuffer();
Port1.Close();
Enter1.Text = "打开串口";
Serial_Baud.Enabled = true;
Serial_Number.Enabled = true;
label.Text="串口状态 : 未链接 ";
label.ForeColor = Color.Red;
}
}
//刷新串口列表
private void Refurbish_Click(object sender, EventArgs e)
{
Serial_Number.Items.Clear();
Serial_Select();
this.Serial_Number.SelectedIndex = 0;
this.Serial_Baud.SelectedIndex = 0;
if (Enter1.Text == "关闭串口")
{
Port1.DiscardInBuffer();
Port1.DiscardOutBuffer();
Port1.Close();
Enter1.Text = "打开串口";
Serial_Baud.Enabled = true;
Serial_Number.Enabled = true;
}
label.Text = "串口状态 : 未链接 ";
label.ForeColor = Color.Red;
}
private void button1_Click(object sender, EventArgs e)
{
ThreadStart Thread1 = new ThreadStart(SentMEssage);
Thread thread = new Thread(Thread1);
thread.Start();
}
private void SentMEssage()
{
byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(data);
Port1.WriteLine(str);
}
private void button2_Click(object sender, EventArgs e)
{
ThreadStart Thread2 = new ThreadStart(GetMessage);
Thread thread = new Thread(Thread2);
thread.Start();
}
private void GetMessage()
{
byte[] data = Convert.FromBase64String(Port1.ReadLine());
textBox2.Text = Encoding.Unicode.GetString(data);
}
}
}