初めて投稿させていただきます。VBは全く初心者です。
現在、私はAterm IT60L/Dというターミナルアダプタを使って着信電話番号を
PC上に表示させたいと思っています。
そこで調べてみた所、MSCommを使ってシリアル通信ができることを知り、着信
電話番号の表示ができないかと思い試してみたのですが、なかなかうまくいきません。
ハイパーターミナルでは着信電話番号を表示させる事ができるのですが、
MSCommでこのようなことをするにはどうしたらよいのでしょうか?
ハイパーターミナルでは出来たということなので送信するコマンド
については問題ないということですね。
純粋にMSCommでの通信の仕方が分からないのであれば、まずMSDNのサンプル
を読むことをお勧めします。
下記スレでも同じような回答となっています。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200409/04090075.txt
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
の部分に問題があるような気がするのですが、どこかおかしなところはありますでしょうか?
MSComm1.RThreshold = 0
としているのでOnCommイベントが発生しないからでしょう。
御早いお返事ありがとうございます。
MSComm1.RThreshold = 1
とした時もOnCommイベントが発生しませんでした。他に原因があるのでしょうか?
また着信電話番号の長さは携帯と固定では変化するのでこういった場合に
MSComm1.RThreshold をどのような値にすればいいのでしょうか?
RThresholdに0が設定されていてかつOnCommイベントでデータを待つ処理を
かいたりとかプロパティの意味を良く把握せずにプログラム作って不具合が
発生すると原因もつかみにくくなります。
一つ一つのプロパティの意味を調べ、それが自分が行いたい通信条件にあって
いるかを考えてください。
この手の通信でよく行われるのは、RThresholdを1に設定しておき、受信した
文字をグローバル変数等のバッファにためておきます。
そして区切り文字(CRLF等)を受信した時点でそれまで受信した文字列を
ひとつのメッセージとして処理します。
初めまして。VBを勉強し始めてンヶ月のユーリといいます。よろしく。
MSCommで苦戦されているようですが,わたしも今シリアル通信のプログラムを
組んでいて、その際下記のサイトを参考にさせてもらっています。
SPECTRUM の館 のページ
http://speana-1.hp.infoseek.co.jp/
ここの「Visual Basicによるプログラム開発」のところに、MSCommの使い方が
詳しく載っています。参考にされてはどうでしょうか。
ツイート | ![]() |