2012-03-23 18 views
1

私はubuntu 12.04 betaを使用しています。 私はminicomが/ dev/ttyS0上で正しく動作することを前提にしています(ただし、puttyは動作しません)。 私はUbuntuの11.10で正常に動作するCコード内のポートを制御します。/dev/ttyS0はubuntu 12.04ベータ版では開きません。

fd = open(p_ttys_parms->device, O_RDWR | O_NOCTTY | O_NDELAY); 
if(fd < 0) 
{ 
    printf("ERROR: cannot open device %s\n", p_ttys_parms->device); 
    return 0; 
} 

が、12.04ベータ版では、私は< 0、終了printfの後にFDを取得します。 誰かが同じことを経験して何とか成功しましたか?

+2

「errno」には何がありますか?それはあなたが見ている最初のものでなければなりません。 – paxdiablo

+0

私はerrnoを取得します:許可が拒否されました。sudoで再度実行すると動作します。あなたは私の問題を解決しました(12.04で私がシリアルポートを開くためにsudoが必要な理由がない場合でも、11.10ではそれは必要ではありませんでした)。 – giuspen

+0

probsはありません、私はそれを答えにコピーし、その可能性のある理由と修正についてもう少し詳細を追加します。 – paxdiablo

答えて

7

最初に行うべきことは、errnoの値を確認することです。 open呼び出しが-1を返した場合は、errnoに実際の問題の内容を示す値を設定します。


そして、それはPermission deniedだとsudoの下で実行したときにあなたのプログラムが動作しますが、それはおそらく/dev/ttyS0デバイスファイルとアクセス権の問題だとあなたのコメントに基づいて。

私はDebianの6の下に同様の問題を得る:

pax> ls -al /dev/ttyS0 
crw-rw---- 1 root dialout 4, 64 Mar 23 21:00 /dev/ttyS0 
pax> echo xyzzy >/dev/ttyS0 
bash: /dev/ttyS0: Permission denied 

あなたは(Ubuntuは私の最愛のDebianから外れてどのくらいに応じて、または別のグループ)dialoutグループにユーザーを追加する必要があるかもしれませんへ私は(私は/dev/ttyUSB0を使用しています)perminssionを設定するには、次のコマンドを使用

pax> id -Gn 
pax cdrom floppy audio dip video plugdev netdev bluetooth scanner 

pax> sudo adduser pax dialout 
[sudo] password for pax: 
Adding user pax to group dialout 
Done. 

<< Restart done here to ensure new group picked up >> 

pax> id -Gn 
pax dialout cdrom floppy audio dip video plugdev netdev bluetooth scanner 
+0

はい、それも私のために働いた、ありがとうございます(sudo usermod -a -G dialout myusername; sudo shutdown -r 0) – giuspen

+0

"再起動"する必要はありません。 'pax'ユーザはただログアウトして再びログインする必要があります。 – Wodin

1

:アクセス許可します。

sudo chmod 0777 /dev/ttyUSB0 

私は、コマンドを実行すると:

AvailableSerialPorts: {'/dev/ttyUSB0'} 
     JarFileVersion: 'Version 2.11.0' 
ObjectConstructorName: {'serial('/dev/ttyUSB0');'} 
      SerialPorts: {'/dev/ttyUSB0'} 

もが、私は(ターミナル)でroot権限でMATLABを開きました。

sudo /usr/local/MATLAB/R2010b/bin/matlab 
+0

ありがとうございますが、これは1つのシリアルデバイスに対してのみ機能します...私はグループダイヤルアウトにユーザを追加する方が良い解決策だと思います – giuspen

関連する問題