VB6.0で音声発信する方法

このQ&Aのポイント
  • VB6.0を使用して、電話(音声)の自動発信を行いたい。MSCommを使用してポートを開き、電話をかけることはできるが、相手には「ピー」という音が常に聞こえてしまう。プログラムの問題か、モデムの問題かどうかを知りたい。
  • VB6.0での音声発信についての質問。MSCommを使用してポートを開き、電話をかけることはできるが、相手には「ピー」という音が聞こえる。この問題の原因と解決策を知りたい。
  • VB6.0を使って、電話の自動発信を試しているが、相手には「ピー」という音が聞こえてしまう。プログラムの問題か、モデムの問題かどうかを教えてほしい。
回答を見る
  • ベストアンサー

VB6.0で音声発信したい

VB6.0を使って、電話(音声)を自動でかけたいのです。 MSCommを使って、ポートを開いて電話をかけるところまではできたのですが、「ピー」という音がず~~と相手に聞こえてしまいます。 これはプログラムが悪いのでしょうか? それともモデムが悪いのでしょうか??? プログラムは以下の通りです。 MSComm1.CommPort = 1 MSComm1.Settings = "9600,n,8,1" If MSComm1.PortOpen = False Then    MSComm1.PortOpen = True End If MSComm1.Output = "ATD" & 電話番号 & Chr(13) 申し訳ありませんが、ご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

MSCommはモデム間のデータ通信しか出来ないと思う。 「ピー」は相手モデムへ接続を試みている音です。 ActiveCommならTAPIをサポートしているので出来るかもしれない。 あるいは、フリーのCOMを探してみるとか。

参考URL:
http://www.nifty.com/webapp/digitalword/word/004/00492.htm
mikimoon
質問者

お礼

回答どうもありがとうございます。 ActiveCommですね。早速やってみます。 アドバイスありがとうございました。

関連するQ&A

  • VBで二つの信号を送るには?

    よろしくお願いします VBで計測機械の制御をしようと考えているのですが、うまくいきません 具体的にはコマンドボタンを押して、計測機器に設定を送る際 先発の信号が受け付けられず、後発の信号のみが受け付けられる結果になります それぞれの信号が間違いないことは確認しているので 入力ごとにコマンドボタンを設定することも考えましたが、 見た目もごちゃごちゃしてよくないので、できればボタンひとつで行きたいと思います 一部ですがコードを貼っておきます よろしくお願いします Private Sub Command4_Click(Index As Integer) If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If Dim W As Single W = Text1.Text W = W / 1000 MSComm1.Output = ":WAVELENGTH " & W & "e-06" & vbCrLf Static R As Integer If Combo1 = "3μw" Then R = 3 If Combo1 = "10μw" Then R = 4 If Combo1 = "30μw" Then R = 5 MSComm1.Output = ":RANGE " & R & vbCrLf End Sub

  • MELSEC-QシーケンサをVBAで通信したい!

    三菱のシーケンサMELSEC-Qシリーズのシーケンサ「QJ71C24N」にエクセルVBAで 通信したいと考えています。なかなかうまくいかず、困り果てています・・・。 下記、進めてきた経緯と組んだプログラムを書きます。 どこがおかしいか、どなたか教えてください・・・ ■ゴール シーケンサ内部のM300という変数に格納されている値を、VBAで作成した テキストボックスに表示させたい。 1.使用するエクセルのバージョンは2003です。 MSCOMMが入ってなかったため、「vb6sp6rt4.exe」というランタイムを用いて MSCOMMはインストールできました。 2.以下プログラム Dim R As String Private Sub CommandButton1_Click() Sheets("Sheet1").Select MSComm1.DTREnable = True MSComm1.RTSEnable = True MSComm1.inputLen = 0 'Input プロパティ使用時に、バッファ全体を読み取る。 MSComm1.commport = 1 'これは必要かと考え、テキストにはないが追加。 MSComm1.Settings = "9600,N,8,1" MSComm1.portopen = True MSComm1.inbuffercount = 0 ' 0文字受信するまで待機 MSComm1.output = Chr$(H5) + "F90000FF0004010000D*0010200050" + Chr$(H31) + Chr$(H43) End Sub +でいいのでしょうか?&というのも見ましたが・・・。 一応下記の通りだと取扱説明書をみながら、進めました。 'chr$(H5):制御コードENQuiry(問合せ):ヘッダ 'F900:識別番号+フレーム+局番号 '00FF:ネットワーク番号+PC番号 '00:自局番号 '0401:コマンド(一括読み出し) '0000:サブコマンド(モニタ条件指定無し、デバイスメモリ拡張指定無し) 'D*:デバイスコード '001020:先頭デバイス '50:デバイス点数 ' Chr$(H31) + Chr$(H43):サムチェックコード ↓ここからが、テキストボックスへの表示になりますが・・・。これもうまくいかず。 Private Sub CommandButton2_Click() R = MSComm1.input text1.Text = R text2.Text = Mid$(R, 6, 4) End Sub そして、ポートオープン。これは、エラーが出ず、うまくいったと考えています。 Private Sub Form_Load() Sheets("Sheet1").Select MSComm1.DTREnable = True MSComm1.RTSEnable = True MSComm1.inputLen = 0 'Input プロパティ使用時に、バッファ全体を読み取る。 MSComm1.commport = 1 'これは必要かと考え、テキストにはないが追加。 MSComm1.Settings = "9600,N,8,1" MSComm1.portopen = True End Sub そして、ポートクローズ。こちらも、エラーが出ず、うまくいったと考えています。 Private Sub CommandButton3_Click() MSComm1.portopen = False End Sub 最大の問題は、しっかりとコードが送信できているのかというところです。 解らないところも多々あるため不明な点も多いですが、なにとぞ、教えてください。

  • VB2005によるRS232C制御

    VB2005でZX-800L(TAKASAGO)を動かしたいのですがポートオープンできません。(オープンできるとREMOTOが点灯するはずなんですが…) 現在MSCommまたは確認の意味でNSPcomを用いています。(シリアルポートもあるんですができれば前者でやりたい) 機器の設定は何度も確認して間違いはないと思われます。(windowsXP使用)プログラムは以下です。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '<RS232C constant> STX = "02" EOT = "04" ENQ = "05" '伝送キャラクタ設定 ACK = "06" NAK = "15" ETX = "03" RTN = "0A" Comport = 1 OP = "9600,n,8,1" 'baud rate,stop bit,data bit,parity ADD = "01" 'RS232Cアドレス BC = "\" & EOT & ADD 'EOT+ADD Call ATH(BC) 'アスキー変換サブルーチンです。 EOTADD = BCH または (MSComm.CommPort = 1 'RS-232Cポート番号 MSComm.PortOpen = True MSComm.Settings = "9600,n,8,1" MSComm.RThreshold = 1 MSComm.SThreshold = 1 MSComm.RTSEnable = False MSComm.InputMode = MSCommLib.InputModeConstants.comInputModeBinary) End Sub この後、クリックイベント ret = Me.NspCom.ComOpen(Comport, OP) If ret = -1 Then MsgBox("miss") End If または (MSComm.PortOpen = true) でオープンさせたいのですが… 機器のHPにもサンプルプログラムもなく困っています。助言&ご指摘お願いします。

  • ターミナルサーバーでの通信ポートエラーについて

    始めて質問いたしますので宜しくお願い致します。 ターミナルサーバー(Windows Server 2003 R2 SP2)上でVB5のアプリを動かしています。 FormからMSCommのコマンドにて通信ポート(COM1)のラベルプリンタ(SATO SR412)に 印刷を行うのですが1回目の印刷ではポートも正常に開けて印刷されますが フォームを閉じずにそのまま2回目を印刷した際に8012(デバイスが開けません)のエラーが 発生し印刷できません。 フォームを閉じると印刷は可能となります。 Windows XP SP3上で同じVB5のアプリを動かすとフォームを閉じなくても2回目の印刷が可能 となります。 ターミナルサーバー側の設定をどのように変更すればエラーが発生せず 印刷できるかご教授頂ける方、宜しくお願い致します。 ちなみにマイクロソフトのパッチ:838291は適用しています。 【デバッグを行った状態】 MSCommのコマンドにてデバッグを行った際、1回目の印刷時にはメッセージBOXで 状態を表示致しましたが正常にPortOpen=FALSEとなりポートがクローズされています。 2回目の印刷時にもポートがオープンされている場合にもPortOpen = Falseにて 一度、クローズしたのちPortOpen = Trueにて開こうとしていますがエラーとなります。 実行のコマンドは以下となります。 With X_oMSComm If .PortOpen = True Then .PortOpen = False End If .CommPort = 1 .DTREnable = True .RTSEnable = True .NullDiscard = False .Settings = "9600,N,8,1" .Handshaking = 0 .SThreshold = 0 .RThreshold = 0 .InputLen = 0 .PortOpen = True  ← このコマンドにてエラーとなります。 End With

  • MSComm; 必要なファイル、設定

    VB6で、ActiveXファイルを作成しています。 デバッカーでは、問題なく動作します。 CABファイルを作成して、ファイルをダウンロードさせて動作させると データ送信は、できるのですが受信データが取得できません。 Do - Loop処理を繰り返しているようです。 必要なファイル、プロパティ設定などございますか? ご意見をお願いします。 CABの中身; TEST.OCX ASYCFILT.DLL COMCAT.DLL MSMASK32.OCX MSMSKjp.DLL MSPRPJP.DLL msstdfmt.dll MSSTKPRP.DLL MSVBVM60.DLL OLEAUT32.DLL OLEPRO32.DLL VB6JP.DLL MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True MSComm1.InBufferCount = 0 MSComm1.InputLen = 1 '-----Outputプロパティによるデータ受信 MSComm1.Output = (STX) & "CMD" & (CR) '-----Inputプロパティによるデータ受信 Dim Buffer$ Do DoEvents If MSComm1.InBufferCount Then Buffer$ = Buffer$ & MSComm1.Input Select Case Buffer$ Case Chr(13) Exit Do Case Else End Select End If Loop

  • MSCommで、文字化け

    こんにちは。いつも質問ばかりで恐縮ですが・・・ VB6(SP5)で、プログラミングをしております。 MSCommが文字化けをして困っております。 TA=NTT:V70MAX Windows2000 下記の通り、プログラミングをしています。文字化けがしない時は、ずっと うまく行きます。が、一度文字化けをしてしまうと、Windowsの再起動等を しなければどうにもなりません。(“・エZ・”等になります) Private Sub Form_Load() ‘初期化 MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.Handshaking = comRTS MSComm1.RThreshold = 1 MSComm1.InputLen = 0 MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() Dim wBuf As String If MSComm1.CommEvent = comEvReceive Then wBuf = MSComm1.Input Text1.Text = wBuf End If End Sub

  • RS232Cによる定電圧・定電流直流電源ZXシリーズの制御方法

    VB2005によるTAKASAGOのZX-800Lの操作を行いたいのですがRS232Cのポートオープンができません。 MSCommかNspComを用いて何とかしたいのですがどうしたらいいでしょうか??現在のプログラムと設定が以下のものです。 Comport = 1,OP="9600,1,8,1",機器アドレス="01" MSComm.CommPort = 1 'RS-232Cポート番号 MSComm.Settings = "9600,n,8,1" Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click ret = Me.NspCom.ComOpen(Comport, OP) If ret = False Then MsgBox("ポートのオープンに失敗しました") End If End Sub もしくわ、MSComm.PortOpen = TrueをNspComの代わりに入れるかといったところなのですが…[HRESULTからの例外0x800A1F45]というエラーが出たりして通信できません。ポートオープンでき通信できるとZX-800LのREMOTEランプが点灯するはずなのですが点灯せず行き詰っています。アドバイス、解決方法、例になるプログラムありましたら教えてください。 ※拙い文章で申し訳ありません。補足等必要でしたら聞いてください。

  • RS232CでのRFIDリーダライタの制御プログラム。

    研究用にタカヤ製品http://www.takaya.co.jp/enterprise/rf/rfid/module.htm のRFID評価キットTR3-D002Aを購入しました。 ↓のようなVB6.0で16進数のバイト列を送信してレスポンスをえるプログラムを作りました。 MSComm1.CommPort = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.Handshaking = comNone MSComm1.PortOpen = True Dim Send(7) As Byte Send(0) = &H2 Send(1) = &H0 Send(2) = &H4F Send(3) = &H1 Send(4) = &H0 Send(5) = &H3 Send(6) = &H55 Send(7) = &HD MSComm1.Output = Send 通信プロトコルはあっていると思うし、COMモニタでみても、ついてきたデモソフトと同じ信号が出力されているので、 リーダライタからレスポンスのデータが帰ってくると思うのですが、COMモニタでみる限り何もレスポンスはないです。 プログラミングは初めてなのもあり、困っています。 何か特殊なことをしないと、こういうSDKが別売であるような機器を制御するのは無理なのでしょうか? また、原因は何が考えられるでしょうか?

  • こんにちは、VBはじめたての初心者です。MSCommコマンドを利用して

    こんにちは、VBはじめたての初心者です。MSCommコマンドを利用してマイコンと 通信するプログラムを作成中なのですが、わからないことがあるので質問させていただきます。 public aub form_load() MSComm1.CommPort = 3 'ポート番号設定 MSComm1.Settings = "115200,N,8,1" '設定 MSComm1.PortOpen = True 'ポートオープン MSComm1.Handshaking = comNone 'フロー制御無し MSComm1.RTSEnable = False 'RTS制御無し MSComm1.RThreshold = 1 '1バイト受信毎にOnCommイベント発生 Dim txBuffer As String End sub 'テキストに表示した受信文字列を変数に格納、さらに必要な文字列だけ抽出する Private Sub botan_Click() txBuffer = Text2.Text x = InStr(1, txBuffer, "e" & vbCrLf, 1) txBuffer = Mid(txBuffer, x + 3, (Len(txBuffer) - (x + 2))) Text1.Text = txBuffer 'txBufferの内容確認用 End Sub Private Sub cmdr_Click() Text2.Text = "" MSComm1.Output = "r a0 s 00 j ff" & Chr(13) 'マイコンのデータを読み込むコマンド End Sub Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive Buffer = MSComm1.Input Text2.Text = Text2.Text & Buffer ・ ・ ・ End Select End Sub おおざっぱですがこのようなプログラムをつくりました。 目的は受信された文字列(テキストに表示)を変数に格納、さらに必要な文字列だけ抽出する ことなのですが、このプログラムだとデータを読み込むコマンドを送るボタンとそのデータを 変数に格納して必要な部分を抽出するボタンを二回押さなければならず面倒なので、botan_Click() の中の命令をそのままcmdr_Click()に入れたのですが、そうするとエラーが出てしまいます。 いろいろと試したのですがどうやらtxBufferの中に受信データが入ってくれないみたいです。 原因は何か。何かいい方法がないかアドバイスいただけたら幸いです。 やりたいことは、一回のボタンクリックで変数に受信データのほしいとこだけを格納させることです。 よろしくお願いします。

  • MSCommによるCOMポートの制御

    W2k+VB6にて開発しております。 シリアル通信におけるCOMポート制御についての質問なのですが、 ポートをOPENしようとすると「ポートは既に開かれています」というエラーが出てしまいます。 -------------------------------------- if me.comm1.portopen = False then me.comm1.portopen = True end if -------------------------------------- としているにもかかわらずOPENできません。 このような場合どういった要因が考えられるのでしょうか? よろしくお願いします。

専門家に質問してみよう