はじめまして。
VB.NETでカードリーダーを使ったプログラムを書いています。
カードリーダーがUSBに差し込まれているかどうかを判断するプログラムは
どのように書けばよいのでしょうか。
今は、差し込まれていることを前提にプログラムを書いているので、
もし差し込まれていないと、
以下のポートを開くときの処理に落ちてしまいます。
MscommCard.PortOpen = True
よろしくお願いします。
「カードリーダーがUSBに」ってそもそもなに?
MscommCardってなに?
「以下のポートを開くときの処理に落ちてしまいます。」の落ちるってなに?
システムがダウンするの?
意味わかりません。
かってな解釈するけど
カードリーダと言うものはRS-232C to USB コンバータ
MscommCardは AxMSComm1(MSCOMM32.OCX)だとすると
指定のCOMポートが無けれポートオープンは出来ないのでエラーとなります。
エラーの場合は
on error GoTo ErrMsg
ErrMsg:
Msgbox "カードがありません"
で回避すれば済むと思います。
分かりにくい文章ですみません。
>「カードリーダーがUSBに」ってそもそもなに?
カードリーダーの機械がPCに接続されていないときということです。
USBで接続しているのでこのような書き方をしてしまいました。
>MscommCardってなに?
MSCommコントロールのオブジェクト名です。
>「以下のポートを開くときの処理に落ちてしまいます。」の落ちるってなに?
>システムがダウンするの?
エラーメッセージが表示されて、システムダウンしてしまうということです。
VB梅さんの解釈のとおりです。
>エラーの場合は
>on error GoTo ErrMsg
>ErrMsg:
>Msgbox "カードがありません"
>で回避すれば済むと思います。
ということですが、
カードリーダーがPCに接続されていないときに別の処理がしたいので、
カードリーダーが接続されている状態かを判断したいです。
わかりにくくてすみませんが、お願いします。
>エラーメッセージが表示されて、システムダウンしてしまうということです。
というのが良くわかりません
システム→ソフトのことですよね?
システム→OSですか?
まったくわからないです^^;
PC→USB(RS232C)→カードリーダー
と矢印で接続されているのですか?
###########################################
on error GoTo ErrMsg
MscommCard.PortOpen = True
Exit sub
ErrMsg:
Msgbox "カードリーダーが接続されていません"
###########################################
これでもエラーでます?
確認願います。
Try …End Tryでエラーメッセージを表示していたのですが、
VB梅さんのように
MscommCard.PortOpen = True
の部分にだけTry …End Tryを入れれば解決することが分かりました。
全体にTry …End Tryを入れていました。
初心者で、訳の分からないことばかり聞いて申し訳ありませんでした。
ありがとうございました。
すみません、解決ボタンを忘れていました。
ツイート | ![]() |