当前位置: 代码迷 >> C# >> C# 串口的程序理解与功用
  详细解决方案

C# 串口的程序理解与功用

热度:119   发布时间:2016-05-05 04:31:17.0
C# 串口的程序理解与作用
最近学习串口,用C#写了一个简单的串口通信界面,功能虽然实现了,但有些程序还是不太懂,主要是不知道功能是什么,希望懂了指点一下。代码如下:

void BindParity()//校验位
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("ValueMember");
            dt.Columns.Add("DisplayMember");

            for (int i = 0; i < 3; i++)
            {
                DataRow dr = dt.NewRow();

                if (((int)Parity.None).Equals(i))//转换为int型数值,并判断是否与i值相同
                {
                    dr[0] = (int)Parity.None;
                    dr[1] = Parity.None.ToString();//00
                }

                if (((int)Parity.Odd).Equals(i))
                {
                    dr[0] = (int)Parity.Odd;
                    dr[1] = Parity.Odd.ToString();//11
                }

                if (((int)Parity.Even).Equals(i))
                {
                    dr[0] = (int)Parity.Even;
                    dr[1] = Parity.Even.ToString();//22
                }

                dt.Rows.Add(dr);
            }
            comboBox3.DataSource = dt;
            comboBox3.DisplayMember = "DisplayMember";
            comboBox3.ValueMember = "ValueMember";
            comboBox3.SelectedIndex = 0;
        }
        void stopbits() //停止位
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("ValueMember");
            dt.Columns.Add("DisplayMember");
            for (int i = 0; i < 4; i++)
            {
                DataRow dr = dt.NewRow();
                if (((int)StopBits.None).Equals(i))
                {
                    dr[0] = (int)StopBits.None;
                    dr[1] = StopBits.None.ToString();//0 None
                }
                if (((int)StopBits.One).Equals(i))
                {
                    dr[0] = (int)StopBits.One;
                    dr[1] = StopBits.One.ToString();//1 One
                }
                if (((int)StopBits.Two).Equals(i))
                {
                    dr[0] = (int)StopBits.Two;
                    dr[1] = StopBits.Two.ToString();//2 Two
                }
                if (((int)StopBits.OnePointFive).Equals(i))
                {
                    dr[0] = (int)StopBits.OnePointFive;
                    dr[1] = StopBits.OnePointFive.ToString();//3 OnePointFive
                }
                dt.Rows.Add(dr);
            }
            comboBox4.DataSource = dt;
            comboBox4.DisplayMember = "DisplayMember";
            comboBox4.ValueMember = "ValueMember";
            comboBox4.SelectedIndex = 1;
        }

以上代码是我从相关串口实例上看到的,我感觉C#写串口不需要调用这些函数啊!可为什么有些(很多)的例子中都调用了这两个函数,这两个函数的作用是什么???
------解决思路----------------------
这不就是给两个下拉列表绑定数据吗
为了让用户能手动选择串口的参数呗
你总不能每次都代码写死吧
------解决思路----------------------
一般我来做,会直接给控件显示"None"这个字符串,而不是Parity.None.ToString()这种东西
------解决思路----------------------
这是给DataTable添加了2列,一列用来存放值,一列用来存放显示的文本,然后绑定下拉列表
毕竟你给串口对象设置参数的时候,使用的是枚举,如果你只添加文本而不添加值,那么获取到用户选择的文本之后,还要自己再写分支语句判断一下,再转换成枚举值.那样其实也可以的.
------解决思路----------------------
我自己做串口程序的时候,更习惯直接给下拉列表添加文本,然后在给串口初始化参数的函数里用分支语句转换成枚举赋值
因为我觉得为了俩下拉列表定义俩DataTable怪麻烦的,其实代码量差不多了
------解决思路----------------------
最近我也在学习串口的相关开发!正好可以看到!
  相关解决方案