VBのMSCommのInputコマンドのレスポンスについてお聞きしたいのです。
現在Inputのレスポンスが非常に遅くて困っております。
こういう場合の要因としてはどのようなことが考えられるでしょうか?
CPUはP3 500です。

以上よろしくお願いします。

開発環境:VB6.0 WinNT4.0WS

A 回答 (2件)

確かに遅すぎですね。



.InputLen=0でデータを取ってないとかかも知れません。
ソースをどのように記述しているかによってもかわると思います。宜しければソースを提示してください。

因みにこのサイトでMSCommで検索するといいかも知れません。

#うっかり過去投稿の状況確認がおろそかになっていて補足回答が遅くなりました。
    • good
    • 0

レスポンスが遅いとの事どの程度データをどのような通信方法で取っていてどの程度の時間がかかっているのか不明です。


またロジックも不明ですので本当に遅いのか判断出来ません。
なお500バイト前後なら1秒以内で取れるはずですが..

速度:9600Bps
データ長:8
ストップビット:1
パリティ:偶数

ということでどういう状況か詳しく説明願います。

この回答への補足

速度:9600Bps
データ長:8
ストップビット:1
パリティ:チェックなし

以上の設定で、読み取るデータは100バイトもありません。
デバックしているとただInputのところだけで
15秒かかってしまうのです。(15秒の後に次のロジックへと進みます)

補足日時:2001/09/11 13:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVBのMSCommコントロールを使ってシリアル通信をしています。

VBのMSCommコントロールを使ってシリアル通信をしています。
データ受信時、90byteを超えたあたりで"??"(ASCIIコードで0x3Fが2回)が
挿入されたように受信されてしまいます。
前後のデータ関係をみると、2byteがデータ化けを起こしているわけでは
なく、"??"が間に挿入されたような形です。
"??"が挿入される位置も受信の度に違います。
もしこのような現象の理由がわかる方がいらっしゃいましたら
回避策をお教えください。

<詳細設定>
38.4kbps、データ長:7、パリティ:Even、Stop bit :1 の設定。
http://www.compass-lab.com/STK_CAN/USB_Serial/USB_COMi.htm
にあるUSB-comiでシリアルポートを追加してRS422変換しています。
データ長129byteのデータが250ms周期で送られてくるのを
読み取ろうとしています。

Aベストアンサー

> 送信信号は問題無いのを確認しているため、
> RS422-USB変換器が悪さしているのか、、、

確認するには他の通信ソフトを使用して、受信してみてはいかがでしょうか。

Acknowrich
http://www.vector.co.jp/soft/win95/prog/se089304.html

このようなソフトで受信してみて、同じ現象だったら入力側(送信データかRS422)の問題、正しく受信できたら開発されたソフトの問題ということになります。

まず、この切り分けをしてから原因を追究した方が楽かと思います。

QVB4.0の「LSet」と同等の機能をVB2008で実行するには?

VB2008の練習のために、VB4.0のコードをVB2008にコンバージョンしています。
VB4.0の「LSet」がどうしてもコンバージョンできません。
LSet 以外はVB2008で機能がありました。
なにか方法はないでしょうか。
リストをコピーします。
(投稿したらインデントが消えました)

Public Type Tpstndef
equip As Integer
stn_no As Integer
stn_class As Integer
line_no As Integer
stn_kind As Integer
End Type

Dim kdata As Tpkyokudef
Dim rbuf As buf1K
   ・
  省略
   ・
Get #fno, seeksize, rbuf
LSet kdata = rbuf

Aベストアンサー

IntPtrを経由して行えばいいように思います

dim objPtr as IntPtr = Marshal.AllocHGlobal( Len(rbuf) )
として ファイルから読み込んだデータを格納できる IntPtr型の変数を準備します

' VB6ではファイルより大きな受け取りバッファでもエラーになりません
' VB.NETではその点融通が利かないようです
' LOFなどで読み込み量を調べて あらかじめ Redimであわせましょう
FileGet( fno, rbuf.実際のバッファ )
FileClose()

' rbufの読み込み実体がByte配列ならいいのですが …
Marshal.Copy( rbuf.実際のバッファ, 0, objPtr, rbuf.実際のバッファ.Length )
kdata = marshal.PtrToStructure( objPtr, GetType(Tpstndef))
' 使いおわったら開放しましょう
marshal.FreeHGlobal( objPtr )

といった具合です

IntPtrを経由して行えばいいように思います

dim objPtr as IntPtr = Marshal.AllocHGlobal( Len(rbuf) )
として ファイルから読み込んだデータを格納できる IntPtr型の変数を準備します

' VB6ではファイルより大きな受け取りバッファでもエラーになりません
' VB.NETではその点融通が利かないようです
' LOFなどで読み込み量を調べて あらかじめ Redimであわせましょう
FileGet( fno, rbuf.実際のバッファ )
FileClose()

' rbufの読み込み実体がByte配列ならいいのですが …
Marshal.Copy( rbuf.実...続きを読む

Q「VB4.0の「LSet」と同等の機能をVB2008で実行するには?」のリストを修正します

「VB4.0の「LSet」と同等の機能をVB2008で実行するには?」の質問で
リストに間違いがあったので訂正します。
Public Type TpstndefをPublic Type Tpkyokudef

VB2008の練習のために、VB4.0のコードをVB2008にコンバージョンしています。
VB4.0の「LSet」がどうしてもコンバージョンできません。
LSet 以外はVB2008で機能がありました。
なにか方法はないでしょうか。
リストをコピーします。

Public Type Tpkyokudef
equip As Integer
stn_no As Integer
stn_class As Integer
line_no As Integer
stn_kind As Integer
End Type

Dim kdata As Tpkyokudef
Dim rbuf As buf1K
   ・
  省略
   ・
Get #fno, seeksize, rbuf
LSet kdata = rbuf

「VB4.0の「LSet」と同等の機能をVB2008で実行するには?」の質問で
リストに間違いがあったので訂正します。
Public Type TpstndefをPublic Type Tpkyokudef

VB2008の練習のために、VB4.0のコードをVB2008にコンバージョンしています。
VB4.0の「LSet」がどうしてもコンバージョンできません。
LSet 以外はVB2008で機能がありました。
なにか方法はないでしょうか。
リストをコピーします。

Public Type Tpkyokudef
equip As Integer
stn_no As Integer
stn_class As ...続きを読む

Aベストアンサー

buf1kの構造体の中身は ・・・
ファイルはレコード単位を設定しているのですか

当方のテストでは 自動変換で変換されたコードを使ってます
VB4/6コード
Private Type buf1k
  buf(1023) as Byte
End Type

VB2005コード
  Private Structure buf1k
    <VBFixedArray(1023)> Dim buf() As Byte
    Public Sub Initialize()
      ReDim buf(1023)
    End Sub
  End Structure
といった具合ですが ・・・

2005側の使用時に
dim myBuf as buf1k
dim kdata as Tpkyokudef
myBuf.Initialize()

FileGet( #fno, myBuf )
Dim objPtr As IntPtr = Marshal.AllocHGlobal(Len(MyBuf))
Marshal.Copy(MyBuf.buf, 0, objPtr, MyBuf.buf.Length)
kdata = Marshal.PtrToStructure(objPtr, GetType(Tpkyokudef))
Marshal.FreeHGlobal(objPtr)
といった具合ですが ・・・

構造体Tpkyokudef には
<StructLayout(LayoutKind.Sequential)> _
といったような属性を付けたほうがいいかもしれません

buf1kの構造体の中身は ・・・
ファイルはレコード単位を設定しているのですか

当方のテストでは 自動変換で変換されたコードを使ってます
VB4/6コード
Private Type buf1k
  buf(1023) as Byte
End Type

VB2005コード
  Private Structure buf1k
    <VBFixedArray(1023)> Dim buf() As Byte
    Public Sub Initialize()
      ReDim buf(1023)
    End Sub
  End Structure
といった具合ですが ・・・

2005側の使用時に
dim myBuf as buf1k
dim kdata as Tpkyo...続きを読む

QVB6.0でVB上にExcel

VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?

Aベストアンサー

条件に該当する場合に
オブジェクトではなくピクチャーコントロールとしてクリップボードにSheet1をコピーしてピクチャーコントロールにClipboard.GetData()で貼り付ける。
または
Sheet1を1行づつ読み込みテキストに書き出す。

QVB5.0とVB6.0

ご教授お願いします。
VB4.0で開発を始め、VB5.0に。主にDBはDAOを使っています。いくつかのアプリを配布し(セットアップウィザードを使い)、その後VB6.0がリリースされましたが、配布済みアプリに影響があると思いB6.0へのUpをあきらめていました。VB5.0は98でしか認められていず、2000でも試しましたが、確かに一部の動作でエラーが起こったりしました。使用しているマシンが不安定になったので、中古PCに98をインストールし、開発環境を移しましたが、セットアップウィザードが「予期せぬエラー」とかで動きませんでした。以上が経過です。
ようやくVB6.0を入手し、とりあえず2000で、2,3のアプリで試したところ、そのまま(何の手も加えず)OKでした。ちょっと気がついた点といえば、作成されたEXEのサイズが1割ほど小さくなっていました。
質問ですが、VB5.0→VB6.0では何が変わったのでしょうか?(当時はある程度読んだ気がしますが、覚えていません)
そして、アップ後、注意しなければならないことは何でしょうか?
よろしくお願いいたします。

ご教授お願いします。
VB4.0で開発を始め、VB5.0に。主にDBはDAOを使っています。いくつかのアプリを配布し(セットアップウィザードを使い)、その後VB6.0がリリースされましたが、配布済みアプリに影響があると思いB6.0へのUpをあきらめていました。VB5.0は98でしか認められていず、2000でも試しましたが、確かに一部の動作でエラーが起こったりしました。使用しているマシンが不安定になったので、中古PCに98をインストールし、開発環境を移しましたが、セットアップウィザードが「予期せぬエ...続きを読む

Aベストアンサー

主には コントロールが更新されているといった点でしょう
コモンコントロールに VB5独自のコントロールと同等の機能が搭載されたとか …
あとは コンパイラ自体の最適化や バグフィックスです
VB6を使うのであれば SP6などのパッチを当てましょう
http://www.microsoft.com/downloads/details.aspx?familyid=A8494EDB-2E89-4676-A16A-5C5477CB9713&displaylang=ja

ADOやDAOなどは そのまま使えるものがほとんどだとおもいます

[VB] 32 ビット版から Visual Basic 6.0 への移植時の注意事項
http://support.microsoft.com/kb/412580/ja
なども参考になるかも ・・・


このカテゴリの人気Q&Aランキング

おすすめ情報