/// <summary> /// Initialize ELM327COM websocket client. /// </summary> /// <param name="url">URL of the server.</param> /// <param name="codes">Parameter code list</param> /// <returns></returns> private WebSocket initializeELM327COMWSClient(string url, List <OBDIIParameterCode> codes) { if (codes.Count == 0) { return(null); } const WebSocketType WSType = WebSocketType.ELM327; WebSocket wsClient = new WebSocket(url); wsClient.Opened += (sender, e) => { foreach (OBDIIParameterCode code in codes) { // Send read packet both slow and fast readmode. ELM327COMReadJSONFormat sendcode = new ELM327COMReadJSONFormat(); sendcode.code = code.ToString(); sendcode.read_mode = ELM327COMReadJSONFormat.SlowReadModeCode; sendcode.flag = true; wsClient.Send(sendcode.Serialize()); sendcode.read_mode = ELM327COMReadJSONFormat.FastReadModeCode; wsClient.Send(sendcode.Serialize()); } }; wsClient.Error += (sender, e) => wsErrorMsg(WSType.ToString(), e.Exception.ToString(), e.Exception.Message); wsClient.Closed += (sender, e) => wsClosedReconnect(WSType.ToString(), wsClient); wsClient.MessageReceived += (sender, e) => parseVALMessage(e.Message, WSType); return(wsClient); }
protected override void processReceivedJSONMessage(string receivedJSONmode, string message, WebSocketSession session) { var sessionparam = (ELM327WebsocketSessionParam)session.Items["Param"]; switch (receivedJSONmode) { //ELM327 COM all reset case (ResetJSONFormat.ModeCode): sessionparam.reset(); send_response_msg(session, "ELM327COM session RESET. All send parameters are disabled."); break; case (ELM327COMReadJSONFormat.ModeCode): ELM327COMReadJSONFormat msg_obj_elm327read = JsonConvert.DeserializeObject <ELM327COMReadJSONFormat>(message); msg_obj_elm327read.Validate(); OBDIIParameterCode target_code = (OBDIIParameterCode)Enum.Parse(typeof(OBDIIParameterCode), msg_obj_elm327read.code); bool flag = msg_obj_elm327read.flag; if (msg_obj_elm327read.read_mode == ELM327COMReadJSONFormat.FastReadModeCode) { sessionparam.FastSendlist[target_code] = flag; } else { sessionparam.SlowSendlist[target_code] = flag; } send_response_msg(session, "EM327COM session read flag for : " + target_code.ToString() + " read_mode :" + msg_obj_elm327read.read_mode + " set to : " + flag.ToString()); break; case (ELM327SLOWREADIntervalJSONFormat.ModeCode): ELM327SLOWREADIntervalJSONFormat msg_obj_interval = JsonConvert.DeserializeObject <ELM327SLOWREADIntervalJSONFormat>(message); msg_obj_interval.Validate(); elm327com.SlowReadInterval = msg_obj_interval.interval; send_response_msg(session, "ELM327COM slowread interval to : " + msg_obj_interval.interval.ToString()); break; default: throw new JSONFormatsException("Unsuppoted mode property."); } }