我现有的代码:
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”并一次发送?
答案 0 :(得分:2)
虽然像240
这样的神奇数字并没有赢得任何奖品,但这并非完全“错误”。您也可以使用BinaryWriter,将SerialPort.BaseStream传递给它的构造函数。
请记住,串行端口实现流,而不是“数据包”。只是一个原始的字节序列,没有独特的开头和结尾。就像TCP一样。除非您创建自己的协议,否则没有框架协议。你做了什么。由接收器将字节流转换回帧。传输时不存在相同的要求。