プログラミングとかプロトコルに詳しい人!!

1: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:06:47.945 ID:p7MHPvCw00808.net

シリアル通信で

0b00101101

みたいな8bitのデータを8個(コレを1ブロックとする)送りたい。
データは順番が大事だから、先頭にヘッダー1byteをつけて先頭が分かるようにしたい。

[ヘッダー1byte][データ8bit][データ8bit][データ8bit][データ8bit][データ8bit][データ8bit][データ8bit][データ8bit]

↑これを何回も送っていく感じです。
質問はヘッダーをどう考えれば良いか。

‘H’という文字を送るにしても、データ8bitの中にはアスキーコードが’H’と同じものが存在する。
データは0b00000000~0b11111111まであり得るのでヘッダーをどうやって認識すればいいか分からなくて困っておる

助けてくれ

5: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:15:41.473 ID:XLrA3GWl00808.net
あくまでも順番だよ、プログラムだってバイナリになったら数字の羅列しかないから順番に実行するしかない。

スポンサーリンク

6: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:19:58.380 ID:ribeDjxL00808.net
よく考えたけどこれだけじゃ無理でしょ
そもそも8個って決まってるなら
信号の最初ですーって専用の信号を送って
そこからの順番だけで判断できるだろうし
なんでそんなことする必要があるのかがわからん

 

7: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:22:35.775 ID:p7MHPvCw00808.net

>>5
その順番の先頭を把握するためにヘッダーバイトを送るのがプロトコルでしょ
ヘッダーを受信するまでの間に受信したデータは全て破棄するのでは

>>6
ただ最初の信号ですーって言っても
同じビット列がデータの中にも存在する可能性があるから困っている

 

9: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:23:42.199 ID:p7MHPvCw00808.net
>>6
なんでそんなことする必要があるのか分からないと言われても
通信系のプログラムを書こうとすると絶対に必要にならないかね・・・
そのためにプロトコルを定義しないといけないわけだし・・・

 

8: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:23:39.711 ID:DH987rtvp0808.net
普通に回避コード挟めばいいじゃん

 

10: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:25:25.447 ID:p7MHPvCw00808.net
>>8
回避コードって具体的には何になるのです?

 

13: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:28:09.525 ID:DH987rtvp0808.net
よくやるのは、’H’が二回続いたらデータのHと判断して
1回だったらスタートコードと判断するとか
って感じが簡単な実装かな

 

14: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:29:12.974 ID:I+qRsLGc00808.net
俺はアプリしか分からんけど1byteのヘッダって短すぎな感じが・・・
シリアル通信っていっても送るデータはパケット単位じゃないの?

 

18: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:31:59.349 ID:p7MHPvCw00808.net

>>13
あ、まさにそれを今思いついたです!
ちょっと実装してみます

>>14
シリアル通信は1回の送信は1byte
まぁ今はPCとArduinoで通信してるのだがArduino側でも1byteずつしか受け取れない
・・・のはず

 

22: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:36:37.574 ID:I+qRsLGc00808.net

>>18
なるほど、Auduinoか
なかなか面倒くさいことやってんなあ

俺ならやりたいこと決まってたらRaspberryPiにするわ
OSって優秀なもんがあるし車輪の再開発はしない精神で

 

21: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:36:00.416 ID:Tm0g5FLx00808.net

ヘッダ1111 1111
データ0000 0000~0111 1111

通信関係知らん俺が考えたさいきょうのでーた

 

24: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:38:54.674 ID:p7MHPvCw00808.net

>>21
それはよくやるやり方なんだけど、
残念ながら今回はデータ部に0b11111111も含まれる可能性があるのです

>>22
ラズパイは持ってないのです
AVRマイコンで最終的にはやるんだけど
とりあえずプロトタイプだからArduinoでやるのが早い

 

25: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:42:24.113 ID:XLrA3GWl00808.net
エラーの検出機能がないのだから正誤の判定が出来ないのでは?HHが検出できても化けていればどうしようもない。
>>18
1Byteをたくさん受け取って、全体としてパケットとして処理すると思うよ。

 

15: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:29:26.231 ID:p7MHPvCw00808.net

通信量は2倍になるけど
データ1ブロックの先頭に’D’を毎回つけて送れば良いのか!!
ヘッダーは”HH”にしておけばデータ部分は絶対に

DX (Xは8ビットの数値)

ヘッダー部分は

HH

になるから、データ部分でHHという列は絶対に出てこないからこれでいけるかも・・・?
ただ通信料2倍になるのは辛いな

 

16: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:30:33.978 ID:XLrA3GWl00808.net
受信したデータは全て処理する、プロトコルが間違っていたらエラーを返す。
0~Fまでの数字しかないのだから見分けるのは無理、どーしてもと言うなら何か特別な数字体系にして
ヘッダはデータの中で使わないようにするしかない。

 

20: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:35:32.308 ID:p7MHPvCw00808.net
>>16
間違ってるのに、間違っていないと見なされる可能性があるので
やはりそのやり方もNGです

 

26: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:42:43.022 ID:DH987rtvp0808.net
CRCとエンドコードくらい入れたら

 

27: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:44:17.617 ID:IA/LvxR+p0808.net
ヘッダに対してパケットの長さが長過ぎる
通信に関しての本一冊買えばわかる話だろ

スポンサーリンク

28: 以下、\(^o^)/でVIPがお送りします 2015/08/08(土) 15:51:24.372 ID:DH987rtvp0808.net
>>27
小規模機器同士のローカル通信なんかこんなもんだよ
昔こんなのよく作ったけど

引用元: http://viper.2ch.sc/test/read.cgi/news4vip/1439014007/

関連記事

https---www.pakutaso.com-assets_c-2015-02-BON85_pcsutu20150207161815500-thumb-autox1000-12110

パソコン持ってるならプログラミング、作曲、作画、3DCG、動画作成できて当たりまえだよな

1: 以下、\(^o^)/でVIPがお送りします 2015/05/16(土) 18:25:04.4

記事を読む

r2002

Webアプリの複数ユーザーから参照されるオブジェクトを管理するための仕組み

1: 以下、\(^o^)/でVIPがお送りします 2015/09/21(月) 19:15:41.3

記事を読む

https---www.pakutaso.com-assets_c-2015-06-LISA78_MBAsawaru20141018102912-thumb-1000xauto-17983

なんでプログラミングって義務教育で学ぶ機会がないの?

1: 以下、\(^o^)/でVIPがお送りします 2015/06/13(土) 10:24:32.0

記事を読む

https---www.pakutaso.com-assets_c-2015-01-DI_IMG_5780500-thumb-1000xauto-5853

優しい○○系でC言語の勉強してるんだけど 全然優しくない件

1: 以下、\(^o^)/でVIPがお送りします 2015/05/09(土) 23:59:40.2

記事を読む

c561d52a81b982d24f5890bd0205d95f_s

PCのブラウザ開くと変な広告が表示されるんだがこれって何?

1: 以下、\(^o^)/でVIPがお送りします 2015/04/23(木) 15:11:18.7

記事を読む

86b8f07f598b2a88b0fbf26232b43f2b_s

cronで指定した時間にphpを使ってメール送信したいけど出来ないの(´;ω;`)

1: 以下、\(^o^)/でVIPがお送りします 2015/05/27(水) 00:16:42.7

記事を読む

macro1

C言語でマクロ推奨してる奴って何なの?

1: 以下、\(^o^)/でVIPがお送りします 2015/10/08(木) 09:03:23.7

記事を読む

https---www.pakutaso.com-assets_c-2014-10-AL206_kinshi220140810213504500-thumb-1000xauto-5422

面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?

1: ジャンピングエルボーアタック(埼玉県)@\(^o^)/ 2015/01/23(金) 19:

記事を読む

https---www.pakutaso.com-assets_c-2015-05-N866_sikamettura-thumb-1000xauto-14778

来年から情報系の専門行くからプログラミングの勉強をしておきたいんだが、初心者でもC言語覚えられるかな?

1: 以下、\(^o^)/でVIPがお送りします 2015/09/24(木) 10:43:41.7

記事を読む

image008

お前らGUIアプリの変数名どうやって決める?出来ればわかりやすいのが良い

1: 以下、\(^o^)/でVIPがお送りします 2015/09/17(木) 20:33:19.8

記事を読む

Huawei-Mate-8-benchmark-post-launch_1
Androidのベンチマーク、10万点を突破 インフレが止まらない

1: 番組の途中ですがアフィサイトへの\(^o^)/です (ニククエ

hGJvbfh
せっかくの休みだ。原付で>>5に行く。

1: 名無しさん@おーぷん 2015/11/29(日)06:13:2

9xHNnte
XperiaZ5からdocomoのロゴだけ消せるシートが発売開始

1: 番組の途中ですがアフィサイトへの\(^o^)/です (アウアウ

bsLISA78_MBAsawaru20141018102912
子供にプログラミング教えることになりそうなんだが、どうやって教えたら良いんだ?

1: 以下、\(^o^)/でVIPがお送りします 2015/11/2

top
国内で最大容量の8THDDが2万円台に値下がり

1: 海江田三郎 ★ 2015/11/29(日) 14:43:35.

→もっと見る

PAGE TOP ↑