2014-02-24 42 views
1

我想要做的是創建一個簡單的Windows窗體應用程序來控制繼電器板來開啓和關閉一些燈。沒什麼嚴重的,這是一個個人項目。這個鏈接到繼電器板我有:http://www.canakit.com/catalog/product/view/id/627/s/4-port-usb-relay-controller/Visual Studio C#USB 4繼電器板控制器

現在我的問題是如何發送命令到繼電器,並通過USB接收一些命令。繼電器板帶有一個驅動器。這些板支持下面的命令。那麼我如何通過我的Windows窗體將 發送到板子。

從用戶手冊:它兼容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 

回答

0

縱觀說明書,司機給你串行端口訪問(但沒有直接的USB API),所以你必須打開一個串口繼電器板。

首先(如果您還沒有),請按照下的說明與手冊中的控制器進行通信,並使用超級終端之類的東西確保您可以與主板通話。

再看看這些例子進行簡單的串行通信從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,以便與端口進行通信。謝謝。 – user3097812

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(); 
       } 
      } 
     } 
    } 
}