0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ardublock を Docker でビルドする ( openjdk11 で Ardublock )

Last updated at Posted at 2022-11-13

ArduBlock は Arduino IDE で使えるブロック開発環境プラグイン。
image

Javaで記述される。これのビルドの記事を以前書いたが
「ArduBlock のビルド」
https://qiita.com/nanbuwks/items/dde4270eade41f8b75ec

古くなったので、いまどきのやりかたでビルド環境を試してみる。
Docker で Ubuntu22.04 をロードし、そこで作成してみます。
なお、Docker使わない場合でもこの記事の方法をなぞればビルドできるはず。

( 2022/11/17追記: Docker 使わない Ubuntu20.04 環境で同じ流れでビルド成功しました )

環境

  • 母艦 Ubuntu 22.04
  • Docker version 20.10.17, build 100c701 で Ubuntu22.04 コンテナ稼働
  • コンテナ中:
  • Ubuntu22.04
  • openjdk 11.0.17 2022-10-18
  • Ardublock

Docker でコンテナを用意

Docker は以下のようにしてインストールしています。
「Ubuntu20.04 に Docker を導入する (Also Ubuntu 22.04)」
https://qiita.com/nanbuwks/items/0ba1d13b3cd27e5c6426

ubuntu22.04 のイメージを用います。

$ docker pull ubuntu:22.04

母艦の /home/nanbuwks/Downloads/ardublock をコンテナ中の /mnt で見えるようにします。

$ docker run -v /home/nanbuwks/Downloads/ardublock:/mnt -it -d --name ardublock2204 ubuntu:22.04

実行

$ docker exec -it ardublock2204 /bin/bash

必要なソフトウェアをインストール

# apt update
# apt install tzdata

タイムゾーンを設定しておきます。

# apt install maven git

インストールされたバージョンを調べる

# mvn --version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.17, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "5.15.0-52-generic", arch: "amd64", family: "unix"
# java --version
openjdk 11.0.17 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)

Ardublock をクローン

作業場所を作り、移動します。

# cd /mnt
# mkdir ardublock_work_20221113
# cd ardublock_work_20221113/

レポジトリをダウンロード

# git clone https://github.com/taweili/ardublock.git
# cd ardublock

openblock をインストールする

# ./install_openblocks

としてインストールしておきます。

ドキュメント

ArduBlock
======

ArduBlock is a Block Programming Language for Arduino. The language and functions model closely to [Arduino Language Reference](http://arduino.cc/en/Reference/HomePage)

Installation
----
The project is managed by Maven. After checking out the source for the first time, one should run the following to install Arduino's pde.jar into the local repository. 

	$ mvn validate

Usage
----

	$ mvn exec:java -Dexec.mainClass="com.ardublock.Main"

Development
----
Change the /src/main/resources/com/ardublock/block/ardublock_def.xml to add new blocks to ArduBlock

	$ mvn clean package

	$ mvn compile exec:java -Dexec.mainClass="com.ardublock.Main"

The Visual Block environment should show up. Happy Hacking! ;) 

Deploy
----
Edit code of ardublock

	$ mvn clean package

copy the target/ardublock-all.jar to Arduino\tools\ArduBlockTool\tool


とあります。

これに従い、まず以下のコマンドを実行しておきます。

# mvn validate

pom.xml を編集

# mvn compile

すると、


[ERROR] error: Source option 5 is no longer supported. Use 6 or later.
[ERROR] error: Target option 1.5 is no longer supported. Use 1.6 or later.

と出るので

                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <version>2.3.2</version>
                                <configuration>
                                        <source>1.5</source>
                                        <target>1.5</target>
                                </configuration>
                        </plugin>

の1.5 を 1.6に変更しておきます。

ソースの変更

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[18,6] error: unmappable character (0xE9) for encoding UTF-8
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[18,10] error: unmappable character (0xE9) for encoding UTF-8
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[18,27] error: unmappable character (0xE8) for encoding UTF-8

と出るので、該当のlcdkeypad.javaを見てみます。

                // r�cup�ration des param�tres du module, ici le message plac� en rang 0
                // on �crit donc le code �  g�n�rer
                TranslatorBlock translatorBlock = this.getRequiredTranslatorBlockAtSocket(0, "lcd.print( ", " );\n");
                // cr�ation du texte de code correspondant
                translator.addHeaderFile("LiquidCrystal.h");

このコメント中に文字コードがヘンなキャラクタが入っているので、該当コメント行を消しておきます。

(2023/03/31追記)
該当箇所は vim で見ると読めました。フランス語だったようです。

                // récupération des paramètres du module, ici le message placé en rang 0
                // on écrit donc le code à  générer
                TranslatorBlock translatorBlock = this.getRequiredTranslatorBlockAtSocket(0, "lcd.print( ", " );\n");
                // création du texte de code correspondant

以下のように差し替えることにしました。

                // retrieve the parameters of the module, here the message placed in row 0
                // write the code to generate
                TranslatorBlock translatorBlock = this.getRequiredTranslatorBlockAtSocket(0, "lcd.print( ", " );\n");
                // create the corresponding code text

再度 pom.xml の編集

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[18,6] error: unmappable character (0xE9) for encoding UTF-8
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[18,10] error: unmappable character (0xE9) for encoding UTF-8
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[18,27] error: unmappable character (0xE8) for encoding UTF-8
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[18,63] error: unmappable character (0xE9) for encoding UTF-8
[ERROR] /mnt/ardublock_work_20221113/ardublock/src/main/java/com/ardublock/translator/block/dfrobot/lcdkeypad.java:[19,8] error: unmappable character (0xE9) for encoding UTF-8

と出るので、

    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

および

                <repository>
                        <id>central</id>
                        <url>http://repo1.maven.org/maven2</url>
                </repository>

の5箇所の http を https に変更します。

ビルドする

コンパイルが通るようになったので、


# mvn package

とすると target/ardublock-all.jar が生成されるので、母艦で実行します。

$ java -jar ardublock-all.jar

image.png

成功しました。

トラブルシューティング

    [ERROR] Failed to execute goal on project ardublock: Could not resolve dependencies for project org.ardublock:ardublock:jar:0.1.0-SNAPSHOT: Could not find artifact arduino:arduino-core:jar:1.8.5 in central (https://repo1.maven.org/maven2) -> [Help 1]

が出るときは、mvn validate を行う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?