打印

C#串口软件--踏出第一步

[复制链接]
796|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前序:认真学习C#的串口软件。帖子即作为自己的读写笔记,也作为交流学习的园地。请高手不吝赐教!

C#建立工程WinForm网上有很多了,都是跟着一步步跟着做的。直接说怎么配置串口吧!
看到别人分享的帖子,最主要还是SerialPort的使用。

private SerialPort MyCom = new SerialPort();

后续都是针对变量MyCom编写的。

最简单界面,一个打开串口,一个接受串口数据的文本框。






第一步走的很简单,没有华丽的界面,直接就是串口的直接配置。
代码很简答,打开串口和配置。
        private void OpenMyCom()
        {
            if (!MyCom.IsOpen)
            {
                try
                {
                    //设置串口号
                    string serialName = "COM8";
                    MyCom.PortName = serialName;

                    //设置各“串口设置”
                    string strBaudRate = "115200";
                    string strDateBits = "8";

                    Int32 iBaudRate = Convert.ToInt32(strBaudRate);
                    Int32 iDateBits = Convert.ToInt32(strDateBits);

                    MyCom.BaudRate = iBaudRate;       //波特率
                    MyCom.DataBits = iDateBits;       //数据位


                    MyCom.StopBits = StopBits.One;//停止位
                    MyCom.Parity = Parity.None;


                    if (MyCom.IsOpen == true)//如果打开状态,则先关闭一下
                    {
                        MyCom.Close();
                    }
                    MyCom.Open();     //打开串口

                }
                catch (System.Exception e)
                {
                    MessageBox.Show("Error:" + e.Message, "Error");
                    return;
                }
            }
            else
            {
                MyCom.Close();                    //关闭串口
                btn_OpenCom.Text = "打开串口";
            }
        }


然后关联接收事件。MyCom.DataReceived += MyCom_DataReceived;
这是接收事件 :


        private void MyCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            if (MyCom.IsOpen)
            {
                Byte[] receivedData = new Byte[MyCom.BytesToRead];        //创建接收字节数组
                MyCom.Read(receivedData, 0, receivedData.Length);         //读取数据
                txt_DataRecv.Text = txt_DataRecv.Text + (new UTF8Encoding().GetString(receivedData));
            }
            else
            {
                MessageBox.Show("Open SerialPort Plseas!");
            }
        }


最后来个效果图:


华丽的界面也在一步步的学习中,多多指教。

相关帖子

沙发
gaochy1126|  楼主 | 2018-10-31 21:54 | 只看该作者
有的时候提示这个错误的:"线程间操作无效: 从不是创建控件的线程访问它。"

把“Control.CheckForIllegalCrossThreadCalls = false;”添加上就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1051

主题

11300

帖子

26

粉丝