本代码是本人原创,如需转载请务必获得本人同意,否则保留一切权利!
在用VS2013写程序时遇到了‘’未找到约束ContractName‘’的问题,解决办法如下:
控制面板>程序>程序和功能 找到Entity Framwork Tools for vs2013软件右击修复 即可,注意要关闭VS2013。
https://blog.youkuaiyun.com/zhaoyun927/article/details/29862193
下面的代码只列出了最核心的数据解析方法,数据帧为0XAA+0XAA+data
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] receiveData = new byte[serialPort1.BytesToRead];
serialPort1.Read(receiveData, 0, receiveData.Length);
s += System.Text.Encoding.Default.GetString(receiveData);
//循环检测数据
for (int i = 0; i < receiveData.Length; i++)
{
//如果标志位为真,存数据,注意此时数据总量不能超过最大量
if (flagBit)
{
notCalculatePressData[count] = receiveData[i];
if (count == PressCount * 4 - 1 + 4)//包括压力数据和加速度计数据
{
//发布数据满消息
DataFull(this, new EventArgs());
count = 0;
flagBit = false;
}
else
{
count++;
}
}
//如果标志位为假,检测数据头
else
{
if (receiveData[i] == 0xAA && receiveData[i + 1] == 0xAA)
{
flagBit = true;
//跳过第二个数
i = i + 1;
count = 0;
}
}
}
}
public void DataCalculate(object sender, EventArgs e)
{
int k = 0;
for (int i = 0; i < notCalculatePressData.Length - 5; i = i + 4)
{
pressData[k] = ((int)notCalculatePressData[i] << 24) + ((int)notCalculatePressData[i + 1] << 16) + ((int)notCalculatePressData[i + 2] << 8) + (int)notCalculatePressData[i + 3];
k++;
}
}