在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → usb转串口 读取扫描枪扫描信息

usb转串口 读取扫描枪扫描信息

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.58M
  • 下载次数:55
  • 浏览次数:490
  • 发布时间:2019-06-15
  • 实例类别:C#语言基础
  • 发 布 人:乖乖宝贝
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 扫描 串口 usb s 扫描枪

实例介绍

【实例简介】

usb转串口,扫描枪串口分析工具

读取扫描枪扫描信息

【实例截图】

from clipboard

【核心代码】

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;

namespace 串口调试助手
{
    public partial class Form1 : Form
    {

        long Rxd = 0, Txd = 0;
        bool StopShowReceived = false;
        bool ShowInHex = false;
        bool ShowInChar = true;
        bool ShowInBin = false;
        bool SendHEX = false;
        bool SendChar = true;
        bool SendBin = false;
        bool AutoClear = false;
        long BufferSize = 102400;
        StringBuilder ReceivePool;
        StringBuilder SendPool;

        /*
        private StringBuilder Convert2ASCII(int BaseForm)
        {
            StringBuilder Result;
            String[] Content;
            
            if (ShowInHex)
                Content = TXB_Send.Text.TrimEnd().Split(' ');
            else
            {
                Content = TXB_Send.Text.TrimEnd().Replace("    ",",").Replace(" ","").Split(',');
            }
            Result = new StringBuilder(Content.Length);
            if (Content.Length == 1 && Content[0]=="")
                return Result;

            for (Int64 Index = 0; Index < Content.Length;Index   )
            {
                if(Content[Index]!=" ")
                    Result.Append(Convert.ToChar(Convert.ToByte(Content[Index], BaseForm)));
            }
            return Result;
        }

        private StringBuilder Convert2BIN(int BaseForm)
        {
            StringBuilder Result;
            String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
            int High, Low;

            if (TXB_Send.Text.TrimEnd() == "")
                return new StringBuilder();

            if (BaseForm==16)
            {
                String[] Content = TXB_Send.Text.TrimEnd().Split(' ');
                String temp;
                Result = new StringBuilder(Content.Length);
                for (Int64 Index = 0; Index < Content.Length;Index   )
                {
                    if(Content[Index]!=" ")
                    {
                        High = Convert.ToByte(Content[Index], BaseForm) / 16;
                        Low = Convert.ToByte(Content[Index], BaseForm) % 16;
                        temp = String.Format("{0} {1}    ", Hex2BinTable[High], Hex2BinTable[Low]);
                        Result.Append(temp);
                    }
                }
            }
            else
            {
                char []TempCharArray=TXB_Send.Text.ToCharArray();
                String temp;
                Result = new StringBuilder(TempCharArray.Length);
                foreach (char TempChar in TempCharArray)
                {
                    High = Convert.ToInt16(TempChar) / 16;
                    Low = Convert.ToInt16(TempChar) % 16;
                    temp = String.Format("{0} {1}    ", Hex2BinTable[High], Hex2BinTable[Low]);
                    Result.Append(temp);
                }
            }
            return Result;
        }

        private StringBuilder Convert2HEX(Int16 BaseForm)
        {
            StringBuilder Result;
            if(BaseForm==2)
            {
                String[] Content = TXB_Send.Text.TrimEnd().Replace("    ", ",").Replace(" ", "").Split(',');
                if(Content.Length==1 && Content[0]=="")
                    return new StringBuilder();
                Result = new StringBuilder(Content.Length);
                foreach (String TempString in Content)
                {
                    if(TempString!="")
                    {
                        Result.Append(String.Format("{0:X2} ", Convert.ToByte(TempString, 2)));
                    }
                }
            }
            else
            {
                if (TXB_Send.Text.Length == 0)
                    return new StringBuilder();
                char[] TempCharArray = TXB_Send.Text.ToCharArray();
                Result=new StringBuilder(TempCharArray.Length);
                foreach(char TempChar in TempCharArray)
                {
                    Result.Append(string.Format("{0:X2} ", Convert.ToByte(TempChar)));
                }
            }
            return Result;
        }
        */

        private StringBuilder ConvertReceiveTo(int BaseForm)
        {
            StringBuilder Result = new StringBuilder(ReceivePool.Length / 3);
            String[] ContentString = ReceivePool.ToString().Split(' ');
            foreach (String TempString in ContentString)
            {
                if(BaseForm==0)//要转换为字符串
                {
                    if (TempString != " " && TempString != "")
                    {
                        Result.Append(Convert.ToChar(Convert.ToByte(TempString, 16)));
                    }
                }
                if(BaseForm==16)
                {
                    Result = ReceivePool;
                }
                if(BaseForm==2)
                {
                    String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
                    int High, Low;
                    String temp;
                    if (TempString != " " && TempString != "")
                    {
                        High = Convert.ToByte(TempString, 16) / 16;
                        Low = Convert.ToByte(TempString, 16) % 16;
                        temp = String.Format("{0} {1}    ", Hex2BinTable[High], Hex2BinTable[Low]);
                        Result.Append(temp);
                    }
                }
            }
            return Result;
        }

        private StringBuilder ConvertSendTo(int BaseForm)
        {
            StringBuilder Result = new StringBuilder(ReceivePool.Length / 3);
            String[] ContentString = ReceivePool.ToString().Split(' ');
            foreach (String TempString in ContentString)
            {
                if (BaseForm == 0)//要转换为字符串
                {
                    if (TempString != " " && TempString != "")
                    {
                        Result.Append(Convert.ToChar(Convert.ToByte(TempString, 16)));
                    }
                }
                if (BaseForm == 16)
                {
                    Result = ReceivePool;
                }
                if (BaseForm == 2)
                {
                    String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
                    int High, Low;
                    String temp;
                    if (TempString != " " && TempString != "")
                    {
                        High = Convert.ToByte(TempString, 16) / 16;
                        Low = Convert.ToByte(TempString, 16) % 16;
                        temp = String.Format("{0} {1}    ", Hex2BinTable[High], Hex2BinTable[Low]);
                        Result.Append(temp);
                    }
                }
            }
            return Result;
        }

        public Form1()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls=false;
            ReceivePool = new StringBuilder();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
            CBB_BaudRate.SelectedIndex = 3;
            CBB_DataBits.SelectedIndex = 0;
            CBB_PARATY.SelectedIndex = 0;
            CBB_StopBits.SelectedIndex = 0;
            for (int i = 1; i <= 255;i   )
            {
                CBB_Port.Items.Add("COM"   i.ToString());
            }
            CBB_Port.SelectedIndex = 0;
            this.Size = new Size(402, 467);
        }

        private void BRN_Open_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen==false)
            {
                try
                {
                    serialPort1.BaudRate = Convert.ToInt32(CBB_BaudRate.Text);
                    serialPort1.PortName = CBB_Port.Text;
                    if (CBB_PARATY.SelectedIndex == 0)
                        serialPort1.Parity = System.IO.Ports.Parity.None;
                    else if (CBB_PARATY.SelectedIndex == 1)
                        serialPort1.Parity = System.IO.Ports.Parity.Odd;
                    else if (CBB_PARATY.SelectedIndex == 2)
                        serialPort1.Parity = System.IO.Ports.Parity.Even;
                    serialPort1.DataBits = Convert.ToInt16(CBB_DataBits.Text);
                    if (CBB_StopBits.SelectedIndex == 0)
                        serialPort1.StopBits = System.IO.Ports.StopBits.One;
                    else
                        serialPort1.StopBits = System.IO.Ports.StopBits.Two;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("打开端口出错,原因是"   ex.Message.ToString());
                    return;
                }


                try
                {
                    serialPort1.Open();
                    LBL_PortState.Text = CBB_Port.SelectedItem.ToString()   "已打开";
                    PCB_PortState.BackColor = Color.Red;
                    BTN_Open.Text = "关闭";
                    CBB_BaudRate.Enabled = false;
                    CBB_Port.Enabled = false;
                    CBB_DataBits.Enabled = false;
                    CBB_PARATY.Enabled = false;
                    CBB_StopBits.Enabled = false;
                }
                catch (System.Exception ex)
                {
                    LBL_PortState.Text = "端口关闭";
                    PCB_PortState.BackColor = Color.Gray;
                    CBB_BaudRate.Enabled = true;
                    CBB_Port.Enabled = true;
                    CBB_DataBits.Enabled = true;
                    CBB_PARATY.Enabled = true;
                    CBB_StopBits.Enabled = true;
                    MessageBox.Show("端口无法打开,可能是不存在或被占用。");
                    return;
                }
            }
            else
            {
                serialPort1.DiscardInBuffer();
                serialPort1.Close();
                BTN_Open.Text = "打开";
                LBL_PortState.Text = "端口关闭";
                PCB_PortState.BackColor = Color.Gray;
                CBB_BaudRate.Enabled = true;
                CBB_Port.Enabled = true;
                CBB_DataBits.Enabled = true;
                CBB_PARATY.Enabled = true;
                CBB_StopBits.Enabled = true;
            }
        }

        private void BTN_Clear_Click(object sender, EventArgs e)
        {
            TXB_Receive.Clear();
            ReceivePool.Remove(0, ReceivePool.Length);
        }

        private void CKB_Stop_CheckedChanged(object sender, EventArgs e)
        {
            StopShowReceived = CKB_Stop.Checked;
        }

        private void CKB_HEX_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void BTN_Send_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == false)
            {
                MessageBox.Show("串口没有打开。");
                return;
            }
            if (SendChar == true)
            {
                try
                {
                    serialPort1.Write(TXB_Send.Text);
                    Txd  = TXB_Send.Text.Length;
                    LBL_TXD.Text = "发送: "   Txd.ToString()   "字节";
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
                    return;
                }
                
            }
            else if(SendHEX==true)
            {
                
                String TempData = TXB_Send.Text;
                bool IlligalChar = false;
                while (TempData.IndexOf("  ") != -1)
                    TempData = TempData.Replace("  ", " ");
                string[] SendBuffer = TempData.TrimStart().TrimEnd().Split(' ');
                Byte[] B=new Byte[SendBuffer.Length];
                int Count = 0;
                try
                {
                    foreach (string temp in SendBuffer)
                    {
                        if(temp!=" ")
                        {
                            if (temp.Length <= 2)
                            {
                                B[Count] = Convert.ToByte(temp, 16);
                                Count  ;
                            }
                            else
                                IlligalChar = true;
                        }
                    }
                
                    serialPort1.Write(B, 0, Count);
                    Txd  = Count;
                    LBL_TXD.Text = "发送: "   Txd.ToString()   "字节";
                    if (IlligalChar == true)
                    {
                        MessageBox.Show("输入中包含1字节数据无法表示的内容。\r\n错误数据已经被丢弃,但其它数据仍然被发送。", "包含错误数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
                    return;
                }
                
            }
            else if(SendBin==true)
            {
                String TempData = TXB_Send.Text;
                bool IlligalChar = false;
                while (TempData.IndexOf("  ") != -1)
                    TempData = TempData.Replace("  ", " ");
                string[] SendBuffer = TempData.TrimStart().TrimEnd().Split(' ');
                Byte[] B = new Byte[SendBuffer.Length];
                int Count = 0;
                try
                {
                    foreach (string temp in SendBuffer)
                    {
                        if (temp != " ")
                        {
                            if (temp.Length <= 8)
                            {
                                B[Count] = Convert.ToByte(temp, 2);
                                Count  ;
                            }
                            else
                                IlligalChar = true;
                        }
                    }

                    serialPort1.Write(B, 0, Count);
                    Txd  = Count;
                    LBL_TXD.Text = "发送: "   Txd.ToString()   "字节";
                    if(IlligalChar==true)
                    {
                        MessageBox.Show("输入中包含1字节数据无法表示的内容。\r\n错误数据已经被丢弃,但其它数据仍然被发送。", "包含错误数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
                    return;
                }
            }
        }

        long BufferCount = 0;
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            
            {
                int Count=serialPort1.BytesToRead;
                byte[] Buffer = new byte[Count];
                StringBuilder SB = new StringBuilder();

                BufferCount  = Count;
                Rxd  = Count;
                if(AutoClear==true)
                {
                    if (BufferCount >= BufferSize || ReceivePool.Length >= 2147483647)
                    {
                        TXB_Receive.Clear();
                        ReceivePool.Remove(0, ReceivePool.Length);
                        BufferCount = 0;
                    }
                }

                
                try
                {
                    serialPort1.Read(Buffer, 0, Count);
                    foreach(Byte TempByte in Buffer)
                    {
                        ReceivePool.Append(String.Format("{0:X2}", TempByte));
                        ReceivePool.Append(" ");
                    }

                    if (StopShowReceived == true)
                    {
                        LBL_RXD.Text = "接收: "   Rxd.ToString()   "字节";
                        return;
                    }

                    if (ShowInChar == true)//字符方式显示
                    {
                        
                        foreach (Byte TempByte in Buffer)
                        {
                            //if (TempByte == 13)
                              //  continue;
                            SB.Append(Convert.ToChar(TempByte));
                        }

                        TXB_Receive.AppendText(SB.ToString());
                        
                        LBL_RXD.Text = "接收: "   Rxd.ToString()   "字节";
                    }
                    else if (ShowInHex == true)//十六进制显示
                    {
                        for (int i = 0; i < Count; i  )
                        {
                            String temp = String.Format("{0:X2} ", Buffer[i]);
                            TXB_Receive.AppendText(temp);
                        }
                        LBL_RXD.Text = "接收: "   Rxd.ToString()   "字节";
                    }
                    else if (ShowInBin == true)//二进制显示
                    {
                        for (int i = 0; i < Count; i  )
                        {
                            String[] Hex2BinTable = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" };
                            int High, Low;
                            String temp;
                            High = Buffer[i] / 16;
                            Low = Buffer[i] % 16;

                            temp = String.Format("{0} {1}    ", Hex2BinTable[High], Hex2BinTable[Low]);
                            TXB_Receive.AppendText(temp);
                        }
                        LBL_RXD.Text = "接收: "   Rxd.ToString()   "字节";
                    }
                    //Application.DoEvents();
                    //TXB_Receive.ScrollToCaret();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("数据接收时发生错误,原因是"   ex.Message.ToString());
                    return;
                }
                
            }
        }

        private void 发送区ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TXB_Send.Clear();
        }

        private void 接收区ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TXB_Receive.Clear();
        }

        private void CKB_Auto_CheckedChanged(object sender, EventArgs e)
        {
            if(CKB_Auto.Checked==true)
            {
                timer1.Interval = Convert.ToInt16(TXB_AutoFre.Text);
                timer1.Start();
                timer1.Enabled = true;
                label3.Enabled = true;
                label4.Enabled = true;
                BTN_AutoSendFreOK.Enabled = true;
                TXB_AutoFre.Enabled = true;
            }
            else
            {
                timer1.Stop();
                timer1.Enabled = false;
                label3.Enabled = false;
                label4.Enabled = false;
                BTN_AutoSendFreOK.Enabled = false;
                TXB_AutoFre.Enabled = false;
            }
            
        }

        private void BTN_AutoSendFreOK_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            timer1.Interval = Convert.ToInt16(TXB_AutoFre.Text);
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == false)
            {
                timer1.Enabled = false;
                CKB_Auto.Checked = false;
                MessageBox.Show("串口没有打开。");
                return;
            }
            if (SendChar == true)
            {
                serialPort1.Write(TXB_Send.Text);
                Txd  = TXB_Send.Text.Length;
                LBL_TXD.Text = "发送: "   Txd.ToString()   "字节";
            }
            else if (SendHEX == true)
            {
                string[] SendBuffer = TXB_Send.Text.Split(' ');
                Byte[] B = new Byte[SendBuffer.Length];
                int Count = 0;
                try
                {
                    foreach (string temp in SendBuffer)
                    {
                        B[Count] = Convert.ToByte(temp, 16);
                        Count  ;
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("输入中包含非法字符。"   ex.Message);
                    return;
                }
                try
                {
                    serialPort1.Write(B, 0, Count);
                    Txd  = Count;
                    LBL_TXD.Text = "发送: "   Txd.ToString()   "字节";
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
                    return;
                }
            }
            else if (SendBin == true)
            {
                string[] SendBuffer = TXB_Send.Text.Split(' ');
                Byte[] B = new Byte[SendBuffer.Length];
                int Count = 0;
                try
                {
                    foreach (string temp in SendBuffer)
                    {
                        B[Count] = Convert.ToByte(temp, 2);
                        Count  ;
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("输入中包含非法字符。\r\n"   ex.Message);
                    return;
                }
                try
                {
                    serialPort1.Write(B, 0, Count);
                    Txd  = Count;
                    LBL_TXD.Text = "发送: "   Txd.ToString()   "字节";
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("发送出现错误,请尝试重新发送。如果错误仍然存在,请关闭程序后重新启动串口调试助手。");
                    return;
                }
                
            }
        }

        private void toolStripSplitButton1_ButtonClick(object sender, EventArgs e)
        {
            Rxd = 0;
            Txd = 0;
            LBL_TXD.Text = "发送: 0字节";
            LBL_RXD.Text = "接收: 0字节";
        }

        private void 统计计数ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Rxd = 0;
            Txd = 0;
            LBL_TXD.Text = "发送: 0字节";
            LBL_RXD.Text = "接收: 0字节";
        }

        private void CKB_HEX_CheckedChanged_1(object sender, EventArgs e)
        {
            if (RDB_HEX.Checked == false)
                return;
            StringBuilder SB = new StringBuilder();
            /*
            if (ShowInChar)
                SB = ConvertReceiveTo(0);
            else
                SB = ConvertReceiveTo(2);
             */

            SB = ConvertReceiveTo(16);
            TXB_Receive.Clear();
            TXB_Receive.Text = SB.ToString();
            ShowInHex = RDB_HEX.Checked;
            ShowInChar = !ShowInHex;
            ShowInBin = !ShowInHex;
        }

        private void RDB_Char_CheckedChanged(object sender, EventArgs e)
        {
            if (RDB_Char.Checked == false)
                return;
            StringBuilder SB = new StringBuilder();
            /*
            if (ShowInHex)
                SB = ConvertReceiveTo(16);
            else
                SB = ConvertReceiveTo(2);*/
            SB = ConvertReceiveTo(0);
            TXB_Receive.Clear();
            TXB_Receive.Text = SB.ToString();
            ShowInChar = RDB_Char.Checked;
            ShowInHex = !ShowInChar;
            ShowInBin = !ShowInChar;
            
            
        }

        private void RDB_Bin_CheckedChanged(object sender, EventArgs e)
        {
            if (RDB_Bin.Checked == false)
                return;
            StringBuilder SB = new StringBuilder();
            /*
            if (ShowInHex)
                SB = Convert2BIN(16);
            else
                SB = Convert2BIN(0);
             */
            SB = ConvertReceiveTo(2);
            TXB_Receive.Clear();
            TXB_Receive.Text = SB.ToString();
            ShowInBin = RDB_Bin.Checked;
            ShowInHex = !ShowInBin;
            ShowInChar = !ShowInBin;
        }

        private void RDB_SendChar_CheckedChanged(object sender, EventArgs e)
        {
            SendChar = RDB_SendChar.Checked;
            if (SendChar == true)
            {
                TXB_Send.Text = "By Walson, Sharp Arrow Studio";
            }
        }

        private void Send_Bin_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!((e.KeyChar >= '0' && e.KeyChar <= '1') || e.KeyChar == (char)22 || e.KeyChar == (char)3 || e.KeyChar == ' '))
            {
                if (e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back /*&& e.KeyChar != (char)Keys.Delete*/)
                {
                    e.Handled = true;
                    MessageBox.Show("输入的字符包含非二进制数字。");
                    return;
                }

            }
        }

        private void RDB_SendBIN_CheckedChanged(object sender, EventArgs e)
        {
            SendBin = RDB_SendBIN.Checked;
            if (SendBin == true)
            {
                this.TXB_Send.KeyPress  = new System.Windows.Forms.KeyPressEventHandler(this.Send_Bin_KeyPress);
                TXB_Send.Text = "00000000 00000001 00000010 00000011 00000100";
            }
            else
                this.TXB_Send.KeyPress -= new System.Windows.Forms.KeyPressEventHandler(this.Send_Bin_KeyPress);
        }

        private void CKB_SendHEX_CheckedChanged(object sender, EventArgs e)
        {
            SendHEX = RDB_SendHEX.Checked;
            if (SendHEX == true)
            {
                this.TXB_Send.KeyPress  = new System.Windows.Forms.KeyPressEventHandler(this.Send_HEX_KeyPress);
                TXB_Send.Text = "00 01 02 03 04 05 06 07 08 09 0A";
                TXB_Send.CharacterCasing = CharacterCasing.Upper;
            }
            else
            {
                this.TXB_Send.KeyPress -= new System.Windows.Forms.KeyPressEventHandler(this.Send_HEX_KeyPress);
                TXB_Send.CharacterCasing = CharacterCasing.Normal;
            }
            //TXB_Send.Clear();
        }

        private void Send_HEX_KeyPress(object sender, KeyPressEventArgs e)
        {
            //MessageBox.Show(e.KeyChar.ToString());
            if (!((e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar >= 'a' && e.KeyChar <= 'f') || (e.KeyChar >= 'A' && e.KeyChar <= 'F') || e.KeyChar == (char)22 || e.KeyChar == (char)3 || e.KeyChar == ' '))
            {
                if (e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back /*&& e.KeyChar != (char)Keys.Delete*/)
                {
                    e.Handled = true;
                    MessageBox.Show("输入的字符包含非十六进制数字。");
                }
            }
        }

        private void CKB_AutoClear_CheckedChanged(object sender, EventArgs e)
        {
            AutoClear = CKB_AutoClear.Checked;
            if(AutoClear==true)
            {
                BufferSize = Convert.ToInt32(TXB_BufferSize.Text);
                label5.Enabled = true;
                label6.Enabled = true;
                TXB_BufferSize.Enabled = true;
                BTN_BufferSizeOK.Enabled = true;
            }
            else
            {
                label5.Enabled = false;
                label6.Enabled = false;
                TXB_BufferSize.Enabled = false;
                BTN_BufferSizeOK.Enabled = false;
            }
        }

        private void BTN_BufferSizeOK_Click(object sender, EventArgs e)
        {
            BufferSize = Convert.ToInt32(Convert.ToDouble(TXB_BufferSize.Text) * 1024);
            if (BufferSize > 2147483647)
            {
                MessageBox.Show("缓冲区设置过大。缓冲区容量请不要超过2GB。");
                BufferSize = 1024000;
                TXB_BufferSize.Text = "100";
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                serialPort1.Close();
            }
            catch (System.Exception ex)
            {
                return;
            }
            
        }

        String SaveType = "ASCII";
        private void 十六进制ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveType = "HEX";
            SaveFile.Title = "保存为十六进制形式";
            SaveFile.Filter = "文本文件|*.txt";
            SaveFile.ShowDialog();
        }

        private void 二进制ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveType = "BIN";
            SaveFile.Title = "保存为二进制形式";
            SaveFile.Filter = "文本文件|*.txt";
            SaveFile.ShowDialog();
        }

        private void aSCIIToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveType = "ASCII";
            SaveFile.Title = "保存为ASCII码形式";
            SaveFile.Filter = "文本文件|*.txt";
            SaveFile.ShowDialog();
        }

        private void SaveFile_FileOk(object sender, CancelEventArgs e)
        {
            StringBuilder SB = new StringBuilder();
            FileStream FS = new FileStream(SaveFile.FileName, FileMode.Create);
            StreamWriter SW = new StreamWriter(FS);
            switch (SaveType)
            {
                case "ASCII":
                    {
                        SB = ConvertReceiveTo(0);
                        SW.Write(SB.ToString());
                        break;
                    }
                case "BIN":
                        {
                            SB = ConvertReceiveTo(2);
                            SW.Write(SB.ToString());
                            break;
                        }
                case "HEX":
                    {
                        SW.Write(ReceivePool.ToString());
                        break;
                    }
            }
            SW.Close();
            FS.Close();
        }

        private void toolStripSplitButton2_ButtonClick(object sender, EventArgs e)
        {
            SaveType = "ASCII";
            SaveFile.Title = "保存为ASCII码形式";
            SaveFile.Filter = "文本文件|*.txt";
            SaveFile.ShowDialog();
        }

        private void TXB_Receive_TextChanged(object sender, EventArgs e)
        {
            //TXB_Receive.Focus();
            //Application.DoEvents();
            TXB_Receive.ScrollToCaret();
        }

        private void BTN_AddMemo_Click(object sender, EventArgs e)
        {
            if (TXB_Memo.Text != "")
                this.Text = "串口数据分析工具     By 飞无痕,PLAIEU    --正与"   TXB_Memo.Text   "连接";
            else
                this.Text = "串口数据分析工具     By 飞无痕,PLAIEU";
        }

        private void TXB_Memo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar=='\r')
            {
                if (TXB_Memo.Text != "")
                    this.Text = "串口数据分析工具     By 飞无痕,PLAIEU    --正与"   TXB_Memo.Text   "连接";
                else
                    this.Text = "串口数据分析工具     By 飞无痕,PLAIEU";
                TXB_Send.Focus();
            }
        }
    }
}


实例下载地址

usb转串口 读取扫描枪扫描信息

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警