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

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-PAK88_tetuyaakenosyain20141123141151-thumb-1000xauto-18076 (1)

C言語PHPマスターしたけどプログラマーになりたくないでござる

1: 以下、\(^o^)/でVIPがお送りします 2015/07/06(月) 03:26:56.3

記事を読む

https---www.pakutaso.com-assets_c-2014-12-OK76_iphone6hikusugi20141221141320500-thumb-1000xauto-5795

高校生の開発したAndroidのゲームが凄い事になってるwwwwwwwwwwww

1: 名無しさん@おーぷん 2014/12/21(日)20:26:09 ID:O5U 開発期間→

記事を読む

easyidec3

一見まともだが悪意のあるコードを競うC言語コンテスト開催

1: ハーフネルソンスープレックス(宮城県)@\(^o^)/ 2015/08/19(水) 22:

記事を読む

スクリーンショット 2014-04-15 0.11.54

プログラマですが質問とかありますでしょうか?

1: 名無しさん 2014/03/11(火)02:30:23 ID:rD99MZNu6 底辺です

記事を読む

https---www.pakutaso.com-assets_c-2015-08-0I9A350615032140wakaranai-thumb-1000xauto-18998

これからプログラミング始めたいんだけど、これだけは押さえとけって事ある?

1: 以下、\(^o^)/でVIPがお送りします 2015/09/30(水) 22:33:55.1

記事を読む

dt-mthread01_01

マルチスレッドのバリアが役立つケースってどんなの?

1: 以下、\(^o^)/でVIPがお送りします 2015/08/15(土) 07:39:42.7

記事を読む

https---www.pakutaso.com-assets_c-2015-01-LISA78_hozonshitene-20141018102704500-thumb-autox1000-5887

お前らってパソコン関連のことっていつ覚えたの?

1: 以下、\(^o^)/でVIPがお送りします 2015/05/12(火) 22:21:44.3

記事を読む

a02bacad

Windows上での2つのテキストを解析して別のテキストに出力するのにオススメの言語教えてくれ

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

記事を読む

4b505a4467abfb46b0a8a1254296b885_s

変数名を食べ物にしてソース書いてるけど別にいいよね

1: 以下、\(^o^)/でVIPがお送りします 2015/05/14(木) 09:04:13.3

記事を読む

PAK15_notepenhikkiyougu20140312500-thumb-923x600-4327

【科学】人工知能「東ロボくん」、センター模試で英語を平均越え。会話文で点数伸ばす 合格の可能性は8割

1: すらいむ ★@\(^o^)/ 2014/10/31(金) 12:03:44.72 ID:?

記事を読む

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 ↑