複数バイトの分割

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
なつ

複数バイトの分割

#1

投稿記事 by なつ » 13年前

シリアル通信のUARTモードで送受信処を作成しています。
受信はできたのですが、送信ができません。
12バイトのデータを送信して1バイトづつに分割して配列に格納すると言うものです。
12バイトのデータを1バイトづつに分割するにはどうしたら良いでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 複数バイトの分割

#2

投稿記事 by softya(ソフト屋) » 13年前

環境不明ですが、それだと簡単な答えしか書けません。
配列にして添字で1バイトづつアクセスすれば良いのでは無いでしょうか?
受信が出来たのなら逆にするだけなんですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 複数バイトの分割

#3

投稿記事 by beatle » 13年前

12バイトのデータというのは具体的に何ですか?構造体でしょうか?

基本的にはデータの先頭アドレスを1バイト整数の配列へのアドレスだと思ってアクセスすればできます。
大抵の環境だとcharが1バイトの整数ですので、

コード:

struct Hoge data;
unsigned char *p = (unsigned char *) &data;
みたいにすればいいと思います。
あとはポインタpと添字を使って1バイトずつ送ります。

または共用体を使う方法もあります。今は書きませんが興味があったら聞いてください。

なつ

Re: 複数バイトの分割

#4

投稿記事 by なつ » 13年前

送信データは、12バイト分の数字の羅列です。
例えば、0x123456789...
これを、12、34、56、78、のような感じで送信したいのですが、できないでしょうか?
分かりにくくて申し訳ないです。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 複数バイトの分割

#5

投稿記事 by beatle » 13年前

その12バイト分のデータを何らかの変数に格納するやり方が分かるのなら、その変数の先頭アドレスをcharへのアドレスと見なして送信するだけです。
No.3のコード例のdata変数を、12バイトの数字が格納された変数に置き換えればいいです。

なつ

Re: 複数バイトの分割

#6

投稿記事 by なつ » 13年前

申し訳ないですが、
12バイトの変数の型は何にしたら良いですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 複数バイトの分割

#7

投稿記事 by softya(ソフト屋) » 13年前

そもそも12バイトの変数にはどうやって値を入れるつもりでしょうか?
どこから読み込むのですか? それとも初期値ですか?
※ 型についてはbeatleさんが既に書いているんですけどね。

最初に書きましたが、環境やマイコンなど詳細を明かしてくれないとウヤムヤななままでは的確な答えを出すのが難しいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る