yshibayaの日記: NI社製GPIB-ENET/100 と iblck と 複数台のPCからのアクセス 1
数ヶ月はまっていた問題が解決したように見えるので,どなたかの参考のためメモ.
[環境]
・GPIB-ENET/100をプライベートネットワークの中に設置.
・GPIB-ENET/100に数台,測定器がGPIB接続されている.
・同じプライベートネットワーク内から,GPIB-ENET/100を経由して測定器の制御.
・PCはWin2kだったりWinXPだったり.
・開発環境はVB6.
・GPIB-ENET/100のファームウェアはVersion B8.
[問題]
・1台のPCからしかアクセスしない時には無問題(10年以上問題なし).
・複数台のPCからアクセスすると,数分~数10分でプログラムが止まる.
・iblckのことは知っており,排他制御をするコードを書いているつもり.
・ロックに失敗したとき,成功するまでひたすらロックを繰り返すという,お粗末なコード.
・また,LockWaitTimeを長くすると,プログラムが止まるまでの時間が長くなる.
・従って,自分のコーディングが悪い & タイミングがシビア と判断していた.
[対処]
・プログラムが固まった後,GPIB-ENET/100のLISTENランプが点灯しっぱなしだったので,プログラム側ではなく,GPIB-ENET/100の問題を疑う.
・取りあえずファームウェアを探すと,B9とC9が見つかる.
・B9のReadMeに,iblck云々の記述あり.
・ファームウェアをB9にアップデート
・わざとお行儀の悪いプログラムで,複数のPCからひたすらGPIB-ENET/100のロック・アンロックを繰り返してみる.
[よく解らない点]
・結局,iblck と iblock/ibunlock,どちらを使うのが良いのか?
GPIBって、まだ現役なんだ。 (スコア:1)
> LISTENランプが点灯しっぱなし
どんなロックのメカニズムなのかわかりませんが、少なくとGPIBを使いたいPCがロック/アンロックを認識する前に、GPIBのATNがアクティブになってトランザクションが始まっちゃうようなら、そのロックの仕組みは破たんしてますよね?