MSCommを使って着信電話番号を表示させたい!


tamugen  2004-09-24 01:32:38  No: 116464

初めて投稿させていただきます。VBは全く初心者です。

現在、私はAterm IT60L/Dというターミナルアダプタを使って着信電話番号を
PC上に表示させたいと思っています。
そこで調べてみた所、MSCommを使ってシリアル通信ができることを知り、着信
電話番号の表示ができないかと思い試してみたのですが、なかなかうまくいきません。
ハイパーターミナルでは着信電話番号を表示させる事ができるのですが、
MSCommでこのようなことをするにはどうしたらよいのでしょうか?


JAN  2004-09-24 05:29:34  No: 116465

ハイパーターミナルでは出来たということなので送信するコマンド
については問題ないということですね。

純粋にMSCommでの通信の仕方が分からないのであれば、まずMSDNのサンプル
を読むことをお勧めします。
下記スレでも同じような回答となっています。

http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200409/04090075.txt


tamugen  2004-09-24 07:59:30  No: 116466

JAN様、お返事ありがとうございます。

MSDNのサンプルを見てやってみたのですが、まだうまくいきません。
私が作成したソースは以下の通りです。

Private Sub Form1_Load()
    '  MSCommコントロールの初期設定
    MSComm1.CommPort = 1             '通信ポートNo1指定
    MSComm1.Settings = "9600,n,8,1"  '通信条件設定
    MSComm1.Handshaking = comNone    'フロー制御無し
    MSComm1.RTSEnable = False        'RTS制御無し
    MSComm1.RThreshold = 0
    MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
    '変数宣言
    Dim Buffer As String       '受信バッファの宣言
  
    'CommEventプロパティに対する処理
    Select Case MSComm1.CommEvent      'イベントの区分
        Case comEvCD
        Case comEvCTS
        Case comEvDSR
        Case comEvRing
        Case comEvReceive  '受信データを表示
            Buffer = MSComm1.Input
            txtInputData.Text = Buffer
        Case comEvSend
        Case comEvEOF
        Case comEventBreak
            MsgBox "中断信号受信", vbExclamation, "通信エラー"
        Case comEventFrame
            MsgBox "フレームエラー", vbExclamation, "通信エラー"
        Case comEventOverrun
            MsgBox "オーバーランエラー", vbExclamation, "通信エラー"
        Case comEventRxOver
            MsgBox "受信バッファオーバー", vbExclamation, "通信エラー"
        Case comEventRxParity
            MsgBox "受信パリティエラー", vbExclamation, "通信エラー"
        Case comEventTxFull
            MsgBox "送信バッファフル", vbExclamation, "通信エラー"
        Case comEventDCB
            MsgBox "DCB取得エラー", vbExclamation, "通信エラー"
        Case Else
            MsgBox "未定義エラー発生", vbExclamation, "通信エラー"
        End Select
End Sub

JAN様に教えていただいたスレを見る限りでは
Buffer = MSComm1.Input
txtInputData.Text = Buffer
の部分に問題があるような気がするのですが、どこかおかしなところはありますでしょうか?


JAN  2004-09-24 08:26:48  No: 116467

MSComm1.RThreshold = 0
としているのでOnCommイベントが発生しないからでしょう。


tamugen  2004-09-24 08:35:36  No: 116468

御早いお返事ありがとうございます。

MSComm1.RThreshold = 1
とした時もOnCommイベントが発生しませんでした。他に原因があるのでしょうか?
また着信電話番号の長さは携帯と固定では変化するのでこういった場合に
MSComm1.RThreshold をどのような値にすればいいのでしょうか?


JAN  2004-09-24 09:02:08  No: 116469

RThresholdに0が設定されていてかつOnCommイベントでデータを待つ処理を
かいたりとかプロパティの意味を良く把握せずにプログラム作って不具合が
発生すると原因もつかみにくくなります。

一つ一つのプロパティの意味を調べ、それが自分が行いたい通信条件にあって
いるかを考えてください。

この手の通信でよく行われるのは、RThresholdを1に設定しておき、受信した
文字をグローバル変数等のバッファにためておきます。
そして区切り文字(CRLF等)を受信した時点でそれまで受信した文字列を
ひとつのメッセージとして処理します。


ユーリ  2004-09-24 21:01:44  No: 116470

初めまして。VBを勉強し始めてンヶ月のユーリといいます。よろしく。

MSCommで苦戦されているようですが,わたしも今シリアル通信のプログラムを
組んでいて、その際下記のサイトを参考にさせてもらっています。

SPECTRUM の館  のページ
http://speana-1.hp.infoseek.co.jp/

ここの「Visual Basicによるプログラム開発」のところに、MSCommの使い方が
詳しく載っています。参考にされてはどうでしょうか。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加