Пример #1
0
        /// <summary>
        /// Indexierter Zugriff auf die einzelnen Bits des Properties Data.
        /// </summary>
        ///
        /// <param name="bit">das gewünschte Bit [0..3]</param>
        /// <returns>den aktuellen Zustand des Bits</returns>
        public virtual bool this[int bit]
        {
            get
            {
                int data = IOPort.Read(this.Port);
                int mask = (1 << bit);
                return((mask & data) == mask);
            }
            set
            {
                int newData = Data;
                if (value)
                {
                    int mask = (1 << bit);
                    newData |= mask;
                }
                else
                {
                    int mask = ~(1 << bit);
                    newData &= mask;
                }

                IOPort.Write(this.Port, newData);
                this.Data = newData;
            }
        }
Пример #2
0
 /// <summary>
 /// Setzt die beiden Motorencontroller (LM629) zurück,
 /// indem kurz die Reset-Leitung aktiviert wird.
 /// </summary>
 public void Reset()
 {
     IOPort.Write(ioAddress, 0x00);
     Thread.Sleep(5);
     IOPort.Write(ioAddress, 0x80);
     Thread.Sleep(50);
     IOPort.Write(ioAddress, 0x00);
     Thread.Sleep(5);
 }
Пример #3
0
 /// <summary>
 /// Setzt die beiden Motorencontroller (LM629) zurück,
 /// indem kurz die Reset-Leitung aktiviert wird.
 /// </summary>
 public void Reset()
 {
     // ToDo
     IOPort.Write(Constants.IODriveCtrl, 0x00);
     Thread.Sleep(5);
     IOPort.Write(Constants.IODriveCtrl, 0x80);
     Thread.Sleep(5);
     IOPort.Write(Constants.IODriveCtrl, 0x00);
     Thread.Sleep(5);
 }
Пример #4
0
 /// <summary>
 /// Bietet Zugriff auf die einzelnen Eingänge per Index
 /// </summary>
 /// <param name="bit">das gewünschte Bit [0..3]</param>
 /// <returns>den Zustand des entsprechenden Input-Bits.</returns>
 public virtual bool this[int bit]
 {
     get {
         int mask = 1 << bit;
         return((this.Data & mask) == mask);
     }
     set
     {
         IOPort.Write(this.Port, value ? this.Data | (1 << bit) : this.Data & ~(1 << bit));
     }
 }
Пример #5
0
        /// <summary>
        /// Setzt die beiden Motorencontroller (LM629) zurück,
        /// indem kurz die Reset-Leitung aktiviert wird.
        /// </summary>
        public void Reset()
        {
            //DriveState = 0x00;
            //Thread.Sleep(5);
            //DriveState = 0x80;
            //Thread.Sleep(5);
            //DriveState = 0x00;
            //Thread.Sleep(5);


            IOPort.Write(ioAddress, 0x00);
            Thread.Sleep(5);
            IOPort.Write(ioAddress, 0x80);           // Define Home
            Thread.Sleep(50);
            IOPort.Write(ioAddress, 0x00);
            Thread.Sleep(5);
            //
        }
Пример #6
0
        /// <summary>
        /// Setzt den Motorencontroller zurück
        /// </summary>
        public void Reset()
        {
            lock (syncObj)
            {
                Thread.Sleep(20);
                IOPort.Write(ioAddress, RESET);
                Thread.Sleep(20);
                IOPort.Write(ioAddress, DEFINE_HOME);                   // Define Home
                Thread.Sleep(50);
                SetPID(100, 20, 1000, 1000, 1);

                //SetPID(200, 40, 2000, 2000, 1);

                //SetPID(1500, 200, 8000, 1000, 1);
                //SetPID(1000, 100, 4000, 1000, 1);
                //SetPID(int proportional, int integral, int derivative, int integralLimit, int derivativeInterval)

                WriteCmd(DEFINE_HOME);                  // Reset Tick-Counter
            }
        }
Пример #7
0
 /// <summary>
 /// Sendet eine 16 Bit Zahl als Daten an den LM629
 /// </summary>
 /// <param name="val"></param>
 private void WriteShort(int val)
 {
     WaitReady();
     IOPort.Write(ioAddress + 1, (val >> 8) & 0xFF);
     IOPort.Write(ioAddress + 1, val & 0xFF);
 }
Пример #8
0
 /// <summary>
 /// Sendet einen Befehl an den LM629
 /// </summary>
 /// <param name="cmd"></param>
 private void WriteCmd(byte cmd)
 {
     WaitReady();
     IOPort.Write(ioAddress, cmd);
 }
Пример #9
0
 /// <summary>
 /// Initialisiert die Ausgänge auf 0 und schreibt diese Information auch zum Roboter
 /// </summary>
 ///
 /// <param name="port">der IO-Port für den Zugriff auf die Ausgänge</param>
 public DigitalOut(int port)
 {
     Port = port;
     IOPort.Write(Port, 0);
     data = 0;
 }