質問1
足し算をすると数字が減ります。なぜでしょうか?
C++
1union { 2 BYTE data[8]; 3 struct { 4 unsigned aaa : 8; 5 unsigned bbb : 8; 6 unsigned ccc : 4; 7 ... 8 ... 9 } bit_0; 10} SendData; 11 12DebugLogTime(); 13SendData data; 14memset(data, 0, sizeof(SendData)); 15data.bit_0.ccc++; 16DebugLogValue(data.bit_0.ccc); 17data.bit_0.ccc++; 18DebugLogValue(data.bit_0.ccc); 19data.bit_0.ccc++; 20DebugLogValue(data.bit_0.ccc); 21data.bit_0.ccc++; 22DebugLogValue(data.bit_0.ccc); 23... 24... 25... 26DebugLogTime();
出力
01:01:01
1
2
3
4
5
6
7
...
...
...
00:59:57
質問2
ビットの値とバイトの値が違います。
なぜでしょうか?
C++
1union { 2 BYTE data[8]; 3 struct { 4 unsigned aaa : 8; 5 unsigned bbb : 8; 6 unsigned ccc : 4; 7 ... 8 ... 9 } bit_0; 10} ReceiveData; 11 12ReceiveData data; 13DebugLogValue(data.bit_0.ccc); 14DebugLogHex(data.data[2]);
出力
0
E0
追記
無理です。
追記
この世のものとは思えない動きです。
全く意味不明です。
なぜでしょうか?
追記
適当な想像で何かの可能性を語ってくれる人の回答を求めています。
追記
ソースコード全体がないとわからない低レベルな人の低評価や丸投げ指摘は要りません。
1、足し算のインクリメントをするとログに出てくる数字が減っていく。
2、unionのビット変数とバイト変数の値が異なる。
これだけの情報から考えられる可能性を適当に語れるハイレベルな人材からの回答をお待ちしております。
ちなみに1番についてはログ出力関数がおかしいのではないかと思っています。来週会社に行ったらログ出力にミリ秒単位の時刻を追加する予定です。
2番については変数の値をif文で判定しているところでも==0の方に分岐しているので、ログ出力関数の問題ではないと思っています。
追記
テラテイルに指名回答リクエスト機能があるならy_waiwaiさんの当てずっぽうの適当な推測を聞きたいです。
指名回答リクエスト機能はあるのでしょうか?
追記
コントローラ側はWindowsなのでリトルエンディアンです。
モーター側は仕様書を見直さないとわからないため、月曜日までわかりません。
追記
raccy さん
それは質問の修正依頼ではなくて回答ですよね?
回答欄の書いて頂きたいです。
その回答は面白いけど、さすがに違うと思います。
一応30年の歴史があるソフトウェアなので、そこまでめちゃくちゃなログ出力関数ではないと思います。
FKDさん
ベストアンサーです。
回答欄に書いて下さい。
回答1件
あなたの回答
tips
プレビュー