首页 > 解决方案 > “Write”语句中的编译器错误将字节值发送到 C#.NET 中的 SerialPort

问题描述

我相信这是一个直截了当的问题,但是在研究了各个地方的错误代码之后,对我来说意义不大。

我想要达到的目标:

  1. 将列表值数组写入串行端口

怎么了:

下面的语句正在生成错误,“CS0443:语法错误,预期值”错误位于“Write”语句的 serPortXmitBuffer 对象的指针括号内。

mySerialPort.Write (serPortXmitBuffer[], 0, serPortXmitBuffer.Count-1); mySerialPort.Write (serPortXmitBuffer[此处错误], 0, serPortXmitBuffer.Count-1);

“写入”语句在 serPointXmitBuffer 中传递了一个有效名称,我检查了该数组是否存在且正确。对于我的一生,我不知道为什么这个代码片段会为一个值生成错误???数组内容为 11 个字节,如下:255, 255, 2 65, 73, 77, 16, 2 0, 0, 3

我试过的:

  1. 从第一个传入的名称 serPortXmitBuffer 中删除括号。(这不起作用,因为这样做会导致错误,“CS1503:参数 1:无法从 'System.Collections.Generic.List' 转换为 'char[]'”
  2. 在 [] 中提供值的不合逻辑的尝试中,我输入了零 (0)。(这也不起作用,因为它也会生成与上面关于将字节转换为字符的完全相同的错误消息

为了完整起见,生成数组的代码如下所示:

        int incArrPnter;
        Console.WriteLine("Writing passed in xmitBuffer within TXPACK routine");
        for (incArrPnter = 0; incArrPnter <= _array.Count-1; incArrPnter = incArrPnter + 1)
        {

            Console.WriteLine(_array[incArrPnter]);
        }

        // Declare our new List<byte> array, serPortXmitBuffer
        // Copy all bytes in "_array" over to serPortXmitBuffer
        List<byte> serPortXmitBuffer = new List<byte>();

        // Copy "_array" over to serPortXmitBuffer
        for (incArrPnter = 0; incArrPnter <= _array.Count - 1; incArrPnter = incArrPnter + 1)
        {
            serPortXmitBuffer.Add(_array[incArrPnter]);
        }
        // Try to write the contents of serPortXmitBuffer to the serial port.
        mySerialPort.Write (serPortXmitBuffer[0], 0, serPortXmitBuffer.Count-1);

标签: c#

解决方案


我学到的一些对我来说不一定显而易见的事情(也许其他人可能不知道,所以我发布了这个答案:

  1. 尝试从串行端口发送字节时,“Write”方法不支持将列表作为结构。它必须是传统的字节数组,例如 myArray[]

  2. 到目前为止,我还没有发现让“myArray.Count-1”成为 Write 语句中的有效元素来表示要传输的字节总数的方法。它必须是一个数字 (int) 或一个 int 变量。

我很想在第二点上犯错,但到目前为止,我读过或看到的任何内容都不允许我传递“myArray.Count”或“myArray.Count - 1”,因为这些表达式都没有解析为 int。


推荐阅读