コード例 #1
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public InPort(CSerialPort serial_port, byte port)
 {
     this.serial_port = serial_port;
     this.port = port;
     state = new byte[8];
 }
コード例 #2
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public Details(CSerialPort serial_port)
 {
     this.serial_port = serial_port;
 }
コード例 #3
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public Direct_Commands(CSerialPort serial_port)
 {
     this.serial_port = serial_port;
 }
コード例 #4
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
        public static bool Read(CSerialPort serial_port, byte port, SonarCommands command, ref byte[] reply)
        {
            if (!Read(serial_port, port, command))
                return false;

            return LSRead(serial_port, port, ref reply);
        }
コード例 #5
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
        public static bool Read(CSerialPort serial_port, byte port, SonarCommands command)
        {
            byte[] data = { 0x02, (byte)command };

            switch (command)
            {
                case SonarCommands.Version:
                case SonarCommands.ProductID:
                case SonarCommands.SensorType:
                    return LSWrite(serial_port, port, data, 8);
                case SonarCommands.MeasurementUnits:
                    return LSWrite(serial_port, port, data, 7);
                default:
                    return LSWrite(serial_port, port, data, 1);
            }
        }
コード例 #6
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public static bool LSRead(CSerialPort serial_port, byte port, ref byte[] rx_data)
 {
     byte[] message = new byte[3];
     message[0] = 0x00;
     message[1] = (byte)DirectCommand.LSRead;
     message[2] = port;
     byte[] reply = new byte[20];
     if (!serial_port.Send(message, ref reply))
         return false;
     if (reply.Length != 20)
         return false;
     Array.Resize(ref rx_data, reply[3]);
     Array.Copy(reply, 4, rx_data, 0, reply[3]);
     return true;
 }
コード例 #7
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public static bool LSWrite(CSerialPort serial_port, byte port, byte[] tx_data, byte rx_data_length)
 {
     byte[] message = new byte[tx_data.Length + 5];
     message[0] = 0x00;
     message[1] = (byte)DirectCommand.LSWrite;
     message[2] = port;
     message[3] = (byte)tx_data.Length;
     message[4] = rx_data_length;
     tx_data.CopyTo(message, 5);
     return serial_port.Send(message);
 }
コード例 #8
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public static byte LSGetStatus(CSerialPort serial_port, byte port)
 {
     byte[] message = new byte[3];
     message[0] = 0x00;
     message[1] = (byte)DirectCommand.LSGetStatus;
     message[2] = port;
     byte[] reply = new byte[4];
     if (!serial_port.Send(message, ref reply))
         return 0;
     if (reply.Length != 4)
         return 0;
     return reply[3];
 }
コード例 #9
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public static bool I2CSetByte(CSerialPort serial_port, byte port, byte address, byte data)
 {
     byte[] message = { 0x02, address, data };
     return LSWrite(serial_port, port, message, 0);
 }
コード例 #10
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
        public static bool I2CGetByte(CSerialPort serial_port, byte port, byte address, ref byte data)
        {
            byte[] message = { 0x02, address };
            if (!LSWrite(serial_port, port, message, 1))
                return false;

            byte[] reply = { 0 };

            LSRead(serial_port, port, ref reply);

            foreach (byte value in reply)
                Console.Write("{0:x2} ", value);
            Console.WriteLine("");
            return true;
        }
コード例 #11
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
 public CDeviceInfo(CSerialPort serial_port)
 {
     device_info = new byte[30];
     this.serial_port = serial_port;
 }
コード例 #12
0
ファイル: LSoCS_NXT.cs プロジェクト: gcielniak/RoboJam
        public bool Connect(string port_name)
        {
            serial_port = new CSerialPort();

            DeviceInfo = new CDeviceInfo(serial_port);

            InPort1 = new InPort(serial_port, 0);
            InPort2 = new InPort(serial_port, 1);
            InPort3 = new InPort(serial_port, 2);
            InPort4 = new InPort(serial_port, 3);

            comPort = port_name;

            Info = new Details(serial_port);
            DirectCommands = new Direct_Commands(serial_port);

            if (!serial_port.Connect(port_name))
                return false;

            if (!serial_port.Send(DirectCommand.KeepAlive))
            {
                Disconnect();
                return false;
            }

            connected = true;
            return true;
        }