/// <summary> /// Translates an RP1210 error code into a textual description of the error /// </summary> /// <param name="err_code"></param> /// <param name="fpchMessage"></param> /// <param name="nClientID"></param> /// <returns></returns> public string RP1210_GetErrorMsg(RP1210_Returns err_code) { StringBuilder fpchMessage = new StringBuilder(); pRP1210_GetErrorMsg((short)err_code, fpchMessage); return(fpchMessage.ToString()); }
public void SendData(J1587Message msgToSend) { if (J1587inst != null) { try { byte[] txArray = msgToSend.ToArray(); RP1210_Returns returnTemp = J1939inst.RP1210_SendMessage(txArray, (short)txArray.Length, 0, 0); // Status Event //txtStatus.Text = returnTemp.ToString(); } catch (Exception err) { // Status Event here //txtStatus.Text = err.Message.ToString(); } } }
/// <summary> /// Reads a message from the API DLL. /// </summary> /// <param name="nClientID"></param> /// <param name="fpchAPIMessage"></param> /// <param name="nBufferSize"></param> /// <param name="nBlockOnSend"></param> /// <returns></returns> public byte[] RP1210_ReadMessage(short nBlockOnSend) { byte[] fpchAPIMessage = new byte[MaxBufferSize]; byte[] returnMessage; RP1210_Returns returnValue = (RP1210_Returns)pRP1210_ReadMessage(_connectedDevice, fpchAPIMessage, MaxBufferSize, nBlockOnSend); if ((UInt16)returnValue > MaxBufferSize) { string errorReturn = "ReadMessage Failed: " + RP1210_GetErrorMsg(returnValue); log.Warn(errorReturn); throw new Exception(errorReturn); } else { returnMessage = new byte[(short)returnValue]; Array.Copy(fpchAPIMessage, returnMessage, (short)returnValue); } return(returnMessage); }
public void SendData(J1939Message msgToSend) { if (J1939inst != null) { try { byte[] txArray = RP121032.EncodeJ1939Message(msgToSend); UInt32 canID = (UInt32)((msgToSend.Priority << 26) + (msgToSend.PGN << 8) + msgToSend.SourceAddress); string txline = "H TXJ1939, " + msgToSend.TimeStamp + ", " + canID.ToString("X") + ", " + zcrc.ByteArrayToHexString(msgToSend.data); txtTX.AppendText(txline + Environment.NewLine); RP1210_Returns returnTemp = J1939inst.RP1210_SendMessage(txArray, (short)txArray.Length, 0, 0); txtStatus.Text = returnTemp.ToString(); } catch (Exception err) { txtStatus.Text = err.Message.ToString(); } } }
/// <summary> /// Newer more comprehensive version information command. This command is now preferred over the RP1210_ReadVersion call /// </summary> /// <param name="nClientID"></param> /// <param name="fpchAPIVersionInfo"></param> /// <param name="fpchDLLVersionInfo"></param> /// <param name="fpchFWVersionInfo"></param> /// <returns></returns> public string[] RP1210_ReadDetailedVersion() { string[] returnValue = new string[3]; StringBuilder fpchAPIVersionInfo = new StringBuilder(); StringBuilder fpchDLLVersionInfo = new StringBuilder(); StringBuilder fpchFWVersionInfo = new StringBuilder(); RP1210_Returns functionReturn = (RP1210_Returns)pRP1210_ReadDetailedVersion(_connectedDevice, fpchAPIVersionInfo, fpchDLLVersionInfo, fpchFWVersionInfo); if ((short)functionReturn > 127) { string errorReturn = "ReadDetailedVersion Failed: " + RP1210_GetErrorMsg((RP1210_Returns)functionReturn); log.Warn(errorReturn); throw new Exception(errorReturn); } returnValue[0] = fpchDLLVersionInfo.ToString(); returnValue[1] = fpchAPIVersionInfo.ToString(); returnValue[2] = fpchFWVersionInfo.ToString(); return(returnValue); }
private void tmrJ1939_Tick(object sender, EventArgs e) { if (J1939inst != null) { try { while (true) { byte[] response = J1939inst.RP1210_ReadMessage(0); DataRecievedArgs EventArgs = new DataRecievedArgs(); EventArgs.J1939 = true; rp1210.J1939Message message = RP121032.DecodeJ1939Message(response); EventArgs.RecievedJ1939Message = message; string datastring = zcrc.ByteArrayToHexString(message.data); string displayString = "RX J1939 - " + message.TimeStamp + " PGN: " + message.PGN + " SA: " + message.SourceAddress; displayString += " DA: " + message.DestinationAddress + " Pri: " + message.Priority; displayString += " Data: " + datastring + Environment.NewLine; txtRX.AppendText(displayString); datastring = datastring.Remove(datastring.Length - 1, 1); datastring = datastring.Replace(" ", ", "); if (chkLogToFile.Checked) { UInt32 canID = (UInt32)((message.Priority << 26) + (message.PGN << 8) + message.SourceAddress); RxLogger.WriteLine("H RXJ1939, {0:d}, {1:x}, {2}", message.TimeStamp, canID, datastring); } OnDataRecieved(EventArgs); } } catch (Exception err) { txtStatus.Text = err.Message; } if (TxLogger != null) { while (((timeKeeper == null) || (timeKeeper.ElapsedMilliseconds > nextMessageTimeMs)) && !TxLogger.EndOfStream) { string txline = TxLogger.ReadLine(); txtTX.AppendText(txline + Environment.NewLine); txline = txline.Replace(" ", ""); string[] rawdata = txline.Split(new char[] { ',' }); if (!TimeOffsetsCalculated) { TxLogTimeOffsetMs = Convert.ToUInt32(rawdata[1]); timeKeeper = Stopwatch.StartNew(); TimeOffsetsCalculated = true; } else { nextMessageTimeMs = Convert.ToUInt32(rawdata[1]) - TxLogTimeOffsetMs; } if ((rawdata[0] == "HRXJ1939") && (J1939inst != null)) { nextJ1939Message = new J1939Message(); nextJ1939Message.TimeStamp = Convert.ToUInt32(rawdata[1]); nextJ1939Message.SourceAddress = (short)(Convert.ToInt32(rawdata[2], 16) & 0x00FF); nextJ1939Message.Priority = (byte)(Convert.ToInt32(rawdata[2], 16) >> 26); nextJ1939Message.PGN = (UInt16)((Convert.ToInt32(rawdata[2], 16) >> 8) & 0xFFFF); nextJ1939Message.DestinationAddress = 0xFF; string[] strArrayTemp = new string[rawdata.Length - 3]; Array.Copy(rawdata, 3, strArrayTemp, 0, rawdata.Length - 3); nextJ1939Message.data = Array.ConvertAll(strArrayTemp, x => Convert.ToByte(x, 16)); nextJ1939Message.dataLength = (UInt16)(rawdata.Length - 3); if (timeKeeper.ElapsedMilliseconds > nextMessageTimeMs) { byte[] txArray = RP121032.EncodeJ1939Message(nextJ1939Message); RP1210_Returns returnTemp = J1939inst.RP1210_SendMessage(txArray, (short)txArray.Length, 0, 0); txtStatus.Text = returnTemp.ToString(); } } else if ((rawdata[0] == "HRXJ1708") && (J1587inst != null)) { nextJ1587Message = new J1587Message(); nextJ1587Message.TimeStamp = Convert.ToUInt32(rawdata[1]); nextJ1587Message.Priority = 8; nextJ1587Message.MID = Convert.ToByte(rawdata[2], 16); nextJ1587Message.PID = Convert.ToByte(rawdata[3], 16); string[] strArrayTemp = new string[rawdata.Length - 4]; Array.Copy(rawdata, 3, strArrayTemp, 0, rawdata.Length - 4); nextJ1587Message.data = Array.ConvertAll(strArrayTemp, x => Convert.ToByte(x, 16)); nextJ1587Message.dataLength = (UInt16)(rawdata.Length - 4); if (timeKeeper.ElapsedMilliseconds > nextMessageTimeMs) { byte[] txArray = nextJ1587Message.ToArray(); RP1210_Returns returnTemp = J1587inst.RP1210_SendMessage(txArray, (short)(txArray.Length - 1), 0, 0); txtStatus.Text = returnTemp.ToString(); } } } } } if (J1587inst != null) { byte[] response = J1587inst.RP1210_ReadMessage(0); rp1210.J1587Message message = RP121032.DecodeJ1587Message(response); string datastring = zcrc.ByteArrayToHexString(message.data); string displayString = "RX J1587 - " + message.TimeStamp + " MID: " + message.MID + " PID: " + message.PID; displayString += " Data: " + zcrc.ByteArrayToHexString(message.data) + Environment.NewLine; txtRX.AppendText(displayString); datastring = datastring.Remove(datastring.Length - 1, 1); datastring = datastring.Replace(" ", ", "); if (chkLogToFile.Checked) { RxLogger.WriteLine("H RXJ1708, {0:d}, {1:x2}, {2:x2}, {3}", message.TimeStamp, message.MID, message.PID, datastring); } } }