Example #1
0
        public static short[] CompassData()
        {
            Log.Module = Module;

            short[] _out_value = new short[] { 0, 0, 0 };
            byte[]  data       = new byte[2];

            if (Server.I2C.Connected == true)
            {
                byte i2c_address_write = (byte)(i2c_address >> 1);
                RoBoIO.i2c0master_StartN(i2c_address_write, (byte)RoBoIO.I2C_WRITE, 2); //write 2 byte
                RoBoIO.i2c0master_WriteN(0x02);                                         //mode register
                RoBoIO.i2c0master_WriteN(0x00);                                         //continue-measureture mode

                Log.WriteLineMessage("Read 3-axis values of Compass...");

                RoBoIO.delay_ms(100);

                RoBoIO.i2c0master_StartN(i2c_address_write, (byte)RoBoIO.I2C_WRITE, 1);
                RoBoIO.i2c0master_SetRestartN((byte)RoBoIO.I2C_READ, 6);
                RoBoIO.i2c0master_WriteN(0x03);                  //Read from data register (Address : 0x03)

                data[1]       = (byte)RoBoIO.i2c0master_ReadN(); //X MSB
                data[0]       = (byte)RoBoIO.i2c0master_ReadN(); //X LSB
                _out_value[0] = System.BitConverter.ToInt16(data, 0);
                data[1]       = (byte)RoBoIO.i2c0master_ReadN(); //X MSB
                data[0]       = (byte)RoBoIO.i2c0master_ReadN(); //X LSB
                _out_value[1] = System.BitConverter.ToInt16(data, 0);
                data[1]       = (byte)RoBoIO.i2c0master_ReadN(); //X MSB
                data[0]       = (byte)RoBoIO.i2c0master_ReadN(); //X LSB
                _out_value[2] = System.BitConverter.ToInt16(data, 0);
            }
            return(_out_value);
        }
Example #2
0
        // Method
        //
        public static bool Init()
        {
            if (!SPI.Connected)
            {
                SPI.Init();
            }

            Log.Module = Module;
            if (!_connected)
            {
                if (RoBoIO.ad7918_InitializeMCH(RoBoIO.AD7918_USECHANNEL0 +
                                                RoBoIO.AD7918_USECHANNEL1 +
                                                RoBoIO.AD7918_USECHANNEL2 +
                                                RoBoIO.AD7918_USECHANNEL3 +
                                                RoBoIO.AD7918_USECHANNEL4 +
                                                RoBoIO.AD7918_USECHANNEL5 +
                                                RoBoIO.AD7918_USECHANNEL6 +
                                                RoBoIO.AD7918_USECHANNEL7,
                                                RoBoIO.AD7918MODE_RANGE_2VREF,
                                                RoBoIO.AD7918MODE_CODING_1023))
                {
                    _connected = true;
                    Log.WriteLineSucces("Opening: AD7918 lib");
                    return(true);
                }
                _connected = false;
                Log.WriteLineFail("Opening: AD7918 lib");
                Log.WriteLineError(string.Format("AD7918 lib fails to open ({0})", RoBoIO_DotNet.RoBoIO.roboio_GetErrMsg()));
                return(false);
            }
            Log.WriteLineMessage("Opening: AD7918 lib...already open");
            return(true);
        }
Example #3
0
        public static string CPU()
        {
            string message = string.Empty;

            switch (RoBoIO.io_CpuID())
            {
            case RoBoIO.CPU_UNSUPPORTED:
                message = "CPU Unsupported";
                break;

            case RoBoIO.CPU_VORTEX86DX_1:
                message = "CPU VORTEX86DX1";
                break;

            case RoBoIO.CPU_VORTEX86DX_2:
                message = "CPU VORTEX86DX2";
                break;

            case RoBoIO.CPU_VORTEX86DX_3:
                message = "CPU VORTEX86DX3";
                break;

            case RoBoIO.CPU_VORTEX86SX:
                message = "CPU VORTEX86SX";
                break;

            default:
                message = "CPU";
                break;
            }
            return(message);
        }
Example #4
0
        public static string Version()
        {
            string message = string.Empty;

            switch (RoBoIO.roboio_GetRBVer())
            {
            case RoBoIO.RB_100:
                message = "RB-100";
                break;

            case RoBoIO.RB_100b1:
                message = "RB-100b1";
                break;

            case RoBoIO.RB_100b2:
                message = "RB-100b2";
                break;

            case RoBoIO.RB_110:
                message = "RB-110";
                break;

            case RoBoIO.RB_111:
                message = "RB-111";
                break;

            default:
                message = "No version";
                break;
            }
            return(message);
        }
Example #5
0
 // Method
 //
 public static bool Close()
 {
     if (_connected)
     {
         RoBoIO.i2c_Close();
         _connected = false;
         Log.WriteLineSucces("Closing: I2C lib");
         return(true);
     }
     else
     {
         Log.WriteLineFail("Closing: I2C lib");
         return(false);
     }
 }
Example #6
0
        //public static bool Init(UInt32 channels)
        public static bool Init()
        {
            Log.Module = Module;
            if (!_connected)
            {
                RoBoIO.roboio_SetRBVer(Server.MainIni.RoboardVersion);
                Log.WriteLineSucces(string.Format("Set Roboard Version: {0}", Server.MainIni.RoboardVersionText));
            }

            if (!_connected)
            {
                for (int i = 0; i < StaticUtilities.numberOfServos; i++)
                {
                    // The servo is KONDO_KRS788 and plugged on
                    RoBoIO.rcservo_SetServo(i, RoBoIO.RCSERVO_KONDO_KRS788);
                    // Set the servo state
                    RoBoIO.rcservo_SetServoParams1(i, 10000, 700, 2300);
                    // The servo has feedback functionality
                    RoBoIO.rcservo_SetServoType(i, RoBoIO.RCSERVO_SV_FEEDBACK, RoBoIO.RCSERVO_FB_SAFEMODE);
                }

                UInt32 channels = 0;
                for (int j = 0; j < StaticUtilities.numberOfServos; j++)
                {
                    if (MainIni.ChannelFunction[j] == 1)
                    {
                        channels += Convert.ToUInt32(Math.Pow(2, j));
                    }
                }
                Log.WriteLineMessage(string.Format("Channels : {0:X}", channels));
                if (RoBoIO.rcservo_Initialize((UInt32)channels) == true)
                {
                    Log.WriteLineSucces(string.Format("Opening: RCSERVO lib (for {0})", servo_name[servo_idx]));
                    RoBoIO.rcservo_EnterPlayMode();
                    RoBoIO.rcservo_EnableMPOS();
                    RoBoIO.rcservo_SetFPS(MainIni.FPS);
                    _connected = true;
                    return(true);
                }
                Log.WriteLineFail(string.Format("Opening: RCSERVO lib (for {0})", servo_name[servo_idx]));
                _connected = false;
                Log.WriteLineError(string.Format("RCSERVO lib fails to initialize ({0})", RoBoIO_DotNet.RoBoIO.roboio_GetErrMsg()));
                return(false);
            }
            Log.WriteLineMessage(string.Format("Opening: RCSERVO lib (for {0})...already open", servo_name[servo_idx]));
            return(true);
        }
Example #7
0
        public static short[] AcceleroData()
        {
            Log.Module = Module;

            short[] _out_value = new short[] { 0, 0, 0 };
            byte[]  data       = new byte[2];

            if (Server.I2C.Connected == true)
            {
                RoBoIO.i2c0master_StartN(i2c_address, (byte)RoBoIO.I2C_WRITE, 2); //write 2 byte
                RoBoIO.i2c0master_WriteN(0x2d);                                   //Power_Control register
                RoBoIO.i2c0master_WriteN(0x28);                                   //link and measure mode

                Log.WriteLineMessage("Read 3-axis values of Accelerometer...");

//                RoBoIO.delay_ms(100);
                RoBoIO.delay_ms(50);

                RoBoIO.i2c0master_StartN(i2c_address, (byte)RoBoIO.I2C_WRITE, 2); //write 2 byte
                RoBoIO.i2c0master_WriteN(0x31);                                   //Data_Format register
                RoBoIO.i2c0master_WriteN(0x08);                                   //Full_Resolution

//                RoBoIO.delay_ms(100);
                RoBoIO.delay_ms(50);

                RoBoIO.i2c0master_StartN(i2c_address, (byte)RoBoIO.I2C_WRITE, 2); //write 2 byte
                RoBoIO.i2c0master_WriteN(0x38);                                   //FIFO_Control register
                RoBoIO.i2c0master_WriteN(0x00);                                   //bypass mode

//                RoBoIO.delay_ms(100);
                RoBoIO.delay_ms(50);

                RoBoIO.i2c0master_StartN(i2c_address, (byte)RoBoIO.I2C_WRITE, 1);
                RoBoIO.i2c0master_SetRestartN((byte)RoBoIO.I2C_READ, 6);
                RoBoIO.i2c0master_WriteN(0x32);                  //Read from X register (Address : 0x32)
                data[0]       = (byte)RoBoIO.i2c0master_ReadN(); //X LSB
                data[1]       = (byte)RoBoIO.i2c0master_ReadN(); //X MSB
                _out_value[0] = System.BitConverter.ToInt16(data, 0);
                data[0]       = (byte)RoBoIO.i2c0master_ReadN(); //X LSB
                data[1]       = (byte)RoBoIO.i2c0master_ReadN(); //X MSB
                _out_value[1] = System.BitConverter.ToInt16(data, 0);
                data[0]       = (byte)RoBoIO.i2c0master_ReadN(); //X LSB
                data[1]       = (byte)RoBoIO.i2c0master_ReadN(); //X MSB
                _out_value[2] = System.BitConverter.ToInt16(data, 0);
            }
            return(_out_value);
        }
Example #8
0
 // Method
 //
 public static bool Init()
 {
     Log.Module = Module;
     if (!_connected)
     {
         if (RoBoIO.spi_Initialize(RoBoIO.SPICLK_21400KHZ))
         {
             _connected = true;
             Log.WriteLineSucces("Opening: SPI lib");
             return(true);
         }
         _connected = false;
         Log.WriteLineFail("Opening: SPI lib");
         Log.WriteLineError(string.Format("SPI lib fails to initialize ({0})", RoBoIO_DotNet.RoBoIO.roboio_GetErrMsg()));
         return(false);
     }
     Log.WriteLineMessage("Opening: SPI lib...already open");
     return(true);
 }
Example #9
0
 // Method
 //
 public static bool Init()
 {
     Log.Module = Module;
     if (!_connected)
     {
         if (RoBoIO.i2c_Initialize(RoBoIO.I2CIRQ_DISABLE))
         {
             _connected = true;
             RoBoIO.i2c0_SetSpeed(RoBoIO.I2CMODE_FAST, i2c_clock);
             Log.WriteLineSucces("Opening: I2C lib");
             return(true);
         }
         _connected = false;
         Log.WriteLineFail("Opening: I2C lib");
         Log.WriteLineError(string.Format("I2C lib fails to initialize ({0})", RoBoIO_DotNet.RoBoIO.roboio_GetErrMsg()));
         return(false);
     }
     Log.WriteLineMessage("Opening: I2C lib...already open");
     return(true);
 }
Example #10
0
        public static short[] GyroData()
        {
            Log.Module = Module;

            short[] _out_value = new short[] { 0, 0, 0, 0, 0, 0, 0, 0 };

            if (Server.I2C.Connected == true)
            {
                RoBoIO.i2c0master_StartN(i2c_address, (byte)RoBoIO.I2C_WRITE, 2); //AS pin is high
                RoBoIO.i2c0master_WriteN(0x03);                                   //cycle time register
                RoBoIO.i2c0master_WriteN(0x01);                                   //convert time

                Log.WriteLineMessage("Read 3-axis values of Gyro and chip temperature...");
                for (int i = 0; i < 8; i++)
                {
                    high = (byte)((0xF0 & (0x01 << i)) >> 4);                         //CH5 ~ CH8
                    low  = (byte)((0x0F & (0x01 << i)) << 4);                         //CH1 ~ CH4

                    RoBoIO.i2c0master_StartN(i2c_address, (byte)RoBoIO.I2C_WRITE, 3); //write 3 bytes
                    RoBoIO.i2c0master_WriteN(0x02);                                   //configuration register
                    RoBoIO.i2c0master_WriteN(high);
                    RoBoIO.i2c0master_WriteN((byte)(low + 0x0C));                     //0x0c : FLTR = 1,ALERT/EN = 1
                    RoBoIO.delay_ms(10);

                    RoBoIO.i2c0master_StartN(i2c_address, (byte)RoBoIO.I2C_WRITE, 1);
                    RoBoIO.i2c0master_SetRestartN((byte)RoBoIO.I2C_READ, 2);
                    RoBoIO.i2c0master_WriteN(0x00); //Read data form Conversion Result Register

                    //Data : 12bits
                    d1 = (byte)RoBoIO.i2c0master_ReadN();
                    d2 = (byte)RoBoIO.i2c0master_ReadN();

                    _out_value[((d1 & 0x70) >> 4)] = ((short)((d1 & 0x0f) * 256 + d2));
                }
            }
            return(_out_value);
        }
Example #11
0
 // Method
 //
 public static void Close()
 {
     RoBoIO.spi_Close();
     _connected = false;
     Log.WriteLineSucces("Closing: SPI lib");
 }
Example #12
0
 // Method
 //
 public static void Close()
 {
     RoBoIO.ad7918_CloseMCH();
     _connected = false;
     Log.WriteLineSucces("Closing AD7918 lib");
 }
Example #13
0
 public static void Close()
 {
     RoBoIO.rcservo_Close();
     _connected = false;
     Log.WriteLineSucces("Closing RCSERVO lib");
 }