📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Collections;
using JustinIO; //引用的累
namespace shiyan
{
public partial class Form1 : Form
{
//---------------建立串行口句柄---------------
private SerialPort ComPort = new SerialPort();
//---------------引用转换类文件---------------
HexCon FroCon = new HexCon();
//--------------- 变量定义 ---------------
byte[] Revbuf =new byte [1024];
//发送和接收缓冲区
string sRevData = "";
string[] sSndData = new string[0];
//协议设定引用
JustinIO.MobP PMob = new MobP();
//----------------------------------------------------
public Form1()
{
InitializeComponent();
}
//----------------------------------------------------
private void Form1_Load(object sender, EventArgs e)
{
InitComm(); //初始化COM口
}
//----------------------------------------------------
private void button9_Click(object sender, EventArgs e)
{
ComPort.Close();
Application.Exit();
}
//----------------打开串口/关闭串口设置---------------
private void COMbutt_Click(object sender, EventArgs e)
{
try
{
if (COMbutt.Text == "打开串口")
{
ComPort.Close();
ComPort.PortName = ProtCOM.Text;
ComPort.Open();
Dis1.Text = "OK";
Dis1.Visible = true;
COMbutt.Text = "关闭串口";
ProtCOM.Enabled = false;
BaudCOM.Enabled = false;
butSend.Enabled = true;
textBox1.Text = "7E06008000175602010106DB000000000100050000000001B305580D0A00007F";
}
else
{
ComPort.Close();
COMbutt.Text = "打开串口";
Dis1.Visible = false;
ProtCOM.Enabled = true;
BaudCOM.Enabled = true;
butSend.Enabled = false;
}
}
catch (Exception Exp)
{
MessageBox.Show("错误:" + Exp.Message);
Dis1.Text = "ERR";
Dis1.Visible = true;
butSend.Enabled = false;
}
}
//----------------初始化查询电脑有多少COM口----------------
private void InitComm()
{
ComPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(ComPort_DataReceived);
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
ProtCOM.Items.Add(port);
if (!ComPort.IsOpen)
{
ComPort.PortName = port;
try
{
ComPort.Open();
ProtCOM.SelectedText = port;
}
catch (Exception e)
{
MessageBox.Show("错误:" + e.Message);
//textBox2.AppendText(e.Message+ "\n");
}
}
}
if (ComPort.IsOpen)
{
Dis1.Text = "OK";
}
ComPort.BaudRate = Convert.ToInt32(BaudCOM.SelectedItem.ToString());
ComPort.BaudRate = Convert.ToInt32(BaudCOM.Text);
ComPort.RtsEnable = true;
ComPort.DtrEnable = true;
ProtCOM.Sorted = true;
}
//-------------------数据发送按键--------------------
private void butSend_Click(object sender, EventArgs e)
{
label9.Text = "";
textBox2.Text = "";
sRevData = "";
byte[] SendUART=FroCon .HexStringToByteArray (textBox1.Text); //字符串转换16进制字符串数组形式
ComPort.Write(SendUART, 0, SendUART.Length); //发送数组
}
//------------------中断接收处理---------------------
void ComPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//接收数据包
int bytes = ComPort.BytesToRead;
byte[] buffer = new byte[bytes];
ComPort.Read(buffer, 0, bytes);
sRevData = sRevData + FroCon .ByteArrayToHexString (buffer);
textBox2.Invoke(new EventHandler(delegate { DataChuLi(); })); //运用委托处理数据1
}
//定义数据接收处理委托 1
private void DataChuLi()
{
textBox2.Text = sRevData ;
SeJs.Text = sRevData.Length.ToString () ;
textBox2.Invoke(new EventHandler(delegate { DataJX(); })); //运用委托处理数据2
}
//定义数据接收处理委托 2
private void DataJX()
{
int Stars;
int Stend;
if (sRevData.Length > 10)
{ //开始标志
Stars = int.Parse(sRevData.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
//结束标志
Stend = int.Parse(sRevData.Substring(sRevData.Length -6, 6), System.Globalization.NumberStyles.HexNumber);
if ((Stars == PMob.ComData.sHead) && (Stend == PMob.ComData.sCrc +PMob.ComData.sEnd))
{
label9.Text = "协议头尾校验成功";
//填写用户处理代码
}
}
}
//清除接收显示区
private void ClearRev_Click(object sender, EventArgs e)
{
textBox2.Text = "";
sRevData = "";
}
//清数据接收缓冲区
private void Clear_Buff(byte [] buf,int intl)
{
for (int i = 0; i < intl ; i++)
{
buf[i] = 0;
}
}
//清除计数区
private void button1_Click(object sender, EventArgs e)
{
SeJs.Text = "0";
ReJs.Text = "0";
}
//清除发射显示区
private void ClearSend_Click(object sender, EventArgs e)
{
textBox1.Text = "";
sRevData = "";
}
private void ProtCOM_SelectedIndexChanged(object sender, EventArgs e)
{
ComPort.Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -