您当前的位置: 首页 >  c#

unity工具人

暂无认证

  • 4浏览

    0关注

    205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#串口通信三步走

unity工具人 发布时间:2020-08-20 18:04:58 ,浏览量:4

第一步:实例化串口通讯类

 SerialPort sp = new SerialPort();

第二步:设置串口信息并打开串口

  //串口设置
    public void SetSP(string PortName,string BaudRate,string DataBits,string StopBits,string Command)
    {
        sp.Close();
        sp.PortName = PortName;//串口号
        sp.BaudRate = int.Parse(BaudRate);//波特率
        sp.DataBits = int.Parse(DataBits);//数据位
        sp.StopBits = (StopBits)int.Parse(StopBits);//停止位
        sp.ReadTimeout = 500;//读取数据的超时时间,引发ReadExisting异常
        bntSwitchSP_Click(Command);//开串口
    }
    //打开串口
        private void bntSwitchSP_Click(string command)
        {
            if (sp.PortName!= "" && sp.BaudRate!= "" && sp.DataBits!= "" && sp.StopBits!= "")
            {
                try
                {
                    if (sp.IsOpen)
                    {   
                    	sp.Close();
                        sp.Open();//打开串口
                    }
                    else
                    {
                        sp.Open();//打开串口
                    }
                    ToSendMessage(command);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("错误:" + ex.Message, "C#串口通信");
                }
            }
            else
            {
                MessageBox.Show("请先设置串口!", "RS232串口通信");
            }           
        }

第三步:发送指令

   //发送数据
    public void ToSendMessage()
    {
        if (sp.IsOpen)
        {
            try
            {
                sp.Encoding = System.Text.Encoding.GetEncoding("GB2312");
                string Command = "100110010001111101";
                
                //发送数据(类型:十六进制)
                sp.Write(strToHexByte(Command ), 0, strToHexByte(Command ).Length);
                
                发送数据(类型:字符串)
                //sp.Write(SerialCommand);
                
                //发送成功!
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误:" + ex.Message);
            }
        }
        else
        {
            MessageBox.Show("串口未打开!");
        }
    }
    // 字符串转换成16进制编码
    private byte[] strToHexByte(string hexString)
    {
        hexString = hexString.Replace(" ", "");
        if ((hexString.Length % 2) != 0) hexString += " ";
        byte[] returnBytes = new byte[hexString.Length / 2];
        for (int i = 0; i             
关注
打赏
1656671177
查看更多评论
0.1320s