如何通过串口将所有数据发送到一个缓冲区?

时间:2014-09-11 23:47:56

标签: c# serial-port

我现有的代码:

private void ConvertAndSend_Click(object sender, EventArgs e)
{
    if (serialPort.IsOpen)
    {
        byte[] TxBuffer = new byte[240];
        string[] coords = textBox1.Text.Split('\n');
        for (int i = 0; i <= coords.Length - 1; i++)
        {
            if (coords[i].Length > 0)
            {
                Data = GetValue(coords[i]);
            }
        }
        TxBuffer[0] = 0x5A;
        TxBuffer[1] = Instruction;
        TxBuffer[2] = (byte)Data.Length;
        Data.CopyTo(TxBuffer, 3);
        TxBuffer[Data.Length + 3] = 0x2C;
        serialPort.Write(TxBuffer, 0, 4 + Data.Length);
    }
}

现在我将每个“数据”发送到单独的“Txbuffer”中。例如如果我有多个“数据”,我将发送多个“Txbuffer”。 如何将所有“数据”合并为一个“Txbuffer”并一次发送?

1 个答案:

答案 0 :(得分:2)

虽然像240这样的神奇数字并没有赢得任何奖品,但这并非完全“错误”。您也可以使用BinaryWriter,将SerialPort.BaseStream传递给它的构造函数。

请记住,串行端口实现流,而不是“数据包”。只是一个原始的字节序列,没有独特的开头和结尾。就像TCP一样。除非您创建自己的协议,否则没有框架协议。你做了什么。由接收器将字节流转换回帧。传输时不存在相同的要求。