我现有的代码:
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一样。除非您创建自己的框架协议,否则没有框架协议。你做了。由接收方决定将字节流变回一帧。传输时不存在相同的要求。
关于c# - 如何通过串行端口在一个缓冲区中发送所有数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25798628/