Exemplo n.º 1
0
        static void Main(string[] args)
        {
            string      errmsg = "";
            string      target;
            YSerialPort serialPort;

            if (YAPI.RegisterHub("usb", ref errmsg) != YAPI.SUCCESS)
            {
                Console.WriteLine("RegisterHub error: " + errmsg);
                Environment.Exit(0);
            }

            if (args.Length > 0 && args[0] != "any")
            {
                target     = args[0];
                serialPort = YSerialPort.FindSerialPort(target + ".serialPort");
                if (!serialPort.isOnline())
                {
                    Console.WriteLine("No module connected (check cable)");
                    Environment.Exit(0);
                }
            }
            else
            {
                serialPort = YSerialPort.FirstSerialPort();
                if (serialPort == null)
                {
                    Console.WriteLine("No module connected (check USB cable)");
                    Environment.Exit(0);
                }
            }

            Console.WriteLine("****************************");
            Console.WriteLine("* make sure voltage levels *");
            Console.WriteLine("* are properly configured  *");
            Console.WriteLine("****************************");

            serialPort.set_serialMode("9600,8N1");
            serialPort.set_protocol("Line");
            serialPort.reset();

            string line;

            do
            {
                YAPI.Sleep(500, ref errmsg);
                do
                {
                    line = serialPort.readLine();
                    if (line != "")
                    {
                        Console.WriteLine("Received: " + line);
                    }
                } while (line != "");
                Console.WriteLine("Type line to send, or Ctrl-C to exit: ");
                line = Console.ReadLine();
                serialPort.writeLine(line);
            } while (line != "");
            YAPI.FreeAPI();
        }
Exemplo n.º 2
0
        public override async Task <int> Run()
        {
            try {
                await YAPI.RegisterHub(HubURL);

                YSerialPort serialPort;

                if (Target.ToLower() == "any")
                {
                    serialPort = YSerialPort.FirstSerialPort();
                    if (serialPort == null)
                    {
                        WriteLine("No module connected (check USB cable) ");
                        return(-1);
                    }
                    YModule ymod = await serialPort.get_module();

                    WriteLine("Using: " + await ymod.get_serialNumber());
                }
                else
                {
                    serialPort = YSerialPort.FindSerialPort(Target + ".serialPort");
                }

                await serialPort.set_serialMode("9600,8N1");

                await serialPort.set_protocol("Line");

                await serialPort.reset();

                string line;
                do
                {
                    if (ToSend != "")
                    {
                        await serialPort.writeLine(ToSend);

                        ToSend = "";
                    }
                    await YAPI.Sleep(500);

                    do
                    {
                        line = await serialPort.readLine();

                        if (line != "")
                        {
                            WriteLine("Received: " + line);
                        }
                    } while (line != "");
                } while (line != "");
            } catch (YAPI_Exception ex) {
                WriteLine("error: " + ex.Message);
            }

            YAPI.FreeAPI();
            return(0);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            string errmsg = "";

            if (YAPI.RegisterHub("usb", ref errmsg) != YAPI.SUCCESS)
            {
                Console.WriteLine("RegisterHub error: " + errmsg);
                Environment.Exit(1);
            }

            YSerialPort serialPort;

            if (args.Length > 0 && args[0] != "any")
            {
                serialPort = YSerialPort.FindSerialPort(args[0]);
            }
            else
            {
                serialPort = YSerialPort.FirstSerialPort();
                if (serialPort == null)
                {
                    Console.WriteLine("No module connected (check USB cable)");
                    Environment.Exit(1);
                }
            }
            int    slave, reg, val;
            String cmd;

            do
            {
                Console.WriteLine("Please enter the MODBUS slave address (1...255)");
                Console.Write("Slave: ");
                slave = Convert.ToInt32(Console.ReadLine());
            } while (slave < 1 || slave > 255);
            do
            {
                Console.WriteLine("Please select a Coil No (>=1), Input Bit No (>=10001+),");
                Console.WriteLine("       Input Register No (>=30001) or Register No (>=40001)");
                Console.Write("No: ");
                reg = Convert.ToInt32(Console.ReadLine());
            } while (reg < 1 || reg >= 50000 || (reg % 10000) == 0);
            while (true)
            {
                if (reg >= 40001)
                {
                    val = serialPort.modbusReadRegisters(slave, reg - 40001, 1)[0];
                }
                else if (reg >= 30001)
                {
                    val = serialPort.modbusReadInputRegisters(slave, reg - 30001, 1)[0];
                }
                else if (reg >= 10001)
                {
                    val = serialPort.modbusReadInputBits(slave, reg - 10001, 1)[0];
                }
                else
                {
                    val = serialPort.modbusReadBits(slave, reg - 1, 1)[0];
                }
                Console.WriteLine("Current value: " + val.ToString());
                Console.Write("Press ENTER to read again, Q to quit");
                if ((reg % 30000) < 10000)
                {
                    Console.Write(" or enter a new value");
                }
                Console.Write(": ");
                cmd = Console.ReadLine();
                if (cmd == "q" || cmd == "Q")
                {
                    break;
                }
                if (cmd != "" && (reg % 30000) < 10000)
                {
                    val = Convert.ToInt32(cmd);
                    if (reg >= 30001)
                    {
                        serialPort.modbusWriteRegister(slave, reg - 30001, val);
                    }
                    else
                    {
                        serialPort.modbusWriteBit(slave, reg - 1, val);
                    }
                }
            }
            YAPI.FreeAPI();
        }
Exemplo n.º 4
0
        public override async Task <int> Run()
        {
            try {
                int slave = Convert.ToInt32(Slave);
                if (slave < 1 || slave > 255)
                {
                    WriteLine("Invalid MODBUS slave address");
                    return(-1);
                }

                int reg = Convert.ToInt32(Register);
                if (reg < 1 || reg >= 50000 || (reg % 10000) == 0)
                {
                    WriteLine("Invalid MODBUS Register");
                    return(-1);
                }

                await YAPI.RegisterHub(HubURL);

                YSerialPort serialPort;
                if (Target.ToLower() == "any")
                {
                    serialPort = YSerialPort.FirstSerialPort();
                    if (serialPort == null)
                    {
                        WriteLine("No module connected (check USB cable) ");
                        return(-1);
                    }
                    YModule ymod = await serialPort.get_module();

                    WriteLine("Using: " + await ymod.get_serialNumber());
                }
                else
                {
                    serialPort = YSerialPort.FindSerialPort(Target + ".serialPort");
                }

                int val;
                if (reg >= 40001)
                {
                    val = (await serialPort.modbusReadRegisters(slave, reg - 40001, 1))[0];
                }
                else if (reg >= 30001)
                {
                    val = (await serialPort.modbusReadInputRegisters(slave, reg - 30001, 1))[0];
                }
                else if (reg >= 10001)
                {
                    val = (await serialPort.modbusReadInputBits(slave, reg - 10001, 1))[0];
                }
                else
                {
                    val = (await serialPort.modbusReadBits(slave, reg - 1, 1))[0];
                }

                WriteLine("Current value: " + val.ToString());

                if (Value != "" && (reg % 30000) < 10000)
                {
                    val = Convert.ToInt32(Value);
                    if (reg >= 30001)
                    {
                        await serialPort.modbusWriteRegister(slave, reg - 30001, val);
                    }
                    else
                    {
                        await serialPort.modbusWriteBit(slave, reg - 1, val);
                    }
                }
            } catch (YAPI_Exception ex) {
                WriteLine("error: " + ex.Message);
            }

            YAPI.FreeAPI();
            return(0);
        }
 /**
  * <summary>
  *   Retrieves a serial port for a given identifier.
  * <para>
  *   The identifier can be specified using several formats:
  * </para>
  * <para>
  * </para>
  * <para>
  *   - FunctionLogicalName
  * </para>
  * <para>
  *   - ModuleSerialNumber.FunctionIdentifier
  * </para>
  * <para>
  *   - ModuleSerialNumber.FunctionLogicalName
  * </para>
  * <para>
  *   - ModuleLogicalName.FunctionIdentifier
  * </para>
  * <para>
  *   - ModuleLogicalName.FunctionLogicalName
  * </para>
  * <para>
  * </para>
  * <para>
  *   This function does not require that the serial port is online at the time
  *   it is invoked. The returned object is nevertheless valid.
  *   Use the method <c>YSerialPort.isOnline()</c> to test if the serial port is
  *   indeed online at a given time. In case of ambiguity when looking for
  *   a serial port by logical name, no error is notified: the first instance
  *   found is returned. The search is performed first by hardware name,
  *   then by logical name.
  * </para>
  * </summary>
  * <param name="func">
  *   a string that uniquely characterizes the serial port
  * </param>
  * <returns>
  *   a <c>YSerialPort</c> object allowing you to drive the serial port.
  * </returns>
  */
 public static YSerialPort FindSerialPort(string func)
 {
     YSerialPort obj;
     obj = (YSerialPort) YFunction._FindFromCache("SerialPort", func);
     if (obj == null) {
         obj = new YSerialPort(func);
         YFunction._AddToCache("SerialPort", func, obj);
     }
     return obj;
 }