事情是这样的,我自己开发了一个DSP设备,具有232通讯功能,收到上位机呼叫的时候会连续向串口发出36个8位数。
现在我准备自己用C#写一个232通讯的程序,周期性呼叫下位机,并接收(更新)这36个数。我计划的程序流程是,点击一个button,向DSP发出呼叫,即发送数据‘0’给DSP,DSP收到‘0’之后便会连续发出36个数。
然后我在serialPort1_DataReceived事件中接收数据(该事件我设置的是每收到一个字节就触发一次),当接收了36次后又向DSP发送‘0’,这样再接收36次,循环往复。现在出现的问题是,有些时候接收不到36个数。比如说连续几个周期都没有问题,但是下个周期忽然只接收到小于36个数了。不知道这是怎么回事。我确定DSP没有问题啊。
下面是我精简后的程序代码;
        int parameter_num ;
        int[] buff = new int[36];
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {         
            parameter_num = parameter_num + 1;
            buff[parameter_num - 1] = serialPort1.ReadByte();
            if (parameter_num == 36)
           {
                  parameter_num=0;
                  serialPort1.WriteLine(0.ToString());
           }
        }        private void button1_Click(object sender, EventArgs e)
        {
            parameter_num = 0;
            serialPort1.WriteLine(0.ToString());
        }