用c#实现串口通信读取数据时只读前8位
byte[] TxData1 = new byte[] { };
n = sp.BytesToRead;
byte[] TxData = new byte[n];//声明一个临时数组存储当前来的串口数据
sp.Read(TxData, 0, n); //读取缓冲数据
Array.Resize(ref TxData1, TxData1.Length + n);//改写数组大小
TxData.CopyTo(TxData1, TxData1.Length - TxData.Length);//复制
我想实现读取完整怎么办 例如:我应该接收11位数据,它只读了前8位,余下的3位怎么读。麻烦各位帮忙一下。
byte[] TxData1 = new byte[] { };
n = sp.BytesToRead;
byte[] TxData = new byte[n];//声明一个临时数组存储当前来的串口数据
sp.Read(TxData, 0, n); //读取缓冲数据
Array.Resize(ref TxData1, TxData1.Length + n);//改写数组大小
TxData.CopyTo(TxData1, TxData1.Length - TxData.Length);//复制
我想实现读取完整怎么办 例如:我应该接收11位数据,它只读了前8位,余下的3位怎么读。麻烦各位帮忙一下。
int n = sp.BytesToRead;
byte[] TxData = new byte[n];
sp.Read(TxData, 0, n);
m = m + n;
this.Invoke((EventHandler)
(delegate
{
Array.Resize(ref TxData2, m);
TxData.CopyTo(TxData2, m - TxData.Length);
if (m == p)
{
byte[] data = new byte[p-2];
for (int i = 0; i < TxData2.Length -2;i++ ) {
data[i]=TxData2[i];
}
byte[] data2 = new byte[2];
data2[0] = TxData2[TxData2.Length - 2];
data2[1] = TxData2[TxData2.Length - 1];
byte[] data1 = new byte[2];
data1 = CRC16_C(data);
if (data1[0] == data2[1] && data1[1] == data2[0])
{
for (int j = 3; j <= m - 4; j = j + 2)
{
string s1 = TxData2[j].ToString();
string s2 = TxData2[j + 1].ToString();
string s = s1 + s2;
int g = Convert.ToInt32(s, 10);
string h = g.ToString();
textBox1.Text += h + " ";
}
textBox7.Text = "读取成功";
}
else
{
textBox7.Text ="读取失败";
}
m = 0;
} }
)
);