Ejemplo n.º 1
0
        /// <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());
        }
Ejemplo n.º 2
0
 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();
         }
     }
 }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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();
                }
            }
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        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);
                }
            }
        }