Winform程序控制网络继电器(康耐德,泥人..)运用Socket,TCP协议

   //继电器官网查看命令
   https://www.konnad.com/service/download/product-model/sdd4040-ad3
   static byte[] DOON = new byte[] { 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x05, 0x00, 0x64, 0xFF, 0x00 };//控制继电器打开(DO-1灯亮)
    static byte[] DOOFF = new byte[] { 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x05, 0x00, 0x64, 0x00, 0x00 };//控制继电器关闭(DO-1灯灭)

//按钮事件执行Demo:产品烘烤48h报警
private void bt_bake_Click(object sender, EventArgs e)
{
//烘烤中,sysdate-start_time > 48h(2880min)---需要报警
string sql = "";
sql = "select sajet.bake_time1 result from dual";
//数据库中function:bake_time1

点击查看代码
CREATE OR REPLACE FUNCTION bake_time1 RETURN VARCHAR  IS
--烘烤中,sysdate-start_time > 48h(2880min)---需要报警
  v_result       VARCHAR2(100);
  v_cnt          NUMBER;--大於48h的烘烤笔数
  BEGIN

  v_result := 'OK';
select count(1)
 into v_cnt
  from Bake_Master--烘烤表
 where 1 = 1
 and status='0'
 and 2880-round((sysdate-start_time)*24*60,0) <= 0;


  IF v_cnt > 0 THEN
  v_result := 'NG';
  END IF;

return v_result;


END;
        DataTable dt_count = DBHelp.Get_DataTable(DBHelp.ConnMES, sql);
        if (dt_count.Rows[0][0].ToString() == "NG")
        {
            MessageBox.Show("烘烤时间已过48H!!!");
            StreamWriter writer = File.AppendText(@"E:\bake.txt");
            writer.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "   烘烤报警!!!");
            writer.Close();
            sendSignal(1, "网络继电器IP地址", DOON);
        }
        else
        {
            MessageBox.Show("报警解除!!!");
            StreamWriter writer = File.AppendText(@"E:\bake.txt");
            writer.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "   烘烤报警已解除!");
            writer.Close();
            sendSignal(1, "网络继电器IP地址", DOOFF);
        }
    }

    
    //Socket通讯
    public static void sendSignal(int status, string strip, byte[] cmd)
    {
        try
        {
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress ip = IPAddress.Parse(strip);
            IPEndPoint ipe = new IPEndPoint(ip, 502);//默认端口
            s.Connect(ipe);

            s.Send(cmd);
            s.Close();
        }
        catch (Exception)
        {

            //throw ;
        }
    }
posted @ 2024-07-30 09:34  txtspring  阅读(125)  评论(0)    收藏  举报