串口写回声

时间:2015-06-11 11:31:39

标签: android serial-port

我知道帖子与这一点有关但它对我没有帮助。我有一个运行Android的Wandboard,它通过USB端口连接到PC。我使用SerialPort .Net类来读写数据。它是设计为请求响应方式.PC将在5秒内请求数据,因此它将写入端口并等待Wandboard在1秒内响应。如果它响应然后通过SerialPort读取方法它将读取数据等等过程将继续。我面临的问题是我写入端口的数据与wandboard的所需响应一起回显。我写入端口的数据首先在顺序中。无论我做什么总是回复我的书面数据。为了得到一个临时的解决方案,我正在编写数据并在最后添加新行,所以当我读帖子时,因为我得到回音,我跳过数据直到我得到的第一个换行符。 / p>

我知道这不是一个好方法,但我已经尝试了足够多,并且无法阻止端口回复我写的内容。非常感谢任何帮助。

这是写作和阅读的代码。

    /// <summary>
    /// Writes and receives data from AP board
    /// </summary>
    private void RequestAndResponse()
    {

        while (true)
        {

            try
            {
                if (myserialPort2 != null)
                {
                    int iwriteSize = 5;

                    if ( !myserialPort2.IsOpen)
                    {
                        myserialPort2.Open();
                    }

                    byte[] bytearrayOfSendCommand = new byte[iwriteSize];

                    bytearrayOfSendCommand[0] = 0x48;
                    bytearrayOfSendCommand[1] = 0x41;
                    bytearrayOfSendCommand[2] = 0x41;
                    bytearrayOfSendCommand[3] = 0x42;
                    bytearrayOfSendCommand[4] = 0x0A;

                    myserialPort2.Write(bytearrayOfSendCommand, 0, iwriteSize);

                    int size = myserialPort2.BytesToRead;
                    char[] bContent = new char[size];

                    var buffsize = myserialPort2.ReadBufferSize;
                    myserialPort2.Read(bContent, 0, size);

                    lock (objLocker)
                    {
                        char[] bContentTemp = bContent;

                       // ConsumePacketData(bContentTemp);
                    }

                    Thread.Sleep(2 * 1000);

                }

            }
            catch(Exception)
            {
               //to be implemented later
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

请检查Echo选项的USB转串口驱动程序设置。