internal void RefreshDisplayPLCData_Except_AddressColumn() // 그리드뷰 Address Column 뺀, 나머지 새로고침 { while (state > 0) { UInt16[] vData = new UInt16[16]; UInt16[] TempByte = new UInt16[1]; //vdata[16]에 주소 ~ +16까지 배열값 읽어오기 vData = PLCManager.Read(iSelectedRegister, iSelectedAddress, 15); // 16 ==> 100 //row for (int i = 0; i < vData.Length; i++) { Grid[0, i + 0].Value = Device_Def.Device + (iSelectedAddress + i).ToString(); //column for (int j = 15; j >= 0; j--) { //첫번째줄 처음셀 부터 //읽어온 배열 내부값 & 쉘의 비트 변환값 == 같으면 1 Grid[16 - j, i].Value = (vData[i] & GetBitValue(j)) == GetBitValue(j) ? "1" : "0"; // 16개만 찍음 (D0 ~ D15) if (Grid[16 - j, i].Value.ToString() == ((vData[i] & GetBitValue(j)) == GetBitValue(j) ? "1" : "0")) { if (Grid[16 - j, i].Value.ToString() == "1") // 비트 데이터 1이면 { Grid[16 - j, i].Style.BackColor = Color.Aqua; // 활성화 색 } else { Grid[16 - j, i].Style.BackColor = Color.White; // 비 활성화 색 } } //if (m_VirtualPLC.SocketConnect != null) //{ // if (m_VirtualPLC.SocketConnect[i, 1] == 1) // { // gridControl_View[i + 1, 16].Style.BackColor = Color.Aqua; // } // else // { // gridControl_View[i + 1, 16].Style.BackColor = Color.White; // } //} } // j 바깥쪽 17~21 값 변환 //포트 번호 나열 Grid[0, 15].Value = "접속정보"; Grid[17, i].Value = ((vData[i] & 0xff00) / 256).ToString(); // HIGH Grid[18, i].Value = ((vData[i] & 0x00ff)).ToString(); // LOW Grid[19, i].Value = vData[i].ToString(); // ALL Grid[20, i].Value = ((char)((vData[i] & 0xff00) / 256)).ToString() + ((char)(vData[i] & 0x00ff)).ToString(); // ASCII } //서버일때 포트 번호 나열 for (int i = 0; i < UI_set.Enable_Client; i++) { Grid[i + 1, 15].Value = Port + i; Device_Def.ablePorts[i] = Port + i; } int a = 0; while (a < UI_set.Enable_Client) { } } }
internal void RefreshDisplayPLCData() // 그리드뷰 전체 셀 새로고침 { UInt16[] vData = new UInt16[16]; UInt16[] TempByte = new UInt16[1]; for (int i = 0; i < vData.Length; i++) { TempByte = PLCManager.Read(iSelectedRegister, iSelectedAddress + i, 1); ushort a = TempByte[0]; byte[] bb = BitConverter.GetBytes(a); for (int j = 0; j < bb.Length; j++) { BitArray b = new BitArray(new byte[] { bb[j] }); //BitArrayReverse(b); bb[j] = BitConvertToByte(b); } //Array.Reverse(b); TempByte[0] = BitConverter.ToUInt16(bb, 0); Array.Copy(TempByte, 0, vData, i, 1); } vData = PLCManager.Read(iSelectedRegister, iSelectedAddress, 15); // 16 ==> 100 for (int i = 0; i < vData.Length; i++) { Grid[0, i + 0].Value = Device_Def.Device + (iSelectedAddress + i).ToString(); // Address Column 관리 for (int j = 15; j >= 0; j--) { Grid[16 - j, i].Value = (vData[i] & GetBitValue(j)) == GetBitValue(j) ? "1" : "0"; // 16개만 찍음 (D0 ~ D15) if (Grid[16 - j, i].Value.ToString() == ((vData[i] & GetBitValue(j)) == GetBitValue(j) ? "1" : "0")) { if (Grid[16 - j, i].Value.ToString() == "1") // 비트 데이터 1이면 { Grid[16 - j, i].Style.BackColor = Color.Aqua; // 활성화 색 } else { Grid[16 - j, i].Style.BackColor = Color.White; // 비 활성화 색 } } //if (m_VirtualPLC.SocketConnect != null) //{ // if (m_VirtualPLC.SocketConnect[i, 1] == 1) // { // gridControl_View[i + 1, 16].Style.BackColor = Color.Aqua; // } // else // { // gridControl_View[i + 1, 16].Style.BackColor = Color.White; // } //} } Grid[17, i].Value = ((vData[i] & 0xff00) / 256).ToString(); // HIGH Grid[18, i].Value = ((vData[i] & 0x00ff)).ToString(); // LOW Grid[19, i].Value = vData[i].ToString(); // ALL Grid[20, i].Value = ((char)((vData[i] & 0xff00) / 256)).ToString() + ((char)(vData[i] & 0x00ff)).ToString(); // ASCII } }