⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 欻口通信小软件
💻 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 + -