//pac_i8050WDemo folder: demo source code // /* Demo for I-8050W by C# I-8050W is a 16-channel universal Digital I/O module. It doesn't need to do any setting for DI function. Only DO function has to be set(Use pac_i8050W_UDIO_WriteConfig_16()). Warning:(English) A channel may be destroyed if it is subjected to an input signal(Vcc) while it is configured to be an output channel. Please remove the external signal which connects to DI, before changing the channel status from DI mode to DO mode Warning:(Traditional-Chinese) 警告:() 8050上有一個通道設定為DI且此通道有訊號輸入(Vcc),如果此時將此通道的 狀態設定為DO,則這個通道可能會損壞 通道狀態由DI改為DO之前,請先將DI的外部輸入線路移除 */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using pac_i8050WNet; namespace pac_i8050WDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } byte slot = 0; //Parameter private void btnBasicInfor_Click(object sender, EventArgs e) //Get the system information from pac_i8050W { ushort firmware_ver= pac8050W.GetFirmwareVersion(slot); ushort lib_ver = pac8050W.GetLibVersion(); string net_ver = pac8050W.GetNetVersion(); lblShowInfor.Text = "Firmware(lattice) version: " + firmware_ver.ToString() + "\nLibrary version: " + Convert.ToString(lib_ver, 16) + "\nNet version:" + net_ver; } private void cmbSlot_SelectedIndexChanged(object sender, EventArgs e) //Select which slot has pac_i8050W { slot = Convert.ToByte(cmbSlot.SelectedItem.ToString()); } private void Form1_Load(object sender, EventArgs e) { timerDI.Enabled = true; cmbSlot.SelectedIndex = 0; } private void timerDI_Tick(object sender, EventArgs e) //if dix das Connection ptbDI0.Image will become red peer { //if dix become dox ptbDI0.Image will become no peer if (!chkDO0_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0001) > 0) { ptbDI0.Image = imageList1.Images[1]; } else { ptbDI0.Image = imageList1.Images[0]; } } if (!chkDO1_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0002) > 0) { ptbDI1.Image = imageList1.Images[1]; } else { ptbDI1.Image = imageList1.Images[0]; } } if (!chkDO2_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0004) > 0) { ptbDI2.Image = imageList1.Images[1]; } else { ptbDI2.Image = imageList1.Images[0]; } } if (!chkDO3_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0008) > 0) { ptbDI3.Image = imageList1.Images[1]; } else { ptbDI3.Image = imageList1.Images[0]; } } if (!chkDO4_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0010) > 0) { ptbDI4.Image = imageList1.Images[1]; } else { ptbDI4.Image = imageList1.Images[0]; } } if (!chkDO5_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0020) > 0) { ptbDI5.Image = imageList1.Images[1]; } else { ptbDI5.Image = imageList1.Images[0]; } } if (!chkDO6_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0040) > 0) { ptbDI6.Image = imageList1.Images[1]; } else { ptbDI6.Image = imageList1.Images[0]; } } if (!chkDO7_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0080) > 0) { ptbDI7.Image = imageList1.Images[1]; } else { ptbDI7.Image = imageList1.Images[0]; } } if (!chkDO8_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0100) > 0) { ptbDI8.Image = imageList1.Images[1]; } else { ptbDI8.Image = imageList1.Images[0]; } } if (!chkDO9_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0200) > 0) { ptbDI9.Image = imageList1.Images[1]; } else { ptbDI9.Image = imageList1.Images[0]; } } if (!chkDO10_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0400) > 0) { ptbDI10.Image = imageList1.Images[1]; } else { ptbDI10.Image = imageList1.Images[0]; } } if (!chkDO11_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x0800) > 0) { ptbDI11.Image = imageList1.Images[1]; } else { ptbDI11.Image = imageList1.Images[0]; } } if (!chkDO12_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x1000) > 0) { ptbDI12.Image = imageList1.Images[1]; } else { ptbDI12.Image = imageList1.Images[0]; } } if (!chkDO13_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x2000) > 0) { ptbDI13.Image = imageList1.Images[1]; } else { ptbDI13.Image = imageList1.Images[0]; } } if (!chkDO14_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x4000) > 0) { ptbDI14.Image = imageList1.Images[1]; } else { ptbDI14.Image = imageList1.Images[0]; } } if (!chkDO15_Config.Checked) { if ((pac8050W.UDIO_DI16(slot) & 0x8000) > 0) { ptbDI15.Image = imageList1.Images[1]; } else { ptbDI15.Image = imageList1.Images[0]; } } } void DO_Config(byte slot, int ch, int bitvlaue) //Set dX is dix or dox if bitvlaue == 1 dx become dox else become become dix { if (ch >= 0 && ch < 16) { int value; if (bitvlaue == 1) { value= pac8050W.UDIO_ReadConfig_16(slot); value = (value | (1 << ch)); pac8050W.UDIO_WriteConfig_16(slot, (ushort)value); } else if (bitvlaue == 0) { value = pac8050W.UDIO_ReadConfig_16(slot); value &= ~(1 << ch); pac8050W.UDIO_WriteConfig_16(slot, (ushort)value); } } } private void chkDO0_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO0_Config.Checked) { DO_Config(slot, 0, 1); ptbDI0.Visible = false; chkDO0.Enabled = true; } else { DO_Config(slot, 0, 0); ptbDI0.Visible = true; chkDO0.Enabled = false; } } private void chkDO1_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO1_Config.Checked) { DO_Config(slot, 1, 1); ptbDI1.Visible = false; chkDO1.Enabled = true; } else { DO_Config(slot, 1, 0); ptbDI1.Visible = true; chkDO1.Enabled = false; } } private void chkDO2_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO2_Config.Checked) { DO_Config(slot, 2, 1); ptbDI2.Visible = false; chkDO2.Enabled = true; } else { DO_Config(slot, 2, 0); ptbDI2.Visible = true; chkDO2.Enabled = false; } } private void chkDO3_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO3_Config.Checked) { DO_Config(slot, 3, 1); ptbDI3.Visible = false; chkDO3.Enabled = true; } else { DO_Config(slot, 3, 0); ptbDI3.Visible = true; chkDO3.Enabled = false; } } private void chkDO4_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO4_Config.Checked) { DO_Config(slot, 4, 1); ptbDI4.Visible = false; chkDO4.Enabled = true; } else { DO_Config(slot, 4, 0); ptbDI4.Visible = true; chkDO4.Enabled = false; } } private void chkDO5_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO5_Config.Checked) { DO_Config(slot, 5, 1); ptbDI5.Visible = false; chkDO5.Enabled = true; } else { DO_Config(slot, 5, 0); ptbDI5.Visible = true; chkDO5.Enabled = false; } } private void chkDO6_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO6_Config.Checked) { DO_Config(slot, 6, 1); ptbDI6.Visible = false; chkDO6.Enabled = true; } else { DO_Config(slot, 6, 0); ptbDI6.Visible = true; chkDO6.Enabled = false; } } private void chkDO7_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO7_Config.Checked) { DO_Config(slot, 7, 1); ptbDI7.Visible = false; chkDO7.Enabled = true; } else { DO_Config(slot, 7, 0); ptbDI7.Visible = true; chkDO7.Enabled = false; } } private void chkDO8_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO8_Config.Checked) { DO_Config(slot, 8, 1); ptbDI8.Visible = false; chkDO8.Enabled = true; } else { DO_Config(slot, 8, 0); ptbDI8.Visible = true; chkDO8.Enabled = false; } } private void chkDO9_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO9_Config.Checked) { DO_Config(slot, 9, 1); ptbDI9.Visible = false; chkDO9.Enabled = true; } else { DO_Config(slot, 9, 0); ptbDI9.Visible = true; chkDO9.Enabled = false; } } private void chkDO10_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO10_Config.Checked) { DO_Config(slot, 10, 1); ptbDI10.Visible = false; chkDO10.Enabled = true; } else { DO_Config(slot, 10, 0); ptbDI10.Visible = true; chkDO10.Enabled = false; } } private void chkDO11_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO11_Config.Checked) { DO_Config(slot, 11, 1); ptbDI11.Visible = false; chkDO11.Enabled = true; } else { DO_Config(slot, 11, 0); ptbDI11.Visible = true; chkDO11.Enabled = false; } } private void chkDO12_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO12_Config.Checked) { DO_Config(slot, 12, 1); ptbDI12.Visible = false; chkDO12.Enabled = true; } else { DO_Config(slot, 12, 0); ptbDI12.Visible = true; chkDO12.Enabled = false; } } private void chkDO13_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO13_Config.Checked) { DO_Config(slot, 13, 1); ptbDI13.Visible = false; chkDO13.Enabled = true; } else { DO_Config(slot, 13, 0); ptbDI13.Visible = true; chkDO13.Enabled = false; } } private void chkDO14_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO14_Config.Checked) { DO_Config(slot, 14, 1); ptbDI14.Visible = false; chkDO14.Enabled = true; } else { DO_Config(slot, 14, 0); ptbDI14.Visible = true; chkDO14.Enabled = false; } } private void chkDO15_Config_CheckStateChanged(object sender, EventArgs e) { if (chkDO15_Config.Checked) { DO_Config(slot, 15, 1); ptbDI15.Visible = false; chkDO15.Enabled = true; } else { DO_Config(slot, 15, 0); ptbDI15.Visible = true; chkDO15.Enabled = false; } } private void btnSelectAll_DOConfig_Click(object sender, EventArgs e) { chkDO0_Config.Checked = true; chkDO1_Config.Checked = true; chkDO2_Config.Checked = true; chkDO3_Config.Checked = true; chkDO4_Config.Checked = true; chkDO5_Config.Checked = true; chkDO6_Config.Checked = true; chkDO7_Config.Checked = true; chkDO8_Config.Checked = true; chkDO9_Config.Checked = true; chkDO10_Config.Checked = true; chkDO11_Config.Checked = true; chkDO12_Config.Checked = true; chkDO13_Config.Checked = true; chkDO14_Config.Checked = true; chkDO15_Config.Checked = true; } private void btnClearAll_DOConfig_Click(object sender, EventArgs e) { chkDO0_Config.Checked = false; chkDO1_Config.Checked = false; chkDO2_Config.Checked = false; chkDO3_Config.Checked = false; chkDO4_Config.Checked = false; chkDO5_Config.Checked = false; chkDO6_Config.Checked = false; chkDO7_Config.Checked = false; chkDO8_Config.Checked = false; chkDO9_Config.Checked = false; chkDO10_Config.Checked = false; chkDO11_Config.Checked = false; chkDO12_Config.Checked = false; chkDO13_Config.Checked = false; chkDO14_Config.Checked = false; chkDO15_Config.Checked = false; } void pac_i8050W_UDIO_WriteDOBit16(byte slot, int channel, int bitvalue)// Send a signal to dox { ushort Value = pac8050W.UDIO_ReadDO16(slot); int Value1; if (channel >= 0 && channel < 16) { if (bitvalue == 1) { Value1 = Value | (0x0001 << channel); pac8050W.UDIO_WriteDO16(slot, (ushort)(Value1 )); } else if (bitvalue == 0) { Value1 = Value & (~(0x0001 << channel)); pac8050W.UDIO_WriteDO16(slot, (ushort)(Value1 )); } } } void DO_Bit(byte slot, int ch, int bitvalue) { if (ch >= 0 && ch < 16) { if (bitvalue == 1) { pac_i8050W_UDIO_WriteDOBit16(slot, ch, 1); } else if (bitvalue == 0) { pac_i8050W_UDIO_WriteDOBit16(slot, ch, 0); } } } private void chkDO0_CheckStateChanged(object sender, EventArgs e) { if (chkDO0.Checked) { DO_Bit(slot, 0, 1); } else { DO_Bit(slot, 0, 0); } } private void chkDO1_CheckStateChanged(object sender, EventArgs e) { if (chkDO1.Checked) { DO_Bit(slot, 1, 1); } else { DO_Bit(slot, 1, 0); } } private void chkDO2_CheckStateChanged(object sender, EventArgs e) { if (chkDO2.Checked) { DO_Bit(slot, 2, 1); } else { DO_Bit(slot, 2, 0); } } private void chkDO3_CheckStateChanged(object sender, EventArgs e) { if (chkDO3.Checked) { DO_Bit(slot, 3, 1); } else { DO_Bit(slot, 3, 0); } } private void chkDO4_CheckStateChanged(object sender, EventArgs e) { if (chkDO4.Checked) { DO_Bit(slot, 4, 1); } else { DO_Bit(slot, 4, 0); } } private void chkDO5_CheckStateChanged(object sender, EventArgs e) { if (chkDO5.Checked) { DO_Bit(slot, 5, 1); } else { DO_Bit(slot, 5, 0); } } private void chkDO6_CheckStateChanged(object sender, EventArgs e) { if (chkDO6.Checked) { DO_Bit(slot, 6, 1); } else { DO_Bit(slot, 6, 0); } } private void chkDO7_CheckStateChanged(object sender, EventArgs e) { if (chkDO7.Checked) { DO_Bit(slot, 7, 1); } else { DO_Bit(slot, 7, 0); } } private void chkDO8_CheckStateChanged(object sender, EventArgs e) { if (chkDO8.Checked) { DO_Bit(slot, 8, 1); } else { DO_Bit(slot, 8, 0); } } private void chkDO9_CheckStateChanged(object sender, EventArgs e) { if (chkDO9.Checked) { DO_Bit(slot, 9, 1); } else { DO_Bit(slot, 9, 0); } } private void chkDO10_CheckStateChanged(object sender, EventArgs e) { if (chkDO10.Checked) { DO_Bit(slot, 10, 1); } else { DO_Bit(slot, 10, 0); } } private void chkDO11_CheckStateChanged(object sender, EventArgs e) { if (chkDO11.Checked) { DO_Bit(slot, 11, 1); } else { DO_Bit(slot, 11, 0); } } private void chkDO12_CheckStateChanged(object sender, EventArgs e) { if (chkDO12.Checked) { DO_Bit(slot, 12, 1); } else { DO_Bit(slot, 12, 0); } } private void chkDO13_CheckStateChanged(object sender, EventArgs e) { if (chkDO13.Checked) { DO_Bit(slot, 13, 1); } else { DO_Bit(slot, 13, 0); } } private void chkDO14_CheckStateChanged(object sender, EventArgs e) { if (chkDO14.Checked) { DO_Bit(slot, 14, 1); } else { DO_Bit(slot, 14, 0); } } private void chkDO15_CheckStateChanged(object sender, EventArgs e) { if (chkDO15.Checked) { DO_Bit(slot, 15, 1); } else { DO_Bit(slot, 15, 0); } } private void btnSelectAll_DOWrite_Click(object sender, EventArgs e) { chkDO0.Checked = true; chkDO1.Checked = true; chkDO2.Checked = true; chkDO3.Checked = true; chkDO4.Checked = true; chkDO5.Checked = true; chkDO6.Checked = true; chkDO7.Checked = true; chkDO8.Checked = true; chkDO9.Checked = true; chkDO10.Checked = true; chkDO11.Checked = true; chkDO12.Checked = true; chkDO13.Checked = true; chkDO14.Checked = true; chkDO15.Checked = true; } private void btnClearAll_DOWrite_Click(object sender, EventArgs e) { chkDO0.Checked = false; chkDO1.Checked = false; chkDO2.Checked = false; chkDO3.Checked = false; chkDO4.Checked = false; chkDO5.Checked = false; chkDO6.Checked = false; chkDO7.Checked = false; chkDO8.Checked = false; chkDO9.Checked = false; chkDO10.Checked = false; chkDO11.Checked = false; chkDO12.Checked = false; chkDO13.Checked = false; chkDO14.Checked = false; chkDO15.Checked = false; } private void ptbDI0_Click(object sender, EventArgs e) { } } }