首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RS232传输分组失配

RS232传输分组失配
EN

Stack Overflow用户
提问于 2014-07-20 00:11:19
回答 1查看 235关注 0票数 0

我试图找出为什么简单的RS232传输不起作用。如图片所示,我正在运行调试器来查看要传输的数据值。问题是,发送和接收的字节是完全不同的。我不知道这里出了什么问题。如果有人需要更多信息,请告诉我。

以下是代码段:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;

namespace ShimmerAPI
{
    class Transmission
    {
        const short multiplier = -1020; // 10000/-9.81

        byte[] Combine (byte[] a0, byte[] a1, byte[] a2)
        {
            byte[] ret = new byte[a0.Length + a1.Length + a2.Length];
            Array.Copy(a0, 0, ret, 0, a0.Length);
            Array.Copy(a1, 0, ret, a0.Length, a1.Length);
            Array.Copy(a2, 0, ret, a0.Length + a1.Length, a2.Length);
            return ret;
        }

        short Multiply (double x)
        {
            if (x > 25 || x < -25)
                return 0;
            else
                return Convert.ToInt16(x * multiplier);
        }

        public void TransmitData (SerialPort port, ObjectCluster obj)
        {
            double[] data = obj.GetData().ToArray();

            short X = Multiply(data[3]);
            short Y = Multiply(data[5]);
            short Z = Multiply(data[7]);

            byte[] combBytes = Combine(BitConverter.GetBytes(Z), BitConverter.GetBytes(Y), BitConverter.GetBytes(X));

            port.Write(combBytes, 0, 1);
        }
    }
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-20 00:18:10

SerialPort.Write的第二个和第三个参数指定要发送的数组的一部分;您的代码只发送一个字节,因为这正是您所请求的(第三个参数,count,设置为1)。

我不知道嗅探器中的其他字节是否来自,但是索引0的字节,即11,是这个函数发送的唯一字节。

你可能是说

代码语言:javascript
复制
port.Write(combBytes, 0, combBytes.Length);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24846154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档