| ■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 部分をどう管理するのかによって、 コーディングが変わってくることになるかと。
> 外に保存し 「シリアル通信」でもデータを受け取り、「ファイル」でも受け取るのですか?
どちらのデータがより優先させるのか、 ファイルを開いている間に届いたシリアル通信のデータはどのように扱われるのか、 そのファイルを「読み取る」だけでなく「書き込む」こともするのなら、排他制御の問題は、 などなど、話が複雑化するような気がします…が、こちらはデータの流れを 把握しているわけではないので、どうすべきかという点にまでは言及し難いです。 |