Linux(Ubuntu)でCOMポート(シリアルポート:RS-232C:/dev/ttyS1など)を使う

スポンサーリンク

Linuxはwindowsと違い、COMポートというものが無く、「/dev/tty」みたいに認識されています。そこでまずはUbuntu Softwareでシリアルポートターミナルの「gtkterm」を検索してインストールします。

しかし、インストールしたソフトを起動すると権限がないらしくエラーが発生します。

cannot open /dev/ttyS0: Permission denied

エラーの場所に権限を付与します。

sudo chmod 666 /dev/ttyS0

すると、エラーは解消され接続できました。このPCにはシリアルポートが3つあるので状態を確認します。念のため数字を増やして確認します。

setserial -g /dev/ttyS[0123]

ソフトがないと言われるのでインストールします。

apt install setserial

その後、再度確認すると存在するシリアルポートが表示されました。

再起動するとパーミッションが元に戻るので再度設定する必要があります。このPCにはシリアルポートが3つあるので残りの2つにも適切なパーミッションを付与します。

chmod 666 /dev/ttyS1
chmod 666 /dev/ttyS2

次はWineを使用してWindowsのソフトのTeraTermをインストールして確認します。TeraTermではcom1、com2としてシリアルポートが表示されています。

どのような構成になっているか調べます。便利なことにwineがLinuxのシリアルポートをcomポートとして扱えるようにしてくれているみたいです。ホームディレクトリの下にあるディレクトリで確認できます。

.wine/dosdevices

ttyS0がcom1に対応しており、com0がないせいか番号が1つずれているようです。

linuxでインストールしたgtktermとwineを使用してインストールしたTeraTermでも通信することができました。

タイトルとURLをコピーしました