Я использую класс GoPiGo3 из GautamV/J4GPG на github. для управления платой GoPiGo3 от DexterIndustries. Код не является официальным от DexterIndustries, это порт Java из библиотеки Python, которую делает DexterIndustries.
Я просто пытаюсь протестировать код и не могу создать экземпляр класса GoPiGo3. Я использую BlueJ, сделал пакет кода GautamV в BlueJ и импортировал класс GoPiGo3 в демонстрационный класс.
Мое исследование наводит меня на мысль, что класс GoPiGo3 разработан как одноэлементный, чтобы гарантировать, что только один экземпляр когда-либо будет создан, и имеет перегруженные конструкторы, обеспечивающие гибкость при его создании.
Вот соответствующий код из класса GoPiGo:
private static GoPiGo3 _instance;
public static GoPiGo3 Instance() throws IOException, FirmwareVersionException{
if (_instance == null) {
_instance = new GoPiGo3(8, true);
}
return _instance;
}
public static GoPiGo3 Instance(int addr) throws IOException, FirmwareVersionException{
if (_instance == null) {
_instance = new GoPiGo3(addr, true);
}
return _instance;
}
public static GoPiGo3 Instance(boolean detect) throws IOException, FirmwareVersionException{
if (_instance == null) {
_instance = new GoPiGo3(8, detect);
}
return _instance;
}
public static GoPiGo3 Instance(int addr, boolean detect) throws IOException, FirmwareVersionException{
if (_instance == null) {
_instance = new GoPiGo3(addr, detect);
}
return _instance;
}
private GoPiGo3(int addr, boolean detect) throws IOException, FirmwareVersionException {
SPIAddress = addr;
spi = SpiFactory.getInstance(SpiChannel.CS1, // Channel 1
500000, // 500 kHz
SpiMode.MODE_0); // Mode 0
if (detect) {
//does detect stuff
}
Ожидаемый результат — инициализированный объект класса GoPiGo3. Код в настоящее время не компилируется. Класс GoPiGo компилируется без ошибок, а класс Demo, который пытается инициализировать класс GoPiGo, — нет.
Мои попытки создания экземпляра
GoPiGo3 platform = new GoPiGo3();
Это приводит к следующей ошибке:
Конструктор GoPiGo3 в классе com.j4gpg3.control.GoPiGo3 не может применяться к заданным типам: требуется: int.boolean
найдено: нет аргументов
причина: фактический и формальный списки аргументов различаются по длине Используемый здесь оператор не может использоваться для типа значения, для которого вы его используете. Вы либо используете здесь неправильный тип, либо неправильный оператор.
Когда я пытаюсь:
GoPiGo3 platform = new GoPiGo3(8,true);
Это приводит к следующей ошибке:
GoPiGo3(int,boolean) имеет частный доступ в com.j4gpg3.control.GoPiGo3