• 締切済み

VB2005 で複数チャンネルのシリアル通信処理

初めて投稿します、VB2005への初心者です。 複数ポートでシリアル通信を同時に送受信を行おうといているのですが 旨く出来ません。 comm1をOPENして受信を行うとcomm2の受信が行えなくなります。 逆にcomm2から行っても最初にOPENしたcomm1側の受信処理が行えなくなってしまいます。 複数のcommを使用しての処理はどのようにしているのかご教授お願いします。

みんなの回答

  • miyuyu
  • ベストアンサー率61% (30/49)
回答No.1

こんにちは 回答が付かないようなので・・・ 現象は判るのですが不十分です ソースとかは公開できませんか 私は最大4ポートまで制御したことがあります 質問のような現象に出会ったことが無いもので 何か、ちょっとしたことなのではないでしょうか

関連するQ&A

  • シリアルポートを使うDLLを複数のアプリから使いたい

    シリアルポートを使うDLLを複数のアプリから使いたい シリアルポートで通信するDLLを作りたいと思っています。通信先の機器も作成します。 このDLLを複数のアプリがロードして同時に使用することが可能でしょうか。 複数のアプリが同じDLLをロードして同一のシリアルポートを通じて接続先の機器と通信したいのです。 通信頻度は高くないので、通信のつどポートをオープンし、通信後クローズすれば可能だと思うのですが、正しいでしょうか、それともやっぱり出来ないのでしょうか。 欲を言えばポートをオープンしたままで通信したいのですが、無理でしょうか。 (オープン、クローズのオーバーヘッドはかなりのものだと思うので。) 通信といっても1~2バイト送信して1~2バイト受信するだけです。

  • シリアル通信 大きいサイズの受信処理

    シリアル通信 大きいサイズの受信処理で質問があります OS:LINUX 開発環境 QT5.3 今 相手側機器から10秒ごとに190011Byteのデータくるようなしようとなっています そこで質問ですが 受信側ではどのような処理を組めば10秒ごとに来るデータをすべて受信できるのか よろしくお願いします open関数やread関数などを使用しています ボーレート値は230400bpsです 送受信バッファは1024byteとなっています

  • VB2005 シリアル通信のClose処理

    いつもお世話になっております。 表題の件につきまして、ご教示ください。 【処理内容】 メインフォームのボタンからポートをオープンし、 受信データ(1Byte)をテキストボックスに表示し続ける。 ※受信データは定期受信 通信をやめたいときにメインフォームのボタンから ポートをクローズする。 上記、クローズ時に、ほぼフリーズします。 原因はシリアル通信の受信イベントが別スレッドにて処理されているため、 Invoke()にてテキストボックスの更新をしており、 これが悪さをしているみたいです。 BeginInvoke()を使用するとフリーズは回避することができるのですが、 テキストボックスに表示される受信データの内容が激しく欠落してしまいます。 Invoke()を使いつつ、フリーズを回避する方法はないのでしょうか。 無知で大変申し訳ございませんが、よろしくお願いいたします。

  • VB2010で、シリアル通信をするには

    VB2010で、シリアル通信をするには シリアルポートをopenしようとすると、エラーで弾かれてしまいます。 どのように対処したら良いですか? 使っているソースコードは、下記の通り。 Private Sub ButtonRsStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonRsStart.Click Try '例外処理のはじまり If SerialPort1.IsOpen = True Then 'ポートはオープン済み MessageBox.Show("すでに" & SerialPort1.PortName & "は接続されています。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If SerialPort1.PortName = "COM1" 'オープンするポート名を格納 SerialPort1.Open() 'ポートオープン PORT_STATE.Text = "OPEN" Catch ex As Exception '例外処理 MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub --------------- エラーが発生する場所は、「Catch 」になります。 エラーメッセージは、「ポート 'COM1' へのアクセスが拒否されました。」です。 何が原因なのか、さっぱり分かりません。 ヒントになりそうな解答を頂けないでしょうか?

  • VB2010で、シリアル通信の方法を教えてください。

    VB2010で、シリアル通信の方法を教えてください。 ツールボックスの「Serial Port」を使っています。 送信までは難なくできたのですが、受信が旨くいきません。 参考にしたサイトは、 http://msdn.microsoft.com/ja-jp/library/cc720852.aspx です。 これを実行すると、受信が出来ないだけでなく、フリーズしてしまいます。 どうやったら、受信できるのでしょうか?

  • シリアル通信の方法(VB)

    VisualBasicを使ってシリアル通信(受信のみ)を考えている初心者です。 現在、フォームのデザイナーからSerialportをドラッグしプロパティを設定しました。 コードでは、ポートを開き、受信の命令をしていますが ".readline"の文のところでフリーズしてしまいます。 ---------- SerialPort1.Open() Dim receivedata As String = "" receivedata = SerialPort1.Readline ---------- 原因がつかめず困っています。 何がいけないのでしょうか?詳しい方、是非ご教授お願いします。

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

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

  • シリアルポートないんですね。

    最近のノートはシリアルがないんですね。 VBを使ってシリアル通信のプログラムを作って社内に配布しようとしたら、シリアルなんかないよって。USBでできないのって。カードは?って。 MS-COMM使ってる場合、どうしようもないですよね。COMポートの制御は。 ささいなことでかまいませんから、教えてくださいませんか?

  • シリアル通信でのread関数の戻り値

    オムロン製PLCと上位コンピュータをRS232Cで接続し、FINSコマンドを用いてシリアル通信をしようとしています。 現在作っているプログラムの流れは、 ・シリアルポート"/dev/ttyS2"のオープン   comm_fd = open("/dev/ttyS2", O_RDWR | O_NOCTTY); ・通信設定   termios構造体を設定 ・コマンドフレーム(COMMAND)を作成し、ポートに書き込む   write(comm_fd, &COMMAND, strlen(COMMAND)); ・PLCからのレスポンスを読み出す   read(comm_fd, &RESPONSE, 256); のようにしているのですが、read関数が実行されたままになってしまいます。(エラーコードも返ってこない状態です) readの戻り値が-1ならポートにアクセスできていないとわかるのですが… ためしにcomm_fdと違う値をread関数に入れてみたところ(read(6, &RESPONSE, 256)、戻り値は-1となりました。 これはどういう状態になってしまっているのでしょうか? わかりにくい質問で申し訳ありません。

  • シリアル通信について

    VB6にてシリアル通信プログラムを作成しましたが、データが受信できません。 ハイパーターミナルなら受信できて、一度ハイパーターミナルを使用すると、作成したプログラムでもデータが受信できるようになります。(再起動するとまたハイパーターミナルを使用するまで受信できません) 自作プログラムでなにか処理がたりないのでしょうか?

専門家に質問してみよう