using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using PACNET; using System.Runtime.InteropServices; using System.Threading; namespace _041RW_demo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Int32 iSlot; private void btnWriteDO_Click(object sender, EventArgs e) { IntPtr hPort; Int32 ModuleType = 0; hPort = PACNET.UART.Open(""); //Get slot iSlot = Convert.ToInt32(cmbDOSlot.Text); //Read module type ModuleType = PACNET.Sys.GetModuleType(iSlot); if (ModuleType == 0xe0 || ModuleType == 0xc0 || ModuleType == 0x80 || ModuleType == 0x81) { //Write DO value PACNET.PAC_IO.WriteDO(hPort, iSlot, Convert.ToInt32(txtbDOChannels.Text), Convert.ToUInt32(txtbDOValue.Text, 16)); } else { MessageBox.Show("No module or module is wriong" + ModuleType.ToString()); } PACNET.UART.Close(hPort); } private void Form1_Load(object sender, EventArgs e) { cmbDOSlot.SelectedIndex = 0; } private void btnClearDO_Click(object sender, EventArgs e) { IntPtr hPort; hPort = PACNET.UART.Open(""); //Clear DO iSlot = Convert.ToInt32(cmbDOSlot.Text); PACNET.PAC_IO.WriteDO(hPort, iSlot, Convert.ToInt32(txtbDOChannels.Text), 0); txtbDOValue.Text = "0"; PACNET.UART.Close(hPort); //timer1.Interval = 200;//長時間測試用 //timer1.Enabled = true; } private void button1_Click(object sender, EventArgs e) { IntPtr hPort; iSlot = Convert.ToInt32(cmbDOSlot.Text); hPort = PACNET.UART.Open(""); uint data = 0; PACNET.PAC_IO.ReadDO(hPort, iSlot, Convert.ToInt32(txtbDOChannels.Text), ref data); txtbReadDo.Text = data.ToString("x"); PACNET.UART.Close(hPort); } private void button4_Click(object sender, EventArgs e) { IntPtr hPort ; hPort = PACNET.UART.Open(""); iSlot = Convert.ToInt32(cmbDOSlot.Text); PACNET.PAC_IO.WriteModulePowerOnValueDO(hPort, iSlot,32, Convert.ToUInt32(txtbDOValue.Text, 16)); DialogResult result =MessageBox.Show("Power on value will show after reboot.\nDo you want to reboot now?","Note",MessageBoxButtons.YesNo,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1); if (result == DialogResult.Yes) PACNET.Sys.Reboot(); } private void button3_Click(object sender, EventArgs e) { IntPtr hPort; hPort = PACNET.UART.Open(""); iSlot = Convert.ToInt32(cmbDOSlot.Text); PACNET.PAC_IO.RefreshModuleWDT(hPort, iSlot); PACNET.UART.Close(hPort); } private void button2_Click(object sender, EventArgs e) { int WTDOverwrite = 0; int WTDTimeout = 0; IntPtr hPort; hPort = PACNET.UART.Open(""); iSlot = Convert.ToInt32(cmbDOSlot.Text); PACNET.PAC_IO.WriteModuleSafeValueDO(hPort, iSlot,32, Convert.ToUInt32(txtbDOValue.Text, 16)); if (chkWTDOverwrite.Checked)//enable WTD overwrite after WTD start WTDOverwrite = 1; WTDTimeout = Int16.Parse(txtbWTDTimeout.Text); PACNET.PAC_IO.SetModuleWDTConfig(hPort, iSlot, 1, WTDTimeout, WTDOverwrite); PACNET.UART.Close(hPort); } uint i = 0; private void timer1_Tick(object sender, EventArgs e) { //Console.WriteLine(i.ToString()); IntPtr hPort; Int32 ModuleType = 0; hPort = PACNET.UART.Open(""); //Get slot iSlot = Convert.ToInt32(cmbDOSlot.Text); if (i > 65534) i = 0; //Read module type ModuleType = PACNET.Sys.GetModuleType(iSlot); if (ModuleType == 0xe0 || ModuleType == 0xc0 || ModuleType == 0x80 || ModuleType == 0x81) { //Write DO value PACNET.PAC_IO.WriteDO(hPort, iSlot, Convert.ToInt32(txtbDOChannels.Text), i); } else { MessageBox.Show("No module or module is wriong" + ModuleType.ToString()); } PACNET.UART.Close(hPort); i++; } private void chkWTDOverwrite_CheckStateChanged(object sender, EventArgs e) { } } }