お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2007-07-13 11:03:18

mumu
メンバ
登録日: 2007-04-04

シリアルポートを設定するには?

お世話になっております。
私は機械工作関係の仕事をしております。
数年前、javaのシリアル通信用の拡張API(http://users.frii.com/jarvi/rxtx/)を見つけたのをきっかけに、javaでPCとNC放電加工機との間でNCコードをやりとりするためのアプリケーションを自作して使っておりました。

私の使っているノートPC(東芝 DynaBook Satellite PS1801AP568A)ではWindows XPとPlamo linux4.01をデュアルインストールしていましたが、先日Plamoをやめてubuntu7.04をインストールしました。
ubuntuはとても快適なのですが、PlamoとXPでは問題なく使えていた自作シリアル通信プログラムがubuntuで動作しないことに気付きました。

よくよく調べてみるとシリアル通信用のポートが取得できないようで、どうもシリアルポートの設定がされてないようです。setserialパッケージをインストールしてみましたが使い方がどうも分かりません。
どなたか詳しい方がいましたらご教授いただけないでしょうか?
よろしくお願いいたします。


参考までに使用可能なポート名を表示するプログラム(showPortList.java)を載せておきます。

コード:

import    java.util.*;
import    java.io.*;

import    gnu.io.*;

public class showPortList
{
    public static void main(String[] args)
    {
        System.out.println("==使用可能なポート==");
    
        Enumeration    list
            = CommPortIdentifier.getPortIdentifiers();
        
        while(list.hasMoreElements())
        {
            CommPortIdentifier PID
                = (CommPortIdentifier)list.nextElement();
            System.out.println("port="+PID.getName());
        }
    }
}

コンパイルおよび実行にはlibrxtx-javaをインストールする必要があります。

sudo apt-get install librxtx-java

でインストールできます。

コンパイルは

javac -classpath /usr/share/java/RXTXcomm.jar showPortList.java

実行は

java  -Djava.library.path=/usr/lib  -classpath .:/usr/share/java/RXTXcomm.jar showPortList

ちなみに別のubuntuマシーンで実行すると

==使用可能なポート==
Experimental:  JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7
port=/dev/ttyS0

となり、ちゃんとポートが取得できてます。

オフライン

 

#2 2007-07-13 13:13:18

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: シリアルポートを設定するには?

$ java  -Djava.library.path=/usr/lib  -classpath .:/usr/share/java/RXTXcomm.jar showPortList
==使用可能なポート==
Experimental:  JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7
port=/dev/ttyS0

javaは、全く解かりませんが、問題なさそうです
環境
ハード: マザーボード Asus P5B-E Plus
OS: Ubuntu7.04最新アップデート適用済み
 $ uname -r
 2.6.20-16-generic
Java:  $ sudo apt-get install sun-java5-jdk librxtx-java
Bios: comポートdisableでしたので、再起動しenableにし、ポートアドレス設定

オフライン

 

#3 2007-07-13 13:30:58

hito
管理者
登録日: 2007-03-18

Re: シリアルポートを設定するには?

setserial以前で転んでいるような気がします。

それらしいことが何も分からない可能性もあるので申し訳ないのですが、
以下でシリアル周りのハードウェア認識を見るとどうなっているでしょうか?

$ cat /var/log/dmesg | grep ttyS
$ sudo lspci -vv

オフライン

 

#4 2007-07-13 15:53:17

mumu
メンバ
登録日: 2007-04-04

Re: シリアルポートを設定するには?

siさん、hitoさんレスありがとうございます。
とりあえずBIOSの設定は弄ってないので大丈夫な筈だと思います(自信ないですが…)。
別のマシンではsetserialとかインストールしてなくても全然問題ないようなので、hitoさんの仰るとおりsetserial以前の問題なのかもしれません。
dmesg、lspci、setserialの出力結果は以下の通りです。

$ dmesg | grep ttyS
[   21.133181] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[   21.135614] 00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[   81.976000] ttyS0: LSR safety check engaged!
[   81.976000] ttyS0: LSR safety check engaged!
[   81.980000] ttyS0: LSR safety check engaged!
[   91.796000] ttyS0: LSR safety check engaged!
[ 3522.424000] ttyS0: LSR safety check engaged!
[ 3522.516000] ttyS0: LSR safety check engaged!
[ 3618.948000] ttyS0: LSR safety check engaged!
[ 3619.148000] ttyS0: LSR safety check engaged!
[ 3660.960000] ttyS0: LSR safety check engaged!
[ 3661.156000] ttyS0: LSR safety check engaged!
[ 3673.832000] ttyS0: LSR safety check engaged!
[ 3674.092000] ttyS0: LSR safety check engaged!
[ 4146.920000] ttyS0: LSR safety check engaged!
[ 4147.156000] ttyS0: LSR safety check engaged!
[ 4431.108000] ttyS0: LSR safety check engaged!
[ 4431.308000] ttyS0: LSR safety check engaged!
[ 7191.100000] ttyS0: LSR safety check engaged!
[ 7191.172000] ttyS0: LSR safety check engaged!
[ 7723.752000] ttyS0: LSR safety check engaged!
[ 7724.004000] ttyS0: LSR safety check engaged!
[12828.264000] ttyS0: LSR safety check engaged!
[12857.336000] ttyS0: LSR safety check engaged!
[13081.148000] ttyS0: LSR safety check engaged!
[16227.332000] ttyS0: LSR safety check engaged!
[16227.528000] ttyS0: LSR safety check engaged!
[16254.520000] ttyS0: LSR safety check engaged!
[16254.628000] ttyS0: LSR safety check engaged!
[24194.772000] ttyS0: LSR safety check engaged!

$ sudo lspci -vv
00:00.0 Host bridge: ALi Corporation M1644/M1644T Northbridge+Trident (rev 01)
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR+
        Latency: 0
        Region 0: Memory at f0000000 (32-bit, prefetchable) [size=64M]
        Capabilities: [b0] AGP version 2.0
                Status: RQ=28 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>
        Capabilities: [a4] Power Management version 1
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:01.0 PCI bridge: ALi Corporation PCI to AGP Controller (prog-if 00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: f7f00000-fdffffff
        Prefetchable memory behind bridge: 30000000-300fffff
        Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR+
        BridgeCtl: Parity- SERR- NoISA- VGA+ MAbort- >Reset- FastB2B-

00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
        Subsystem: Toshiba America Info Systems Unknown device 0004
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (20000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at f7eff000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [60] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:04.0 IDE interface: ALi Corporation M5229 IDE (rev c3) (prog-if f0)
        Subsystem: Toshiba America Info Systems Unknown device 0004
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (500ns min, 1000ns max)
        Interrupt: pin A routed to IRQ 255
        Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [disabled] [size=8]
        Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [disabled] [size=1]
        Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [disabled] [size=8]
        Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [disabled] [size=1]
        Region 4: I/O ports at eff0 [size=16]
        Capabilities: [60] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:06.0 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link Controller Audio Device (rev 01)
        Subsystem: Toshiba America Info Systems Unknown device 0001
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR+ <PERR+
        Latency: 64 (500ns min, 6000ns max)
        Interrupt: pin A routed to IRQ 11
        Region 0: I/O ports at 1000 [size=256]
        Region 1: Memory at 30100000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:07.0 ISA bridge: ALi Corporation M1533/M1535 PCI to ISA Bridge [Aladdin IV/V/V+]
        Subsystem: Toshiba America Info Systems Unknown device 0004
        Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Capabilities: [a0] Power Management version 1
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:08.0 Bridge: ALi Corporation M7101 Power Management Controller [PMU]
        Subsystem: Toshiba America Info Systems Unknown device 0001
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-

00:0a.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
        Subsystem: Toshiba America Info Systems 8255x-based Ethernet Adapter (10/100)
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (2000ns min, 14000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at f7efe000 (32-bit, non-prefetchable) [size=4K]
        Region 1: I/O ports at ef40 [size=64]
        Region 2: Memory at f7ec0000 (32-bit, non-prefetchable) [size=128K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=2 PME-

00:11.0 CardBus bridge: Toshiba America Info Systems ToPIC100 PCI to Cardbus Bridge with ZV Support (rev 32)
        Subsystem: Toshiba America Info Systems Unknown device 0001
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 168
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at 30101000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=02, subordinate=05, sec-latency=0
        Memory window 0: 20000000-23fff000 (prefetchable)
        Memory window 1: 24000000-27fff000
        I/O window 0: 00001400-000014ff
        I/O window 1: 00001800-000018ff
        BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt+ PostWrite+
        16-bit legacy interface ports at 0001

00:11.1 CardBus bridge: Toshiba America Info Systems ToPIC100 PCI to Cardbus Bridge with ZV Support (rev 32)
        Subsystem: Toshiba America Info Systems Unknown device 0001
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 168
        Interrupt: pin B routed to IRQ 11
        Region 0: Memory at 30102000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=06, subordinate=09, sec-latency=0
        Memory window 0: 28000000-2bfff000 (prefetchable)
        Memory window 1: 2c000000-2ffff000
        I/O window 0: 00001c00-00001cff
        I/O window 1: 00002000-000020ff
        BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt+ PostWrite+
        16-bit legacy interface ports at 0001

01:00.0 VGA compatible controller: Trident Microsystems CyberBlade XPAi1 (rev 82) (prog-if 00 [VGA])
        Subsystem: Toshiba America Info Systems Unknown device 0001
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 8
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at fc000000 (32-bit, non-prefetchable) [size=32M]
        Region 1: Memory at fbc00000 (32-bit, non-prefetchable) [size=4M]
        Region 2: Memory at f8000000 (32-bit, non-prefetchable) [size=32M]
        Region 3: Memory at f7ff8000 (32-bit, non-prefetchable) [size=32K]
        [virtual] Expansion ROM at 30000000 [disabled] [size=64K]
        Capabilities: [80] AGP version 2.0
                Status: RQ=33 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>
        Capabilities: [90] Power Management version 2
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

$ setserial -g /dev/ttyS*
/dev/ttyS0: No such device
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

ちなみに、恥ずかしながら私のレベルは、「IRQって?? アイルランド解放戦線?」という程度なのでこの結果を見ても/dev/ttyS0が×な事位しか分からず、どうすればいいかまったく分からないです。すみません。アドバイスよろしくお願いいたします。

最後の編集者: mumu (2007-07-13 16:06:33)

オフライン

 

#5 2007-07-13 16:40:58

hito
管理者
登録日: 2007-03-18

Re: シリアルポートを設定するには?

たぶん、
https://answers.launchpad.net/ubuntu/+question/2622
と同じ問題です。

Kernelレベルで何かを踏んでいるのですが、それが何かはわかりません。

簡単には直らない問題なのですが、BIOSで不要なパラレルポートとか
Serial2とかを無効にすると解決したりしないでしょうか(Serial1は
有効のまま)。

オフライン

 

#6 2007-07-13 18:42:39

mumu
メンバ
登録日: 2007-04-04

Re: シリアルポートを設定するには?

hitoさん、情報いろいろありがとうございます。
私のノートPCではSerial2というのはありませんが、Pararelを無効にしてみたり、
SerialをCOM2、COM3、COM4と変えてみたりしましたがダメでした..orz

教えていただいた
https://answers.launchpad.net/ubuntu/+question/2622
の中で、dapperのCDからブートした場合は使えたと書いてありますね。
Plamo(kernel-2.4.27)のときは問題無しだったんで、私のもカーネルのバグ
なんでしょうかね〜?
連休明けに再チャレンジしてみます。

オフライン

 

Board footer

Powered by FluxBB