首页 文章

Visual Studio C#USB 4继电器板控制器

提问于
浏览
1

我想要做的是创建一个简单的Windows窗体应用程序来控制继电器板打开和关闭一些灯 . 没有什么是严肃的,这是个人项目 . 这是我继电器板的链接:http://www.canakit.com/catalog/product/view/id/627/s/4-port-usb-relay-controller/ .

现在我的问题是如何向继电器发送命令并通过USB接收一些命令 . 继电器板配有驱动器 . 这些板支持以下命令 . 那么如何通过我的窗体将它们发送到电路板 .

从用户手册:它兼容Windows和Apple OS X,以及各种Linux风格,并显示为USB CDC(通信设备类)设备,它创建一个虚拟串行(COM)端口,允许通过任何支持串行通信的编程语言(VB,VB.NET,C#,C,C,Perl,Java等) . 一套完整易用的命令可用于完全控制所有继电器,I / O通道和传感器 .

支持的命令:

RELx.ON
RELx.OFF
RELx.TOGGLE
RELx.GET

RELS.ON
RELS.OFF
RELS.GET

CHx.ON
CHx.OFF
CHx.TOGGLE
CHx.GET
CHx.SETMODE
CHx.GETANALOG
CHx.GETTEMP

CHS.ON
CHS.OFF
CHS.GET
CHS.SETTEMPRES

3 回答

  • 0

    查看说明手册,驱动程序为您提供串行端口访问(但没有直接的USB api),因此您必须打开到继电器板的串行端口 .

    首先关闭(如果你还没有),请按照手册中 Communicating with the Controller 下的说明操作并使用HyperTerminal之类的东西确保你可以'talk'到电路板上 .

    然后看看这些来自C#的简单串行通信的例子:

    http://csharp.simpleserial.com/

    http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-2800_RS_2D00_232-Serial-COM-Port_2900-in-C_2300_-.NET.aspx

  • 0

    你应该使用System.IO.Ports.SerialPort class .

    如果您已经看过该课程的文档并且在使用它时遇到问题,请详细说明您遇到的问题 .

  • 0

    安装驱动程序后插入设备 . 打开设备管理器,您现在应该看到主板制造商提供的COM端口 . 您可以在文档中提供COM端口,波特率,奇偶校验等 . 现在你可以使用以下代码创建一个c#控制台应用程序,我已经做了一个示例,在3秒的间隙之后发出RELx.ON,然后发出RELx.OFF:

    using System;
    using System.IO.Ports;
    
    namespace RelayConsole
    {
        class Program
        {
            public static SerialPort port = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);
    /* Replace COM5 with your COM port, 9600 with baud rate of your board, parity and bits as well as per your device documentation */
    
            static void Main(string[] args)
            {
                SerialProgram();
            }
    
            static void SerialProgram()
            {
                try
                {
                    port.Open();
                    port.Write("RELx.ON"); /* You can pass any command as per your documentation in port.Write */
                    System.Threading.Thread.Sleep(3000);
                    port.Write("RELx.OFF");
                    Environment.Exit(0);
                }
                catch (Exception ex)
                {
                    if(ex is System.IO.IOException)
                    {
                        Console.WriteLine("Port Exception: " + ex.ToString());
                        Console.ReadLine();
                    }
                    else
                    {
                        Console.WriteLine("General Exception: " + ex.ToString());
                        Console.ReadLine();
                    }
                }
            }
        }
    }
    

相关问题