C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■87151 / 3階層)  Byte配列→文字列→Byte配列の方法策
□投稿者/ 魔界の仮面弁士 (1645回)-(2018/04/16(Mon) 19:47:27)
No87150 (io さん) に返信
> Byte配列は、シリアル通信で入ってくるデータで

であれば、元データはバイナリであって、文字列では無いのでは…。


> 受信すると、イベントチェンジプロシージャに入っていき
> そのたびにListに追加しています
> byte配列に対して、IDが振って

それが最初の質問の
>> 01,10 20 11 15 FF
>> 02,10 20 ・・・・
における "01," や "02," なのですね?

でもって、ID=01 と ID=02 は別々のデータであり、
連結して一つにまとめるわけではない、と。


> Dictionaryで持っていて
> A,Byte配列1
> B,Byte配列2
> C,Byte配列3
1 ではなく A になっている点が読み取れませんでしたが、
ここでいう ID は連番というよりも、種別コードみたいなものなのかな…。


> Aなら1というふうにプログラム上で書いていましたが
> ユーザー側が、Aにデータを追加したいとか
管理を Dictionary(Of 種別, List(Of Byte)) あたりにしておけば、
 dict(種別.A).AddRange( 追加したいバイナリ )
とか、
 Dim bin As Byte() = dict(種別.B).ToArray()
のような使い方ができそうです。


> 出た案件で、簡単にユーザー側が使えるようにしたかったので
> txt,csvなどで管理するために
その csv がどういう使われ方をしているのか分からないのですが、
今回問題になっているのはシリアル通信の部分ではなく、
txt ファイルの内容をバイナリで読み取るところなのですね?


ファイルから読み取られた
 Dim src As String = "10 20 11 15 FF"
なデータを変換して、
 Dim dst As Byte() = { &H10, &H20, &H11, &H15, &HFF }
にするのは、変換用に
 Function ToBinary( src As String) As Byte()
なメソッドを一つ作ってやれば済む話ですし、実装例として
No87149 とか No75726 とかを真似れば良いはず。


あとは、先頭の ID 部分をどう管理するのかによって、
コーディングが変わってくることになるかと。


> 外に保存し
「シリアル通信」でもデータを受け取り、「ファイル」でも受け取るのですか?

どちらのデータがより優先させるのか、
ファイルを開いている間に届いたシリアル通信のデータはどのように扱われるのか、
そのファイルを「読み取る」だけでなく「書き込む」こともするのなら、排他制御の問題は、
などなど、話が複雑化するような気がします…が、こちらはデータの流れを
把握しているわけではないので、どうすべきかという点にまでは言及し難いです。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: Byte配列→文字列→Byte配列の方法策 /io →Re[4]: Byte配列→文字列→Byte配列の方法策 /io
 
上記関連ツリー

Byte配列→文字列→Byte配列の方法策 / io (18/04/16(Mon) 13:54) #87146
Re[1]: Byte配列→文字列→Byte配列の方法策 / furu (18/04/16(Mon) 14:21) #87147
Re[1]: Byte配列→文字列→Byte配列の方法策 / 魔界の仮面弁士 (18/04/16(Mon) 15:18) #87148
Re[1]: Byte配列→文字列→Byte配列の方法策 / 魔界の仮面弁士 (18/04/16(Mon) 16:50) #87149
  └ Re[2]: Byte配列→文字列→Byte配列の方法策 / io (18/04/16(Mon) 17:47) #87150
    └ Byte配列→文字列→Byte配列の方法策 / 魔界の仮面弁士 (18/04/16(Mon) 19:47) #87151 ←Now
      └ Re[4]: Byte配列→文字列→Byte配列の方法策 / io (18/04/17(Tue) 09:03) #87155

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信