如何通过串行端口在一个缓冲区中发送所有数据

本文关键字:缓冲区 数据 一个 串行端口 何通过 | 更新日期: 2023-09-27 18:21:32

我现有的代码:

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"中并一次发送

如何通过串行端口在一个缓冲区中发送所有数据

这并不完全是"错误的",尽管像240这样的神奇数字不会赢得任何奖品。您也可以使用BinaryWriter,将SerialPort.BaseStream传递给它的构造函数。

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