中级会员
 
- 积分
- 375
- 金钱
- 375
- 注册时间
- 2016-9-26
- 在线时间
- 59 小时
|
1金钱
本帖最后由 单井老头 于 2017-4-26 11:31 编辑
现在遇到一个问题,下位机发送两个数据到上位机,上位机可以正确按字节接受到了。剩余的是将两个字节数据合并成一个整数,用于波形显示。具体如下
单片机要发送的数据是:
[mw_shl_code=csharp,true]short pitch=50,roll=280[/mw_shl_code]
上位机按照十六进制接收数据如下:
[mw_shl_code=csharp,true]00 32 01 18[/mw_shl_code]
这个结果是正确的。
我将每两个字节数据拼接成一个C#里面的Int 32 类型的数据,但结果显示错误:
[mw_shl_code=csharp,true]00 32 01 18 //上位机接收到的十六进制数据
69632 1024//数据拼接后显示的数据[/mw_shl_code]
采用的拼接方法如下:
[mw_shl_code=csharp,true] pitch = (UsefulData[0] << 8 + UsefulData[1]);//UsefulData是上位机解析数据帧之后存储的有效数据数组
roll = (UsefulData[2] << 8 + UsefulData[3]); [/mw_shl_code]
单片机发送数据是高低位是高字节在前,所以这个原因被排除了,那请问还可能是其他什么原因呢?
|
最佳答案
查看完整内容[请看2#楼]
[mw_shl_code=csharp,true]private void Form1_Load(object sender, EventArgs e)
{
byte[] UsefulData = new byte[10];
UsefulData[0] = 0;
UsefulData[1] = 0x32;
UsefulData[2] = 0x01;
UsefulData[3] = 0x18;
short pitch = (short)(((short)UsefulData[0]
|