解决方案 »

  1.   

    本来也想说,让你上网找找资料自己学习下,实在找不到头绪再来这里问问也可以的,其实网络才是你最好的导师,基本上呢,你能遇见的问题,99% 网上肯定都有人遇见过。这里我贴一下 我的DOME里的一段给你看看吧,如果这个你都看不懂,我也没办法了。        /// <summary>
            ///     打开串口
            /// </summary>
            private void OpenWeightComm()
            {
                try
                {
                    serialPort = new SerialPort
                    {
                        PortName = comboBox1.Text,
                        Parity = Parity.None,
                        DataBits = 8,
                        BaudRate = Convert.ToInt32(cmbBaudRate.Text)
                    };                serialPort.Open();                BeginInvoke((MethodInvoker) (() => rt_log.AppendText("串口打开成功!\n")));                serialPort.DataReceived+=new SerialDataReceivedEventHandler(serialPort_DataReceived); //实时接收数据            }
                catch
                {
                    BeginInvoke((MethodInvoker) (() => rt_log.AppendText(string.Format("{0}串口打开失败!\n", comboBox1.Text))));
                }
            }
      

  2.   

    串口通信,有握手一说?不就是open,close,send,recive么...
    串口通信根本不存在长连接一说啊...
      

  3.   

    另外,奇偶校验是在底层实现的,你程序根本控制不了啊,只能将校验作为打开串口的参数传递进去
    如果是SUM校验和CRC校验,到是可以编程,网上可以直接找到代码
      

  4.   

    握手是TCP/IP为了保证传输的数据包不丢失而建立的一种协议
    你确定串口通信有这种需求?
    串口通信都只是传输数据,而且数据量有限制,一次最多只能传125个字,否则没法保证数据的有效性
    数据量小的时候,可以采用一方反复发送,另一方只负责接收的形式
    数据量大的时候,可以采用一方发送数据请求,另一方应答并返回数据,双方在通信过程中加校验
    如果接收方发现请求的指令有错误,返回错误码;如果发送方发现返回的数据格式有错误,或返回的是错误码,就重新发送请求
    说白了,串口通信是机器对机器的,不像以太网通信中IP包要走路由,所以数据都是实时的,顺序的,握手根本没有意义啊.
      

  5.   

    使用c#自带的 SerialPort  这个公共类来完成!
      

  6.   

    看看这个贴
    http://bbs.csdn.net/topics/380142489