private void getMoldNames() { DataDisplayParameter parameter1 = new DataDisplayParameter(); parameter1.MachineCodes = this.machineCodes; parameter1.FieldCodes = SpecialFieldCodes.moldNameCodes; DataDisplayCallback callback1 = new DataDisplayCallback(DisplayMoldName); parameter1.Callback = callback1; if (commonVar.IsThisServer) { MethodMain.showMachineDataFromServer(parameter1); } else { MethodMain.showMachineDataFromClient(parameter1); } }
private void getMachineStateAndDisplay() { string[] stateFieldCodes = SpecialFieldCodes.stateCodes; DataDisplayParameter parameter1 = new DataDisplayParameter(); parameter1.MachineCodes = new string[] { MACHINE_CODE }; parameter1.FieldCodes = stateFieldCodes; DataDisplayCallback callback1 = new DataDisplayCallback(DisplayMachineState); parameter1.Callback = callback1; if (commonVar.IsThisServer) { MethodMain.showMachineDataFromServer(parameter1); } else { MethodMain.showMachineDataFromClient(parameter1); } }
private void getDataAndDisplay() { TileDetail detail = selectedMenu.Tag as TileDetail; BaseControl body = detail.BodyControl; BaseControl right = detail.RightControl; string[] codes1 = body.getFieldCodes(); string[] codes2 = right.getFieldCodes(); DataDisplayParameter parameter1 = new DataDisplayParameter(); parameter1.MachineCodes = new string[] { MACHINE_CODE }; parameter1.FieldCodes = codes1; DataDisplayCallback callback1 = new DataDisplayCallback(DisplayDataBody); parameter1.Callback = callback1; DataDisplayParameter parameter2 = new DataDisplayParameter(); parameter2.MachineCodes = new string[] { MACHINE_CODE }; parameter2.FieldCodes = codes2; DataDisplayCallback callback2 = new DataDisplayCallback(DisplayDataRight); parameter2.Callback = callback2; if (commonVar.IsThisServer) { MethodMain.showMachineDataFromServer(parameter1); MethodMain.showMachineDataFromServer(parameter2); } else { MethodMain.showMachineDataFromClient(parameter1); MethodMain.showMachineDataFromClient(parameter2); } body.BringToFront(); right.BringToFront(); }
public static void showMachineDataFromServer(DataDisplayParameter parameter) { string[] machineCodes = parameter.MachineCodes; string[] fieldCodes = parameter.FieldCodes; DataDisplayCallback displayCallback = parameter.Callback; TcpResponse tcpResponse = new TcpResponse(); MachineResponseData [] responseDatas = new MachineResponseData[machineCodes.Length]; for (int i = 0; i < machineCodes.Length; i++) { responseDatas[i] = new MachineResponseData(); Dictionary <string, string> codesAndvalues = new Dictionary <string, string>(); string machineCode = machineCodes[i]; if (EntireMachineData.ContainsKey(machineCode)) { Dictionary <string, string> singleMachineData = EntireMachineData[machineCode]; for (int j = 0; j < fieldCodes.Length; j++) { if (singleMachineData.ContainsKey(fieldCodes[j])) { codesAndvalues[fieldCodes[j]] = EntireMachineData[machineCode][fieldCodes[j]]; } else { codesAndvalues[fieldCodes[j]] = string.Empty; } } responseDatas[i].MachineCode = machineCode; responseDatas[i].MachineData = codesAndvalues; } responseDatas[i].IsConnected = GetMachineConnectionStateByMachineCode(machineCode); } tcpResponse.MachineResponses = responseDatas; displayCallback(tcpResponse); }
/* * 콜백 메소드 적용 쓰레드 구현중 * */ private void ThreadWorkFromClient(object obj) { DataDisplayParameter parameter = obj as DataDisplayParameter; string[] machineCodes = parameter.MachineCodes; string[] fieldCodes = parameter.FieldCodes; DataDisplayCallback displayCallback = parameter.Callback; this.tcpResponseData = new TcpResponse(); MachineResponseData[] responseDatas = new MachineResponseData[machineCodes.Length]; try { DataResponse = new Dictionary <string, string> [machineCodes.Length]; for (int i = 0; i < machineCodes.Length; i++) { responseDatas[i] = new MachineResponseData(); ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); ClientSocket.Connect(ServerIpEnd); byte[] requestPacket = makeRequestPacket(machineCodes[i], fieldCodes); ClientSocket.Send(requestPacket, SocketFlags.None); byte[] receivedData = new byte[4096]; int dataLength = ClientSocket.Receive(receivedData, SocketFlags.None); if (dataLength > 0) { if (receivedData[0] == 120) { //check Checksum int checksum = 0; for (int j = 0; j < dataLength - 2; j++) { checksum += receivedData[j]; } int packetCheckSum = receivedData[dataLength - 2] * 128 + receivedData[dataLength - 1]; //checksum error 발생 //if (checksum == packetCheckSum) if (true) { //parse machineCode bool isConnnected = receivedData[1] == 1 ? true : false; int machineBytesLength = receivedData[2] * 128 + receivedData[3]; byte[] machineBytes = new byte[machineBytesLength]; Array.Copy(receivedData, 4, machineBytes, 0, machineBytesLength); int fieldBytesLength = receivedData[machineBytesLength + 4] * 128 + receivedData[machineBytesLength + 5]; byte[] fieldBytes = new byte[fieldBytesLength]; Array.Copy(receivedData, machineBytesLength + 6, fieldBytes, 0, fieldBytesLength); //getValues from modbus then send back value data string machineCode = Encoding.UTF8.GetString(machineBytes); string value = Encoding.UTF8.GetString(fieldBytes); string[] values = value.Split('='); Dictionary <string, string> codesAndValues = new Dictionary <string, string>(); for (int j = 0; j < fieldCodes.Length; j++) { codesAndValues[fieldCodes[j]] = values[j]; } responseDatas[i].MachineCode = machineCode; responseDatas[i].MachineData = codesAndValues; responseDatas[i].IsConnected = isConnnected; } } else { responseDatas[i].Message = "수신 데이터가 없습니다"; } } ClientSocket.Disconnect(true); } tcpResponseData.MachineResponses = responseDatas; } catch (Exception ex) { CaughtException = ex; tcpResponseData.Exception = ex; } }