• 串口通信


     [STAThread]
                 static void Main()
                 {
                       Application.Run(new Form1());
                 }

                 public int iPort = 1; //1,2,3,4
                 public int iRate = 9600; //1200,2400,4800,9600
                 public byte bSize = 8; //8 bits
                 public byte bParity = 0; // 0-4=no,odd,even,mark,space
                 public byte bStopBits = 1; // 0,1,2 = 1, 1.5, 2
                 public int iTimeout = 1000;
                 public mycom mycom1 = new mycom();
                 public byte[] recb;

                 //程序开启,串口初始化
                 private void Form1_Load(object sender, System.EventArgs e)
                 {
                       mycom1.PortNum = iPort;
                       mycom1.BaudRate = iRate;
                       mycom1.ByteSize = bSize;
                       mycom1.Parity = bParity;
                       mycom1.StopBits = bStopBits;
                       mycom1.ReadTimeout = iTimeout;
                       if (this.OpenCom())
                             msg.AppendText("串口初始化成功……\r\n");
                       else
                             msg.AppendText("串口初始化失败!\r\n");
                 }
                 //显示包信息
                 public string dis_package(byte[] reb)
                 {
                       string temp = "";
                       foreach (byte b in reb)
                             temp += b.ToString("X2") + " ";
                       return temp;
                 }
                 //开串口
                 public bool OpenCom()
                 {
                       try
                       {
                             if (mycom1.Opened)
                             {
                                   mycom1.Close();
                                   mycom1.Open(); //打开串口
                             }
                             else
                             {
                                   mycom1.Open();//打开串口
                             }
                             return true;
                       }
                       catch (Exception e)
                       {
                             MessageBox.Show("错误:" + e.Message);
                             return false;
                       }

                 }
                 //发送按钮
                 private void button1_Click(object sender, System.EventArgs e)
                 {
                       if (t_send.Text == "")
                       { MessageBox.Show("发送数据为空!"); return; }
                       byte[] temp1 = mysendb();
                       int sendnumb = 0;
                       try
                       {
                             sendnumb = mycom1.Write(temp1);
                             msg.AppendText("\r\n发送数据(" + sendnumb + "):" + dis_package(temp1));
                             recb = mycom1.Read(50);
                             //if(recb.Length!=0)
                             msg.AppendText("\r\n接收到数据包:" + dis_package(recb));
                       }
                       catch
                       { msg.AppendText("\r\n发送失败!"); return; }

                       //OpenCom();
                 }
                 //去掉发送数组中的空格
                 public string delspace(string putin)
                 {
                       string putout = "";
                       for (int i = 0; i < putin.Length; i++)
                       {
                             if (putin[i] != ' ')
                                   putout += putin[i];
                       }
                       return putout;
                 }
                 //提取数据包
                 public byte[] mysendb()
                 {
                       string temps = delspace(t_send.Text);
                       byte[] tempb = new byte[50];
                       int j = 0;
                       for (int i = 0; i < temps.Length; i = i + 2, j++)
                             tempb[j] = Convert.ToByte(temps.Substring(i, 2), 16);
                       byte[] send = new byte[j];
                       Array.Copy(tempb, send, j);
                       return send;
                 }
                 //清空按钮
                 private void button3_Click(object sender, System.EventArgs e)
                 {
                       t_send.Text = string.Empty;
                       msg.Text = string.Empty;
                 }

                 //参数设置
                 private void button2_Click(object sender, System.EventArgs e)
                 {
                       iPort = Convert.ToInt16(t_port.Text); //1,2,3,4
                       iRate = Convert.ToInt16(t_rate.Text); //1200,2400,4800,9600
                       bSize = Convert.ToByte(t_bytesize.Text, 10); //8 bits
                       bParity = Convert.ToByte(t_parity.Text, 10); // 0-4=no,odd,even,mark,space
                       bStopBits = Convert.ToByte(t_stopbyte.Text, 10); // 0,1,2 = 1, 1.5, 2
                       //iTimeout=3;
                       if (this.OpenCom())
                             msg.AppendText("串口初始化成功……\r\n");
                       else
                             msg.AppendText("串口初始化失败!\r\n");
                 }
                 //程序关闭,结束串口
                 private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
                 {
                       mycom1.Close();
                 }

                 private void button5_Click(object sender, System.EventArgs e)
                 {
                       if (mycom1.Opened)
                       {
                             mycom1.Close();
                             button5.Text = "开启串口";
                             msg.AppendText("\r\n串口被关闭……");
                       }
                       else
                       {
                             mycom1.Open();
                             button5.Text = "关闭串口";
                             msg.AppendText("\r\n串口成功开启……");
                       }
                 }
           }
    }

  • 相关阅读:
    [luogu4053 JSOI2007] 建筑抢修 (贪心 优先队列)
    [luogu2272 ZJOI2007] 最大半连通子图 (tarjan缩点 拓扑排序 dp)
    20180705 考试记录
    [luogu4310] 绝世好题 (递推)
    [luogu2765 网络流24题] 魔术球问题 (dinic最大流)
    [luogu4151 WC2011] 最大XOR和路径 (线性基)
    [luogu3232 HNOI2013] 游走 (高斯消元 期望)
    [luogu3726 HNOI2017] 抛硬币 (拓展lucas)
    20180703 考试记录
    [spoj] HIGH
  • 原文地址:https://www.cnblogs.com/jcomet/p/1251093.html
Copyright © 2020-2023  润新知