public bool WriteRegister(ushort reg, short value)
            {
                modbus link = new modbus();
                bool   ret  = link.Open(port, 9600, 8, Parity.None, StopBits.Two);

                if (!ret)
                {
                    throw EngineMessageException.offline(
                              "Opening port " + port + " failed: " + link.modbusStatus);
                }
                short[] val = { value };
                Logger.log(
                    "Writing 0x" + value.ToString("x") +
                    " to register 0x" + reg.ToString("x") +
                    " to address 0x" + address.ToString("x"));
                ret = link.SendFc16(address, reg, 1, val);
                if (!ret)
                {
                    throw new EngineMessageException(
                              "Writing 0x" + value.ToString("x") +
                              " to register 0x" + reg.ToString("x") + " failed: " + link.modbusStatus);
                }
                link.Close();
                return(ret);
            }
Beispiel #2
0
 private void connectButton_Click(object sender, EventArgs e)
 {
     short[] values = new short[16];
     if (connectButton.Text == "Connect")
     {
         if (deviceBox.Text == "")
         {
             MessageBox.Show("Please select device com port");
         }
         else
         {
             if (mb.Open(deviceBox.Text, 9600, 8, Parity.None, StopBits.One))
             {
                 Enable_Panel();
                 connectButton.Text    = "Disconnect";
                 pleaseclickLabel.Text = "";
                 actionTextBox.Text   += "TM-012P is connected\r\n";
                 pvLabel.ForeColor     = Color.Turquoise;
                 outputLabel.ForeColor = Color.LightBlue;
                 cojLabel.ForeColor    = Color.Turquoise;
                 _connected            = true;
                 threadstart();
                 Verifyuser_config();
             }
             else
             {
                 MessageBox.Show("Failed to connect device or device com port not availble", "Communication failed", MessageBoxButtons.OK);
             }
         }
     }
     else
     {
         //device_serialPort.Close();
         if (mb.Close())
         {
             Disble_Panel();
             _connected = false;
             _mbisread  = false;
             //threadstart();
             prodIDLabel.Text      = "";
             connectButton.Text    = "Connect";
             pleaseclickLabel.Text = "Please click connect....";
             actionTextBox.Text   += "TM-012P is disconnected\r\n";
             swLabel.Text          = "";
             pvLabel.ForeColor     = Color.DarkGray;
             outputLabel.ForeColor = Color.DarkGray;
             cojLabel.ForeColor    = Color.DarkGray;
         }
         else
         {
             MessageBox.Show("Can not close communication, device might be unplugged", "Communication failed", MessageBoxButtons.OK);
         }
     }
 }
Beispiel #3
0
            public short ReadRegister(ushort reg)
            {
                modbus link = new modbus();

                link.Open(port, 9600, 8, Parity.None, StopBits.Two);
                short[] val = new short[1];
                bool    ret = link.SendFc3(address, reg, 1, ref val);

                if (!ret)
                {
                    throw new EngineMessageException(
                              "Read from register 0x" + reg.ToString("x") + " failed: " + link.modbusStatus);
                }
                link.Close();
                return(val[0]);
            }
Beispiel #4
0
        /* inicia pesquisa */
        private void StartPoll()
        {
            /* abre a porta COM selecionada com os parametros baudrate 115200 e 8 bits */
            if (mb.Open(lstPorts.SelectedItem.ToString(), Convert.ToInt32("115200"), 8, Parity.None, StopBits.One))
            {
                /* desabilita botão para evitar mais de um acionamento */
                btnStart.Enabled = false;
                dataType         = "Decimal";

                /* determina variavel como verdadeiro */
                isPolling = true;

                /* inicia o time com intervalo de 1000 milesegundos */
                timer.AutoReset = true;
                timer.Interval  = 1000;
                timer.Elapsed  += timer_Elapsed;
                timer.Enabled   = true;
                timer.Start();
            }
            /* atualiza o status e chama o gravalog */
            lblStatus.Text = mb.modbusStatus;
            Grava_Log(lblStatus.Text);
        }
Beispiel #5
0
 private void Page_Loaded(object sender, RoutedEventArgs e)
 {
     link.Open("COM3", 9600, 8, SerialParity.None, SerialStopBitCount.Two);
 }
Beispiel #6
0
 private void Form1_Load(object sender, EventArgs e)
 {
     link.Open("COM3", 9600, 8, Parity.None, StopBits.Two);
 }
Beispiel #7
0
        public string ReadVariables(string comport,
            string NameService,
            string numkonv,
            int addr1,
            int addr2,
            int addr3,
            int addr4,
            out string dataXML)
        {
            string _log = null;

            dataXML = GetTag("NUMKONV", Convert.ToString(numkonv));

            int error = 1;
            ushort CountReg = 18;
            ushort pollStart = 0;

            CultureInfo myCI = new CultureInfo("ru-RU", false);
            myCI.NumberFormat.NumberDecimalSeparator = ".";

            //Открытие com-порта

            string[] IniComPort = comport.Split(';');

            if (mb.Open(IniComPort[0],
                        Convert.ToInt16(IniComPort[1]),
                        Convert.ToInt16(IniComPort[2]),
                        Convert.ToInt16(IniComPort[3]),
                        Convert.ToInt16(IniComPort[4]),
                        Convert.ToInt16(IniComPort[5]),
                        ref _log)
                )
            {

                //Create array to accept read values:
                short[] values = new short[CountReg];

                //Read registers and display data in desired format:
                try
                {
                    if (mb.SendFc3(1, pollStart, CountReg, ref values, ref _log))
                    {

                        int intValue = (int)values[addr1];
                        intValue <<= 16;
                        intValue += (int)values[addr1 + 1];

                        dataXML = dataXML + GetTag("LOADING", Convert.ToString(BitConverter.ToSingle(BitConverter.GetBytes(intValue), 0), myCI));

                        intValue = (int)values[addr2];
                        intValue <<= 16;
                        intValue += (int)values[addr2 + 1];

                        dataXML = dataXML + GetTag("PRODUCTIVITY", Convert.ToString(BitConverter.ToSingle(BitConverter.GetBytes(intValue), 0), myCI));

                        intValue = (int)values[addr3];
                        intValue <<= 16;
                        intValue += (int)values[addr3 + 1];

                        dataXML = dataXML + GetTag("SPEED", Convert.ToString(BitConverter.ToSingle(BitConverter.GetBytes(intValue), 0), myCI));

                        intValue = (int)values[addr4];
                        intValue <<= 16;
                        intValue += (int)values[addr4 + 1];

                        dataXML = dataXML + GetTag("COUNTER", Convert.ToString(BitConverter.ToSingle(BitConverter.GetBytes(intValue), 0), myCI));

                        error = 0;

                    }
                }
                catch (Exception err)
                {
                    _log = _log + " Error in modbus read: " + err.Message;
                }

            }

            dataXML = dataXML + GetTag("ERROR", Convert.ToString(error)) +
                                GetTag("DTREAD", DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss.fff"));

            dataXML = "<BODY>" + dataXML + "</BODY>";

            //            _log = _log + " VAR1_XML: " + dataXML;
            if (_log != null)
                _log = NameService + ":  " + _log;

            return _log;
        }