使用?系統。集合。泛型;
使用?系統;
使用?系統。Linq
使用?系統。繪圖;
使用?系統。診斷;
使用?系統。數據;
使用?系統。Xml . Linq
使用?微軟。VisualBasic
使用?系統。收藏;
使用?系統。Windows . Forms
使用?System.Net;
使用?系統。Runtime . InteropServices
命名空間?TCP _客戶端
{
公共?部分?班級?表單1
{
公共?表單1()
{
initialize component();
如果?(defaultInstance?==?空)
defaultInstance?=?這個;
}
#地區?違約?情況
私人?靜電?Form1?默認實例;
公共?靜電?Form1?默認
{
得到
{
如果?(defaultInstance?==?空)
{
defaultInstance?=?新的?form 1();
默認實例。表單關閉?+=?新的?FormClosedEventHandler(default instance _ form closed);
}
回歸?默認實例;
}
設置
{
defaultInstance?=?價值;
}
}
靜電?作廢?default instance _ form closed(object?發件人?FormClosedEventArgs?e)
{
defaultInstance?=?null
}
#結束區域
EntFxPlc。PlcClient?PLC?=?新的?EntFxPlc。PlcClient();
布爾?EntLink
龍?掃描計數;
矮?ScanRet
Int32?PlcHand
[DllImport("winmm.dll ",ExactSpelling=true,?CharSet =字符集。Ansi,?SetLastError=true)]
公共?靜電?extern?UInt32?time gettime();
公共?作廢?Form1_Load(系統。對象?發件人?系統。EventArgs?e)
{
這個。centerto screen();
cmbReadMry。items . Clear();
cmbReadMry。items . Add(" X ");
cmbReadMry。items . Add(" Y ");
cmbReadMry。items . Add(" M ");
cmbReadMry。items . Add(" D ");
cmbWriteMry。items . Clear();
cmbWriteMry。items . Add(" X ");
cmbWriteMry。items . Add(" Y ");
cmbWriteMry。items . Add(" M ");
cmbWriteMry。items . Add(" D ");
cmbBitMry。items . Clear();
cmbBitMry。items . Add(" X ");
cmbBitMry。items . Add(" Y ");
cmbBitMry。items . Add(" M ");
cmbReadType。items . Clear();
cmbReadType。items . Add(" int 16 ");
cmbReadType。items . Add(" uint 16 ");
cmbReadType。items . Add(" dint 32 ");
cmbReadType。items . Add(" hex 32 ");
cmbReadType。items . Add(" real 32 ");
cmbReadType。items . Add(" bin 16 ");
cmbWriteType。items . Clear();
cmbWriteType。items . Add(" int 16 ");
cmbWriteType。items . Add(" uint 16 ");
cmbWriteType。items . Add(" dint 32 ");
cmbWriteType。items . Add(" hex 32 ");
cmbWriteType。items . Add(" real 32 ");
cmbWriteType。items . Add(" bin 16 ");
cmbReadMry。SelectedIndex?=?3;
cmbWriteMry。SelectedIndex?=?3;
cmbBitMry。SelectedIndex?=?2;
cmbReadType。SelectedIndex?=?0;
cmbWriteType。SelectedIndex?=?0;
伊斯特雷德。items . Clear();
txtWrite。文字?=?"";
cmbCmdType。SelectedIndex?=?0;
}
公共?作廢?butLink_Click(系統。對象?發件人?系統。EventArgs?e)
{
矮?re?=?0;
字符串?雷斯特?=?"";
re?=?PLC。EntLink(txtLocalIP。Text.Trim(),?轉換。ToUInt16(txtLocalPort。正文),?txtRemoteIP。Text.Trim(),?(轉換。ToUInt16(txtRemotePort。正文))、“演示”,?裁判?PlcHand,轉換?. ToUInt16?(1000),轉換?。ToBoolean?(cmbCmdType?。SelectedIndex?));
txtReLink。文字?=?關於。ToString();
如果?(re?==?0)
{
EntLink?=?真實;
MessageBox。顯示(" PLC連接成功!");
}
其他
{
EntLink?=?假的;
MessageBox。顯示(" PLC連接失敗:?"?+?restr);
}
}
公共?作廢?butClose_Click(系統。對象?發件人?系統。EventArgs?e)
{
矮?re?=?0;
EntLink?=?假的;
re?=?PLC。德林克(PlcHand);
txt關閉。文字?=?關於。ToString();
}
公共?作廢?butRead_Click(系統。對象?發件人?系統。EventArgs?e)
{
矮?我?=?0;
對象[]?RD?=?null
RD?=?新的?對象[轉換。ToUInt16(txtReadCnt。正文)];
如果?(!EntLink)
{
MessageBox。Show("與PLC的連接尚未建立!");
返回;
}
int?var1?=?cmbReadType。SelectedIndex?+?1;
EntFxPlc。數據類型?typ?=?(EntFxPlc?. plcclient . datatype)var 1;
切換?(cmbReadMry。SelectedIndex)
{
案子?0:
ScanRet?=?PLC。CmdRead(PlcHand,EntFxPlc。PlcClient.PlcMemory.DI,?典型,轉換。touint 16(txtreadedd。正文),?轉換。ToUInt16(txtReadCnt。正文),?裁判?RD);
打破;
案子?1:
ScanRet?=?PLC。CmdRead(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DQ,?typ,?轉換。touint 16(txtreadedd。正文),?轉換。ToUInt16(txtReadCnt。正文),?裁判?RD);
打破;
案子?2:
ScanRet?=?PLC。CmdRead(PlcHand,?EntFxPlc。妳好,先生?typ,?轉換。touint 16(txtreadedd。正文),?轉換。ToUInt16(txtReadCnt。正文),?裁判?RD);
打破;
案子?3:
ScanRet?=?PLC。CmdRead(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DR .?typ,?轉換。touint 16(txtreadedd。正文),?轉換。ToUInt16(txtReadCnt。正文),?裁判?RD);
打破;
}
txtReRead。文字?=?斯坎雷特。ToString();
伊斯特雷德。items . Clear();
為了什麽?(我?=?0;?我?& lt=?(RD。長度?-?1);?i++)
{
如果?(!(RD[i]?==?null))
{
伊斯特雷德。items . Add(RD[I]);
}
其他
{
伊斯特雷德。items . Add(" 0 ");
}
}
}
公共?作廢?butWrite_Click(系統。對象?發件人?系統。EventArgs?e)
{
矮?我?=?0;
string[]?臨時工?=?null
對象[]?WD?=?null
如果?(!EntLink)
{
MessageBox。Show("與PLC的連接尚未建立!");
返回;
}
WD?=?新的?對象[轉換。ToUInt16(txtWriteCnt。正文)];
臨時工?=?txtWrite。text . Split(' \ n ');
為了什麽?(我?=?0;?我?& lt=?(WD。長度?-?1);?i++)
{
如果?(我?& gt?(溫度。長度?-?1))
{
WD[i]?=?0;
}
其他
{
WD[i]?=?temp[i]。trim();
}
}
int?var1?=?cmbWriteType。SelectedIndex?+?1;
EntFxPlc。數據類型?typ?=?(EntFxPlc。PlcClient . DataType)var 1;
切換?(cmbWriteMry。SelectedIndex)
{
案子?0:
ScanRet?=?PLC。CmdWrite(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DI,?typ,?轉換。ToUInt16(txtWriteAdd。正文),?轉換。ToUInt16(txtWriteCnt。正文),?裁判?WD);
打破;
案子?1:
ScanRet?=?PLC。CmdWrite(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DQ,?typ,?轉換。ToUInt16(txtWriteAdd。正文),?轉換。ToUInt16(txtWriteCnt。正文),?裁判?WD);
打破;
案子?2:
ScanRet?=?PLC。CmdWrite(PlcHand,?EntFxPlc。妳好,先生?typ,?轉換。ToUInt16(txtWriteAdd。正文),?轉換。ToUInt16(txtWriteCnt。正文),?裁判?WD);
打破;
案子?3:
ScanRet?=?PLC。CmdWrite(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DR .?typ,?轉換。ToUInt16(txtWriteAdd。正文),?轉換。ToUInt16(txtWriteCnt。正文),?裁判?WD);
打破;
}
txtReWrite。文字?=?斯坎雷特。ToString();
}
公共?作廢?butScan_Click(系統。對象?發件人?系統。EventArgs?e)
{
如果?(!EntLink)
{
MessageBox。Show("與PLC的連接尚未建立!");
返回;
}
如果?(butScan。文字?==?“循環?讀/寫”)
{
ScanCount?=?0;
定時器1。啟用?=?真實;
但是掃描。文字?=?“停下來?讀/寫";
}
其他
{
定時器1。啟用?=?假的;
但是掃描。文字?=?“循環?讀/寫";
}
}
公共?作廢?定時器1_Tick(系統。對象?發件人?系統。EventArgs?e)
{
定時器1。啟用?=?假的;
int?蒂姆。=?系統。convert . toint 32(time gettime());
如果?(!EntLink)
{
MessageBox。Show("與PLC的連接尚未建立!");
返回;
}
//
butRead_Click(null,null);
butWrite_Click(null,?null);
//
如果?((轉換。toint 32(txt read。正文)?& lt?0)?||?(轉換。ToInt32(txtReWrite。正文)?& lt?0))
{
但是掃描。文字?=?“循環?讀/寫";
返回;
}
其他
{
scan count++;
txtScanCnt。文字?=?掃描計數。ToString();
txtScanPrd。文字?=?(系統。Convert.ToInt32(timeGetTime())?-?蒂姆)。ToString()?+?”女士”;
}
定時器1。啟用?=?真實;
}
公共?作廢?butBitTest_Click(系統。對象?發件人?系統。EventArgs?e)
{
如果?(!EntLink)
{
MessageBox。Show("與PLC的連接尚未建立!");
返回;
}
布爾?rd?=?假的;
矮?re?=?0;
切換?(cmbBitMry。SelectedIndex)
{
案子?0:
re?=?PLC。Bit_Test(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DI,?轉換。ToUInt16(txtBitAdd。正文),?裁判?rd);
打破;
案子?1:
re?=?PLC。Bit_Test(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DQ,?轉換。ToUInt16(txtBitAdd。正文),?裁判?rd);
打破;
案子?2:
re?=?PLC。Bit_Test(PlcHand,?EntFxPlc。妳好,先生?轉換。ToUInt16(txtBitAdd。正文),?裁判?rd);
打破;
}
txtBitTest。文字?=?研發。ToString();
txtReBit。文字?=?關於。ToString();
}
公共?作廢?butBitSet_Click(System。對象?發件人?系統。EventArgs?e)
{
如果?(!EntLink)
{
MessageBox。Show("與PLC的連接尚未建立!");
返回;
}
矮?re?=?0;
切換?(cmbBitMry。SelectedIndex)
{
案子?0:
re?=?PLC。Bit_Set(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DI,?轉換。ToUInt16(txtBitAdd。正文));
打破;
案子?1:
re?=?PLC。Bit_Set(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DQ,?轉換。ToUInt16(txtBitAdd。正文));
打破;
案子?2:
re?=?PLC。Bit_Set(PlcHand,?EntFxPlc。妳好,先生?轉換。ToUInt16(txtBitAdd。正文));
打破;
}
txtReBit。文字?=?關於。ToString();
}
公共?作廢?butBitRst_Click(系統。對象?發件人?系統。EventArgs?e)
{
如果?(!EntLink)
{
MessageBox。Show("與PLC的連接尚未建立!");
返回;
}
矮?re?=?0;
切換?(cmbBitMry。SelectedIndex)
{
案子?0:
re?=?PLC。Bit_Reset(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DI,?轉換。ToUInt16(txtBitAdd。正文));
打破;
案子?1:
re?=?PLC。Bit_Reset(PlcHand,?EntFxPlc。PlcClient.PlcMemory.DQ,?轉換。ToUInt16(txtBitAdd。正文));
打破;
案子?2:
re?=?PLC。Bit_Reset(PlcHand,?EntFxPlc。妳好,先生?轉換。ToUInt16(txtBitAdd。正文));
打破;
}
txtReBit。文字?=?關於。ToString();
}
}
}