public async Task WriteMultipleCoilsAsyncThrowsOnInvalidData(ushort numberOfPoints)
        {
            // Arrange
            var target = new ModbusMaster(new Mock <IModbusTransport>().Object);

            // Act/Assert
            await Assert.ThrowsAsync <ArgumentOutOfRangeException>(
                "data",
                () => target.WriteMultipleCoilsAsync(1, 0, Enumerable.Repeat(true, numberOfPoints).ToArray()));
        }
        public async Task WriteMultipleCoilsAsyncThrowsOnNullData()
        {
            // Arrange
            var target = new ModbusMaster(new Mock <IModbusTransport>().Object);

            // Act/Assert
            await Assert.ThrowsAsync <ArgumentNullException>(
                "data",
                () => target.WriteMultipleCoilsAsync(1, 0, null));
        }
예제 #3
0
    private async void WriteButton_Click(object sender, EventArgs e)
    {
        UIEnabled(bFlg: false);
        int item_idx = 0;

        try
        {
            int          tab_idx = tabControl1.SelectedIndex;
            TabPage      pg      = tabControl1.TabPages[tab_idx];
            DataGridView mdgv    = (DataGridView)pg.Controls[0];
            bool[]       bits    = new bool[TargetSensor.CoilsMaps.Count];
            foreach (typeBase coilsMap in TargetSensor.CoilsMaps)
            {
                string text = mdgv[1, item_idx].Value.ToString();
                if (text == null || text == "")
                {
                    throw new Exception(mdgv[0, item_idx].Value.ToString() + " parameter empty");
                }
                if (!coilsMap.ToValue(text))
                {
                    throw new Exception(mdgv[0, item_idx].Value.ToString() + " parameter error");
                }
                if (((typeCh)coilsMap).bit == 1)
                {
                    bits[item_idx] = true;
                }
                else
                {
                    bits[item_idx] = false;
                }
                item_idx++;
            }
            await Master.WriteMultipleCoilsAsync((byte)devno, (ushort)TargetSensor.CoilAddress, bits);

            ReadButton_Click(null, null);
        }
        catch (SlaveException)
        {
            MessageBox.Show("Device error response.");
        }
        catch (Exception ex2)
        {
            if (ex2.Message != null)
            {
                MessageBox.Show(ex2.Message);
            }
            else
            {
                MessageBox.Show("Parameter error.");
            }
        }
        UIEnabled(bFlg: true);
    }