public bool Save() { if (bActive) { setLocked(false); while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } NewRequest = new cTexNET.cMessage(); NewRequest.Msg = new byte[1]; NewRequest.Msg[0] = cMTDOpcodes.OPC_SAVE; NewRequest.Opcode = cMTDOpcodes.OPC_SAVE; NewRequest.Length = (byte)NewRequest.Msg.Length; RequestStatus = eRequestStatus.eNEW_REQUEST; while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } setLocked(true); while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } if (RequestStatus == eRequestStatus.eSUCCESS) { return(true); } } return(false); }
public bool getI2CAddress(out byte Address) { if (bActive) { while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } NewRequest = new cTexNET.cMessage(); NewRequest.Msg = new byte[1]; NewRequest.Opcode = cMTDOpcodes.OPC_GET_I2C_ADDRESS; NewRequest.Length = (byte)NewRequest.Msg.Length; RequestStatus = eRequestStatus.eNEW_REQUEST; while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } if (RequestStatus != eRequestStatus.eSUCCESS) { Address = 0; return(false); } Address = (byte)NewRequest.Msg[0]; return(true); } Address = 0; return(false); }
public bool getVersion(out string version) { if (bActive) { while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } NewRequest = new cTexNET.cMessage(); NewRequest.Msg = new byte[1]; NewRequest.Opcode = cMTDOpcodes.OPC_GET_VERSION; NewRequest.Length = (byte)NewRequest.Msg.Length; RequestStatus = eRequestStatus.eNEW_REQUEST; while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } if (RequestStatus != eRequestStatus.eSUCCESS) { version = ""; return(false); } version = Encoding.ASCII.GetString(NewRequest.Msg, 0, 10); return(true); } version = ""; return(false); }
public bool getSerialNumber(out string SerialNumber) { if (bActive) { while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } NewRequest = new cTexNET.cMessage(); NewRequest.Msg = new byte[1]; NewRequest.Opcode = cMTDOpcodes.OPC_GET_SERIAL_NUMBER; NewRequest.Length = (byte)NewRequest.Msg.Length; RequestStatus = eRequestStatus.eNEW_REQUEST; while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } if (RequestStatus != eRequestStatus.eSUCCESS) { SerialNumber = ""; return(false); } SerialNumber = Encoding.ASCII.GetString(NewRequest.Msg, 0, 10); return(true); } SerialNumber = ""; return(false); }
public cFlowTEX() { TheSerialPort = new SerialPort(); RequestMState = eRequestMState.eFLOW; bActive = false; RequestStatus = eRequestStatus.eSTANDBY; SerialMode = eSerialMode.eCLOSED; flow = 0; temperature = 0; }
public bool setLocked(bool Locked) { if (bActive) { while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } NewRequest = new cTexNET.cMessage(); byte[] lockMsg; int len; if (Locked) { lockMsg = Encoding.Default.GetBytes("FlowTEXLOCK"); len = 11; } else { lockMsg = Encoding.Default.GetBytes("FlowTEXUNLOCK"); len = 13; } NewRequest.Msg = new byte[len]; Buffer.BlockCopy(lockMsg, 0, NewRequest.Msg, 0, len); if (Locked) { NewRequest.Opcode = cMTDOpcodes.OPC_LOCK; } else { NewRequest.Opcode = cMTDOpcodes.OPC_UNLOCK; } NewRequest.Length = (byte)len; RequestStatus = eRequestStatus.eNEW_REQUEST; while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } if (RequestStatus == eRequestStatus.eSUCCESS) { return(true); } } return(false); }
public bool getStatus(out UInt32 FwChks, out UInt32 FwCalcChks) { if (bActive) { while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } NewRequest = new cTexNET.cMessage(); NewRequest.Msg = new byte[1]; NewRequest.Opcode = cMTDOpcodes.OPC_STATUS; NewRequest.Length = (byte)NewRequest.Msg.Length; RequestStatus = eRequestStatus.eNEW_REQUEST; while ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { Thread.Sleep(10); } if (RequestStatus != eRequestStatus.eSUCCESS) { FwChks = 0; FwCalcChks = 0; } else { FwChks = BitConverter.ToUInt32(NewRequest.Msg, 0); FwCalcChks = BitConverter.ToUInt32(NewRequest.Msg, 4); } return(true); } FwChks = 0; FwCalcChks = 0; return(false); }
private void OnServerRequestComplete(AsyncJSONRequest serverRequest) { Status = eRequestStatus.completed; if (serverRequest.GetRequestState() == AsyncJSONRequest.eRequestState.succeded) { ServerResponse = serverRequest.GetResult(); string responseResult = JsonUtilities.ParseString(ServerResponse, "result"); if (responseResult == "Success") { ResultCode = eResult.success; ResultDetails = ""; } else { // Successfully got response back, but server said no. ResultCode = eResult.failed_server_denied; ResultDetails = "Server Response: " + responseResult; } } else { // Failed to get a response from the server ResultCode = eResult.failed_server_connection; ResultDetails = "Connection Failure: "+serverRequest.GetFailureReason(); } // Notify the caller that the request is completed m_onCompleteCallback(this); m_onCompleteCallback = null; }
private void OnPathComputed(PathComputer pathResult) { // If the path find succeeded, the entity will set the new destination and start walking toward it if (pathResult.ResultCode == PathComputer.eResult.success) { // Tell the server where we would like to go AsyncJSONRequest serverRequest = AsyncJSONRequest.Create(m_requestOwnerObject); Dictionary<string, object> requestPayload = new Dictionary<string, object>(); requestPayload["character_id"] = m_entity.MyCharacterData.character_id; requestPayload["x"] = OriginPortalEntryPoint.x; requestPayload["y"] = OriginPortalEntryPoint.y; requestPayload["z"] = OriginPortalEntryPoint.z; requestPayload["angle"] = pathResult.DestinationFacingAngle; requestPayload["portal_id"] = OriginPortal.portal_id; Status = eRequestStatus.pending_server_response; serverRequest.POST( ServerConstants.characterPortalRequestURL, requestPayload, this.OnServerRequestComplete); } else { Status = eRequestStatus.completed; ResultCode = eResult.failed_path; ResultDetails = "Path Failure Code: " + pathResult.ResultCode.ToString(); // Notify the caller that the request is completed m_onCompleteCallback(this); } }
public void Execute(OnRequestCompleteDelegate onComplete) { if (Status != eRequestStatus.pending_path_find || Status != eRequestStatus.pending_server_response) { m_onCompleteCallback = onComplete; if (Point3d.DistanceSquared(OriginalPosition, OriginPortalEntryPoint) > WITHIN_PORTAL_TOLERANCE_SQUARED) { Status = eRequestStatus.pending_path_find; PathfindingSystem.AddPathRequest( m_entity.CurrentRoomKey, m_entity.Position, OriginPortalEntryPoint, this.OnPathComputed); } else { Status = eRequestStatus.pending_server_response; } } }
void poll() { int data = -1; try { if (TheSerialPort.IsOpen) { do { try { if (TheSerialPort.BytesToRead > 0) { data = TheSerialPort.ReadByte(); } else { data = -1; } } catch { data = -1; } finally { TexNET.messagePoll(data); TexNET.process(); byte[] bufferTX = TexNET.getDataToSend(); if ((bufferTX != null) && (bufferTX.Length > 0)) { TheSerialPort.Write(bufferTX, 0, bufferTX.Length); TexNET.dataSent(); } } }while((data >= 0) && (TheSerialPort.IsOpen)); } } catch { } if ((bError) && (RequestStatus == eRequestStatus.eNEW_REQUEST)) { RequestStatus = eRequestStatus.eFAIL; } if (TheSerialPort.IsOpen) { switch (RequestMState) { default: case eRequestMState.eFLOW: { TexNET.sendRequest(cMTDOpcodes.OPC_READ_FLOW, null); RequestMState = eRequestMState.eFLOW_ANSWER; break; } case eRequestMState.eFLOW_ANSWER: { if (!TexNET.isWaitingAnswer()) { if (TexNET.getAnswer(out byte opcode, out byte[] msg, out int length)) { if ((opcode == cMTDOpcodes.OPC_READ_FLOW) && (length >= 8)) { flow = BitConverter.ToSingle(msg, 0); temperature = BitConverter.ToSingle(msg, 4); bError = false; } } else { if (SerialMode != eSerialMode.eCLOSED) { portOpenRetry = 3; SerialMode = eSerialMode.eSETUP; bError = true; } } if (RequestStatus == eRequestStatus.eNEW_REQUEST) { RequestMState = eRequestMState.eUSER_REQUEST; } else { RequestMState = eRequestMState.eFLOW; } } break; } case eRequestMState.eUSER_REQUEST: { TexNET.sendRequest(NewRequest.Opcode, NewRequest.Msg); RequestStatus = eRequestStatus.eWAITTING; RequestMState = eRequestMState.eUSER_ANSWER; break; } case eRequestMState.eUSER_ANSWER: { if (!TexNET.isWaitingAnswer()) { if (TexNET.getAnswer(out byte opcode, out byte[] msg, out int length)) { if (opcode == NewRequest.Opcode) { NewRequest.Opcode = opcode; NewRequest.Msg = msg; NewRequest.Length = (byte)length; RequestStatus = eRequestStatus.eSUCCESS; bError = false; } else { RequestStatus = eRequestStatus.eFAIL; if (SerialMode != eSerialMode.eCLOSED) { portOpenRetry = 3; SerialMode = eSerialMode.eSETUP; bError = true; } } } else { RequestStatus = eRequestStatus.eFAIL; if (SerialMode != eSerialMode.eCLOSED) { portOpenRetry = 3; SerialMode = eSerialMode.eSETUP; bError = true; } } RequestMState = eRequestMState.eFLOW; } break; } } } }
void task() { while (!TaskEnd) { if (bDisconnect) { SerialMode = eSerialMode.eCLOSED; } switch (SerialMode) { case eSerialMode.eCLOSED: { if (TheSerialPort.IsOpen) { TheSerialPort.Close(); } bError = true; bDisconnect = false; if ((RequestStatus == eRequestStatus.eNEW_REQUEST) || (RequestStatus == eRequestStatus.eWAITTING)) { RequestStatus = eRequestStatus.eFAIL; } break; } case eSerialMode.eSETUP: { if (TheSerialPort.IsOpen) { TheSerialPort.Close(); } if (AutoDetectPort) { try { List <string> Ports = new List <string>(System.IO.Ports.SerialPort.GetPortNames()); if (Ports.Count > 0) { Ports.Sort(); if (portIdx < 0) { portIdx = 0; } else { portIdx++; } if (portIdx >= Ports.Count) { portIdx = 0; } TheSerialPort.PortName = Ports[portIdx]; } else { portIdx = -1; } } catch { portIdx = -1; } } SerialMode = eSerialMode.eOPEN; break; } case eSerialMode.eOPEN: { if (!TheSerialPort.IsOpen) { try { TheSerialPort.BaudRate = 115200; TheSerialPort.Open(); } catch { bError = true; if (portOpenRetry == 0) { portOpenRetry = 3; SerialMode = eSerialMode.eSETUP; } else { portOpenRetry--; } } } else { TheSerialPort.Close(); } if (TheSerialPort.IsOpen) { SerialMode = eSerialMode.eTEXNET; bError = false; } break; } case eSerialMode.eTEXNET: { if (!TheSerialPort.IsOpen) { portOpenRetry = 3; SerialMode = eSerialMode.eSETUP; bError = true; } else { poll(); } break; } } Thread.Sleep(10); } }