Mscommを使用して、垂れ流しデーターをバイナリで受信(受信データ長さは変化する)するとき、このデーターをどうやって、配列に格納していけば良いのでしょうか?

(垂れ流しデータ ⇒ < STX >nnn-nnn・・・・< ETX >< CHK >)

また、配列に格納したデーターを文字に置き換えるにはどうすれば良いでしょうか?

まず考え方として以下の流れでよいでしょうか?

バイナリデータをバリアント型の変数に入れる。(受信する)
     ↓
このデータを1バイトごとにバイト型変数の配列に入れていく。
     ↓
格納した配列の中の制御文字を取り除く。( ST、EX )
     ↓
配列に入っているデータを文字に変換する。
     ↓
変換した文字をつなぐ。

受信するデーターが制御文字を含んでいる為、テキストで受信するとおかしな動作をすることがあるので(150バイト程度のデーターを、バッファから変数に移すときに、0.5~2.5秒もかかってしまうし、文字化けも時々起こす。)バイナリで受信してその後文字に変換したいのですが・・・。

宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

(記憶が薄いので、正確ではありません。



Dim bytAry() as byte
として、それに直接受信してあげると必要な領域を勝手にVB側で用意してくれると思いました。

それを
Dim strWork as String
(1)strWork = strConv(bytAry,vbUnicode)
(2)strWork = strConv(bytAry,vbFormUnicode)
どっちかで変換だったと思うけど、それでバイナリデータを文字列化します。

そのあと
VB6ならReplace関数で制御文字だけを置き換えて使用すると便利かも?

最初に述べたように、かなり記憶があいまいです。環境がないので性格には答えられません。m(__)m
    • good
    • 0
この回答へのお礼

TAGOSAKU7さん、回答ありがとうございます。

私の考え方が間違っていたようです。
バイナリデータも文字列と同じように、いったん受信しから配列に割り振らないとダメかと思っていました。(^^ゞ
何もせずに配列に入ってくれるとは・・・。

おかげ様でうまくバイナリデータを受信することが出来ました。
ありがとうございました。   UME3 m(__)m

お礼日時:2001/12/03 12:10

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Qxmlの値を配列変数に格納したい。

http://xml-jp.amznxslt.com/onca/xml3?&t=saite-22&dev-t=**************&BrowseNodeSearch=562014&mode=dvd-jp&type=lite&locale=jp&page=1&f=xml

これのXML文書を
/Details/ProductNameの値をとりだし、
name(i)という配列変数にひとつずつ格納たいのですが、どのようにコーディングすればよいでしょうか?
教えてください。

Aベストアンサー

'>vbc2 Sample.vb
Imports System
Imports System.IO
Imports System.Xml

public class Sample

public shared sub Main()
Dim URL as String = "http://xml-jp.amznxslt.com/onca/xml3?&t=saite-22&dev-t=**************&BrowseNodeSearch=562014&mode=dvd-jp&type=lite&locale=jp&page=1&f=xml"
Dim doc as XmlDocument = new XmlDocument()
doc.Load(URL)

Dim root as XmlElement = doc.DocumentElement
Dim nodeList as XmlNodeList
nodeList = root.SelectNodes("//Details/ProductName")

Dim node as XmlNode
Dim count as Integer = nodeList.Count
Dim name(count) as String
Dim i as Integer = 0
for each node in nodeList
name(i) = node.SelectSingleNode(".").innerText
i += 1
next
for i=0 to count
Console.WriteLine(name(i))
next
end sub
end class

'>vbc2 Sample.vb
Imports System
Imports System.IO
Imports System.Xml

public class Sample

public shared sub Main()
Dim URL as String = "http://xml-jp.amznxslt.com/onca/xml3?&t=saite-22&dev-t=**************&BrowseNodeSearch=562014&mode=dvd-jp&type=lite&locale=jp&page=1&f=xml"
Dim doc as XmlDocument = new XmlDocument()
doc.Load(URL)

Dim root as XmlElement = doc.DocumentElement
Dim nodeList as XmlNodeList
nodeList = root....続きを読む

Qデータ数の定まらないデータをもれなく配列変数に格納する方法

あるときは10個またあるときは100個のデータがあるとします。
しかし、データの数は1000個になるかもしれませんし、1個になるかもしれません。
ただし、データ数が0個以下になることはありません。
このような、データ数の定まらないデータを確実にもれなく配列変数に代入したいのですが、方法がわかりません。
変数で

dim hairetu(kazu) as integer

として配列の数を設定できれば良いのですが、どうも無理のようです。
データの最大数(仮に1000個)を決めて

dim hairetu(1000) as integer

とするしかないのでしょうか。
何か良い方法はありませんでしょうか。

Aベストアンサー

Dim hairetu() As Integer
     :
ReDim hairetu(kazu)

動的配列で宣言しておき、kazuが決定した時点で
ReDimで配列を割り当てることができます。

Q変数を配列に格納する時に、二つの条件を指定すること

変数を配列に格納する時に、二つの条件を指定することはできますか?

VBAです。

Private Sub test()
Dim i As Long
Dim Str As String
Dim tmp As Variant

Str = "a,i,u-e-o"
tmp = Split(Str, ",") '配列に格納する

For i = LBound(tmp) To UBound(tmp)
Debug.Print tmp(i)
Next i

End Sub

の場合、結果が
a
i
u-e-o
になってしまいます。

tmp = Split(Str, "," or "-")

のようなことをして
a
i
u
e
o

と表示させたいです。

"a,i,u-e-o"を"a,i,u,e,o"にすることはできません。ご教授よろしくお願いします。

Aベストアンサー

Str = "a,i,u-e-o"
tmp = Split(Replace(Str, "-", ","), ",")
For i = LBound(tmp) To UBound(tmp)
Debug.Print tmp(i)
Next i

Q【配列の練習中】変数(範囲)に格納した値を別シートの特定のセルに表示

VBAを練習中で、現在、配列について練習しております。
”要素”シートのセル範囲を配列に格納し、”出力”シートの特定セルに表示させたいです。
例示してある”要素”シートは数行ですが、この行が数百行有るような場合を想定しています。
変数(i)も変化させ、要素シートの中から特定(i)の行を格納し、出力に表示させたいです。
住所録(データシートが要素で、個々の情報を出力に呼び出す)みたいな感じを想定しています。

自分なりに調べながら書いたコード、シート情報を記載します。
よろしくお願いいたします。


Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim youso As Range
Dim i As Long

Set sh1 = Worksheets("要素")
Set sh2 = Worksheets("出力")

i = 2 '必要に応じてiの値を変える予定あり

Set youso = sh1.Range(Cells(i, 1), Cells(i, 5))

'↑ここでエラーが出ます。

With sh2
.Range("C2") = youso(1) '要素1
.Range("F2") = youso(2) '要素2
.Range("D4") = youso(3) '要素3
.Range("D6") = youso(4) '要素4
.Range("G5") = youso(5) '要素5
End With

End Sub

VBAを練習中で、現在、配列について練習しております。
”要素”シートのセル範囲を配列に格納し、”出力”シートの特定セルに表示させたいです。
例示してある”要素”シートは数行ですが、この行が数百行有るような場合を想定しています。
変数(i)も変化させ、要素シートの中から特定(i)の行を格納し、出力に表示させたいです。
住所録(データシートが要素で、個々の情報を出力に呼び出す)みたいな感じを想定しています。

自分なりに調べながら書いたコード、シート情報を記載します。
よろしくお願いい...続きを読む

Aベストアンサー

こんにちは。

そのコードですと、配列になっていないのです。
配列を、簡単な方式で書いてみました。すこし複雑になってしまいますね。

Sub 配列方式()
 Dim Sh1 As Worksheet
 Dim Sh2 As Worksheet
 Dim youso As Range
 Dim Ary_youso(4)  '配列変数
 Dim Rng As Range
 Dim i As Long, j As Long, c As Range
 Set Sh1 = Worksheets("要素")
 Set Sh2 = Worksheets("出力")
  i = 2 '行
 With Sh1
  Set youso = .Range(.Cells(i, 1), .Cells(i, 5))
  Next j
  For j = 0 To 4
   Ary_youso(j) = youso(j + 1).Value '配列変数に入れる
 End With
 j = 0
 With Sh2
 Set Rng = .Range("C2,F2,D4,D6,G5")
 For Each c In Rng
  c.Value = Ary_youso(j)  '配列変数からの吐き出し
  j = j + 1
 Next c
 End With
End Sub

こんにちは。

そのコードですと、配列になっていないのです。
配列を、簡単な方式で書いてみました。すこし複雑になってしまいますね。

Sub 配列方式()
 Dim Sh1 As Worksheet
 Dim Sh2 As Worksheet
 Dim youso As Range
 Dim Ary_youso(4)  '配列変数
 Dim Rng As Range
 Dim i As Long, j As Long, c As Range
 Set Sh1 = Worksheets("要素")
 Set Sh2 = Worksheets("出力")
  i = 2 '行
 With Sh1
  Set youso = .Range(.Cells(i, 1), .Cells(i, 5))
  Next j
  For j = 0 To 4
   Ar...続きを読む

Q複数の配列変数を1つの配列変数に合成する方法

個別のファイル、シートから
DATA***=Range("A1:A50000").Value
(***は001~100)
で読込んだ100個の50000×1の配列データを、1個の50000×100の配列変数へ簡単に合成する方法は無いでしょうか?

今後のデータ量増加も考慮して、出来るだけfor-nextで処理したくありません。

宜しくお願いします。

Aベストアンサー

ジャグ配列と言う物があります
簡単に言うと配列を配列に入れることです
Varant型がなんでも入るを事利用します

  Dim Data
  Dim MergeData
  
  Data = Range("A1:A50000").Value
  Call Myjag(MergeData, Data)
  MsgBox MergeData(0)(1, 1)

Sub Myjag(MergeData, Data)
  If IsArray(MergeData) = False Then'MergeDataが配列かどうか
    ReDim MergeData(0)
  Else
    ReDim Preserve MergeData(UBound(MergeData) + 1)
  End If
  MergeData(UBound(MergeData)) = Data
End Sub

ただ、メモリを相当食うと思うので、100個入るかわかりません


人気Q&Aランキング

おすすめ情報