• ベストアンサー

シリアル通信(送信について)

現在VB6.0を使用してシリアル通信(RS232C)をMSCOMMを使用して行いたいのですが、受信は出来たのですが、送信がうまくいかない状態です。 MSComm.Output = 送信文字列 & vbCr とすると結果の値を受信できる予定なのですがエラーですという値が返ってきます。 同じ操作をTera Term等で行うと結果が正しく返ってきます。 何故そうなるのかわからない状態で困っております。 何かアドバイス頂けないでしょうか。

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

  • ベストアンサー
  • kiki_s
  • ベストアンサー率59% (147/248)
回答No.2

>上記の件ですが相手については詳しくは説明できませんので 説明自体出来ないのか、開示できないものなのか分かりませんが、補足が出来ないと答える側も分かりずらいですよ。 まぁ、相手が分かったとしても何ともいえませんが、「説明できません」が「原因や対策は知りたい」はちょっと考え物です。 最低限必要な情報は開示しないと回答も貰えにくいでしょう。 それはさておき・・・ >MSComm.Output = send_data & chr(13) 考えられる原因としては改行コードかなぁ。 MSComm.Output = send_data & chr(13) & chr(10) または、MSComm.Output = send_data & vbCrLF とか書くとどうなりますか? あとは、通信プロトコル設定ミスの可能性もありますよ。

Simanohito
質問者

お礼

ご回答ありがとうございます。 情報の開示が出来ず申し訳ございません。 本件ですが、ストップビットの設定を1→2にすることで問題が解決致しましたのでご報告致します。

その他の回答 (1)

  • kiki_s
  • ベストアンサー率59% (147/248)
回答No.1

シリアル通信の相手は何でしょうか? 送信部分のコードを開示出来ますか?

Simanohito
質問者

お礼

ご回答ありがとうございます。 上記の件ですが相手については詳しくは説明できませんので 送信部分のコードだけ以下に開示させて頂きます。   send_data ="TEST"  MSComm.InBufferCount = 0 MSComm.Output = send_data & chr(13) といったプログラムになります。 よろしくお願い致します。

関連するQ&A

  • シリアル通信について

    質問です。 仕事でシリアルプリンタをMSCommで制御しています。 開発環境はVB6(SP5),XPです。 MSCommにて印字データを一度に沢山送ると情報落ち(?)した印字内容になってしまいます。多分プリンタ内のバッファ(みたいなもの)が一杯になるかして、プリンタの処理能力が限界なのかと勝手に思ったりもしています。 ちなみに10秒間隔くらいで送れば大丈夫です。 一方、シリアル通信の実験としてTera Termを使用しています。Tera Termだと一度に沢山のデータを送っても問題ないです。Tera Termはそこらへんを制御しているのでしょうか? また、MSCommにもそのようなことができるのでしょうか? よくわからない質問かもしれませんが、どんな些細なことでも結構ですのでご教授願います。

  • データ送信

    MSCommのOutPutプロパティを使用して送信します。 Dim Buffer As String  Buffer = "Dummy" MSComm1.Output = Buffer RS-232C接続をしたデバイスにデータを送信します。 このとき、受信するデバイスがいないとMSComm1.Outputステートメントの処理に約4-5秒かかります。 これは仕様ですか? MSComm1.Iutputプロパティを含めて、タイムアウトに関して参考になるドキュメントやサイトがございましたら教えていただけませんか?

  • シリアル通信でコマンドを送信し、戻ってきたら実行する

    VB初心者です。ぜひ、お分かりになる方がいらっしゃいましたら教えて下さい。 質問1:輝度計をシリアルポートに接続し、測定実行のコマンドを送信し、測定後にOKが戻ってきたら測定結果を受信するコマンドを送って結果を受信するというプログラムをVBで作成しています。MScommを使用し、測定実行コマンドを送信後、OKが戻ってくるところまでは出来たのですが引き続き、測定結果を受信するコマンドを送っても反応がありません。やけになって2行続けて書いたらなぜか、2行目が先に実行されてしまいました! 質問2:シリアルポートが開いたらForm2を開き、フォームの色をRGB関数で0に設定、測定コマンドを送信後に結果を受信したらフォームの色を1にするということを 繰り返し、255色まで行いたいのですがFor Nextで設定しても色が変わってくれず、なぜか255の白になってしまいます。色々、調べたのですがよく分からなくて。 とてもこまっています。宜しくお願いします。 Max = 255 For i = 0 To Max r = i: g = i: b = i FrmColor.BackColor = RGB(r, g, b) Next End Sub

  • シリアル通信(タブレット、シーケンサー)

    現在、WindowsXP + VB6 + MSComm <ー> FXn2-16MR(RS232Cユニット)を シリアル通信で制御しています。これをWindows8.1(タブレット) + VB2013で全面的に 書き換えを行っています。テスト用のパソコンとは何の問題間無く通信は通りますが、 対シーケンサーだと送信はしているようだが、受信が全くできない状態です。 制御パラメータは、SerialPort1.Handshake=None, DtrEnable=True, RtsEnable=True 送信時のプロトコルは、<ENQ> + データ(ASCコード) 受信時のプロトコルは、<STX> + データ(ASCコード)+ <ETX> VB6は、この設定で動作しています。 VB2013では、制御パラメータは同じし送受信では普通に SerialPort1.Write、SerialPort1.ReadLineを使っています。 宜しくお願いします。

  • シリアル通信のイベント受信について

    現在VB6.0を使用してシリアル通信のプログラムを MsCommを使用せず、CreateFileを使用して行っておりますが、 データの受信を受信したタイミングでテキストボックスに表示したいのですが どの様にすると受信したタイミングでデータを取得できるのかわからず困っております。

  • VB.Netでのシリアル通信についての質問

    VB6.0でバイト型変換を行ってからバッファに送信する プログラムを使用しているのですが、これを.Netにて 同様に行う記述方法が分りません。お分かりになる方 よろしくお願い致します。抜粋しておりますのでヘンテコ なソースかとは思いますがよろしくお願い致します。主にChrBが使用出来なくなった事が困っております。 (VB6.0と同様にAxMSCommを使用しております。) Private Sub Rs232c_Com() Dim bytOutByte() As Byte Dim strCmdData as String   strCmdData="83" 'コマンド送信 bytOutByte() = ChrB(Val("&h" & strCmdData)) MSComm1.Output = bytOutByte() End Sub

  • VB6でのシリアル通信について質問です。

    VB6でのシリアル通信について質問です。 現在、VB6で開発したラベル印刷のシステムを引き受けたのですが、以下のような状況に陥り困っております。 ・プリンタからPCへの接続はシリアル通信のみ。 ・現在使用しようとしているPCにはシリアル通信のポートがなく、USB接続のみしかできない。 ・RS232CからUSBへの変換コネクタを使ってPCとプリンタを接続しようとしているが、印刷実行時に実行時エラー 8015が発生する。 ・VBからプリンタへの通信はMSCommを使用している。 ・プログラム自体は客先にソースのみが残っていたもので、仕様書等はまったくない。 ネットで調べたところ、MicrosoftのサイトではUSBポートからMSCommを使って通信をする事はできないというような事が記載されておりました。 ただ、他のサイトを色々と調べたところ、普通に通信できるとの意見も記載されておりました。 実際のところ、VB6でRS232C-USB変換コネクタを使用してプリンタへのシリアル通信は可能なのでしょうか。 可能な場合、今回発生したエラーの原因になりそうなものとはなんなのでしょうか。 また、通信が不可能な場合、代替策としてどのような方法を取るのが一番ベストなのでしょうか。 どなたか何卒ご教授よろしくお願い致します。

  • VBでのシリアル通信

    VB6 Professional Virsionを使用しています。 RS232Cでシリアル通信をしたいのですが、どうすればいいのでしょうか。ヒントを教えてください。

  • MSCommのデータ送信

    申し訳ございません。 質問させていただいていた内容が解りにくいので再度、質問させてください。 接続しているデバイスがいないときのデータ送信の処理時間について質問がございます。 Dim Data$  Data$ = "Sample" MSComm1.Output = Data$ 'このステートメントを抜けるのに約10秒かかる。 RS-232C接続をしたデバイスにデータを送信します。 このとき、受信するデバイスが接続されいないときのデータ送信に時間が取られています。 通信デバイスのタイムアウトを設定するSetCommTimeouts関数は使用していません。 MSComm1.Outputのタイムアウトはどこで設定されていますか? 設定されているタイムアウト値を確認する方法はございますか?

  • Win32APIでシリアル通信をするには?

    Win32APIとVB.NETを使ってシリアル通信をするプログラミングを考えています。概要はGPS端末からのデータをVBで受信して表示できるようなプログラムを目指していますが、APIの使い方が分からないので詳しく教えていただける方がいましたら、サンプルソースまたは参考Webサイトの教示をお願いします。 VB6.0のクラス(MSComm)を追加する方法ではなく、APIを使う方向で回答お願いします。