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

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-06-GREEN_O20140125-thumb-1000xauto-16629 (1)

Javaからプログラム始めたけど関数で躓いて3日経った

1: 以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:05:24.6

記事を読む

スクリーンショット 2014-05-17 23.23.10

javaとかオブジェクト指向とか簡単すぎなんだけど

1: 以下、名無しにかわりましてVIPがお送りします 投稿日:2014/02/09(日) 22:

記事を読む

image008

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

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

記事を読む

https---www.pakutaso.com-assets_c-2015-05-DEBU85_onakapc15155025-thumb-1000xauto-15833

プログラミング初心者だけど何か簡単なソフトかアプリ作りたいんだが

1: 以下、\(^o^)/でVIPがお送りします 2015/07/11(土) 09:56:26.2

記事を読む

2cea435b

おーぷん2ちゃんねる管理人『矢野さとる』、ガチでプログラミングの申し子だった

1: 名無しさん@おーぷん 2015/09/20(日)18:43:31 ID:u5O 1

記事を読む

operator03

プログラミングやってるんだけど、シフト演算子で詰んだ・・・・

1: 以下、\(^o^)/でVIPがお送りします 2015/11/15(日) 12:43:11.9

記事を読む

https---www.pakutaso.com-assets_c-2015-06-WEB86_bonpc20150207122815-thumb-autox1000-18166

プログラミングのクライアントPC:Mac VS Windows VS Ubuntu VS Mint

1: 名無し募集中。。。@\(^o^)/ 2015/07/25(土) 21:57:22.84 0.

記事を読む

53874076d99cd0de764cadd23c5706e3_s

C言語の深淵を見たら勉強する気が失せた

1: 以下、\(^o^)/でVIPがお送りします 2015/05/31(日) 18:51:29.3

記事を読む

https---www.pakutaso.com-assets_c-2015-01-LISA78_MBAsawaru20141018102912500-thumb-1000xauto-5892

linuxインストールしたはいいがOS元に戻せなくなったったったwwwww

1: 以下、\(^o^)/でVIPがお送りします 2014/11/12(水) 18:04:20.7

記事を読む

https---www.pakutaso.com-assets_c-2013-06-PAK12_10many500-thumb-1000xauto-3089

何でニートはプログラミングを覚えたがるの?

1: 以下、\(^o^)/でVIPがお送りします 2014/12/01(月) 14:28:06.7

記事を読む

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 ↑