Exemplo n.º 1
0
        private void DumpMessage(int id, string idStr, byte[] data, int dlc, int flags, long time)
        {
            Kvadblib.Status     status;
            Kvadblib.MessageHnd mh = new Kvadblib.MessageHnd();
            Kvadblib.SignalHnd  sh = new Kvadblib.SignalHnd();

            //Flips the EXT bit if the EXT flag is set
            if ((flags & Canlib.canMSG_EXT) != 0)
            {
                id ^= -2147483648;
            }
            //Find the database message whose id matches the one
            //from the incoming message
            status = Kvadblib.GetMsgById(dbhandle, id, out mh);
            outputBox.AppendText(string.Format("Reading message with id {0}", idStr) + Environment.NewLine);

            //Print the message info
            if (status == Kvadblib.Status.OK)
            {
                string msgName;
                status = Kvadblib.GetMsgName(mh, out msgName);

                outputBox.AppendText(string.Format("Message received: {0}", msgName) + Environment.NewLine);

                int msgId;
                Kvadblib.MESSAGE msgFlags;
                status = Kvadblib.GetMsgId(mh, out msgId, out msgFlags);

                outputBox.AppendText(string.Format("Id: {0}, flags: {1}", msgId, msgFlags) + Environment.NewLine);

                //Iterate through all the signals and print their name, value and unit
                status = Kvadblib.GetFirstSignal(mh, out sh);
                while (status == Kvadblib.Status.OK)
                {
                    string signalname;
                    status = Kvadblib.GetSignalName(sh, out signalname);

                    string unit;
                    status = Kvadblib.GetSignalUnit(sh, out unit);

                    double value;
                    status = Kvadblib.GetSignalValueFloat(sh, out value, data, dlc);

                    outputBox.AppendText(string.Format("Signal - {0}: {1} {2}", signalname, value, unit) + Environment.NewLine);

                    status = Kvadblib.GetNextSignal(mh, out sh);
                }
            }
        }
Exemplo n.º 2
0
        /*
         * Loads the selected message's signals to construct a form
         */
        public List <Signal> LoadSignalsById(int MsgId)
        {
            List <Signal> result = new List <Signal>();

            Kvadblib.MessageHnd mh;

            Kvadblib.Status status = Kvadblib.GetMsgById(dh, MsgId, out mh);
            if (status == Kvadblib.Status.OK)
            {
                Kvadblib.MESSAGE f;
                int dlc;
                msgHandle = mh;
                Kvadblib.GetMsgId(mh, out msgId, out f);
                Kvadblib.GetMsgDlc(mh, out dlc);

                msgId      = ((MsgId & -2147483648) == 0) ? MsgId : MsgId ^ -2147483648;
                msgFlags   = ((MsgId & -2147483648) == 0) ? 0 : Canlib.canMSG_EXT;
                hasMessage = true;
                result     = LoadSignals(dlc);
            }
            return(result);
        }
Exemplo n.º 3
0
        static int Main(string[] args)
        {
            // Dummy initializations to make the compiler happy.
              var dh = new Kvadblib.Hnd();
              var mh = new Kvadblib.MessageHnd();
              var sh = new Kvadblib.SignalHnd();
              var nh = new Kvadblib.NodeHnd();
              bool verbose = false;
              char last = '\0';
              int ival;
              double fval;
              byte[] data = new byte[8];

              DisplayError(Kvadblib.Open(out dh), "Open");

              for(int n = 0; n < args.Length; n++) {
            if (verbose) {
              Console.WriteLine("{0}: {1}", n, args[n]);
            }

            if (args[n][0] == '-') {
              if ((n == 0) && (args[n][1] != 'v')) {
            DisplayError(Kvadblib.Status.Err_Param, "Argument fetch");
              }
              switch (args[n][1]) {
              // File operations
              case 'f':
            DisplayError(Kvadblib.ReadFile(dh, args[n - 1]),
                         "ReadFile");
            break;
              case 'w':
            DisplayError(Kvadblib.WriteFile(dh, args[n - 1]),
                         "WriteFile");
            break;
              case 'c':
            DisplayError(Kvadblib.Create(dh, args[n - 1], ""),
                         "Create");
            createDatabase(dh);
            break;

              // Locate item
              case 'm':
            DisplayError(Kvadblib.GetMsgByName(dh, args[n - 1], out mh),
                         "GetMsgByName");
            break;
              case 'i':
            DisplayError(Kvadblib.GetMsgById(dh, int.Parse(args[n - 1]), out mh),
                         "GetMsgById");
            break;
              case 's':
            DisplayError(Kvadblib.GetSignalByName(mh, args[n - 1], out sh),
                         "GetSignalByName");
            break;
              case 'N':
              case 'n':
            DisplayError(Kvadblib.GetNodeByName(dh, args[n - 1], out nh),
                         "GetNodeByName");
            break;
              case 'a':
            DisplayError(Kvadblib.GetNodeAttributeIntByName(nh, args[n - 1], out ival),
                         "GetNodeAttributeIntByName");
            Console.WriteLine("Node attribute: {1}", ival);
            break;

              // Message data
              case 'z':
            for (int i = 0; i < data.Length; i++) {
              data[i] = 0;
            }
            break;
              case 'h':
            if (((args[n - 1].Length % 2) == 1) || (args[n - 1].Length > 16)) {
              DisplayError(Kvadblib.Status.Err_Param, "Hex input");
            }
            for(int i = 0; i < args[n - 1].Length; i += 2) {
              data[i / 2] = (byte)Convert.ToInt32(args[n - 1].Substring(i, 2), 16);
            }
            break;

              // Signal data
              case 'P':
            DisplayError(Kvadblib.GetSignalValueFloat(sh, out fval, data, 8),
                         "GetSignalValueFloat");
            Console.WriteLine("Physical: {0}", fval);
            break;
              case 'R':
            DisplayError(Kvadblib.GetSignalValueInteger(sh, out ival, data, 8),
                         "GetSignalValueInteger");
            Console.WriteLine("Raw: {0}", ival);
            break;
              case 'p':
            if (!double.TryParse(args[n - 1], out fval)) {
              DisplayError(Kvadblib.Status.Err_Param, "double.TryParse");
            }
            DisplayError(Kvadblib.StoreSignalValuePhys(sh, data, 8, fval),
                         "StoreSignalValuePhys");
            break;
              case 'r':
            if (!int.TryParse(args[n - 1], out ival)) {
              DisplayError(Kvadblib.Status.Err_Param, "int.TryParse");
            }
            DisplayError(Kvadblib.StoreSignalValueRaw(sh, data, 8, ival),
                         "StoreSignalValueRaw");
            break;

              // Delete
              case 'd':
            switch (last) {
            case 'm':
              DisplayError(Kvadblib.DeleteMsg(dh, mh), "DeleteMsg");
              break;
            case 's':
              DisplayError(Kvadblib.DeleteSignal(mh, sh), "DeleteSignal");
              break;
            case 'n':
              DisplayError(Kvadblib.DeleteNode(dh, nh), "DeleteNode");
              break;
            case 'N':
              DisplayError(Kvadblib.RemoveReceiveNodeFromSignal(sh, nh),
                           "RemoveReceiveNodeFromSignal");
              break;
            default:
              DisplayError(Kvadblib.Status.Err_Param, args[n]);
              break;
            }
            break;

              // View
              case 'v':
            switch (last) {
            case 'f':
            case 'c':
              dumpDatabase(dh);
              break;
            case 'm':
              dumpMessage(mh);
              break;
            case 's':
              dumpSignal(sh);
              break;
            case 'n':
              dumpNode(nh);
              break;
            case 'h':
            case 'p':
            case 'r':
              dumpData(data);
              break;
            case '\0':
              verbose = true;
              break;
            default:
              DisplayError(Kvadblib.Status.Err_Param, args[n]);
              break;
            }
            break;
              default:
            DisplayError(Kvadblib.Status.Err_Param, args[n]);
            break;
              }
              last = args[n][1];
            }
              }

              DisplayError(Kvadblib.Close(dh), "Close");

              return 0;
        }