![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
このように入力された時間をPICマイコンからシリアル通信でPCに送信したいのですが、
数字を入力しても「hour:」となって数字が表示されません。
int型ではないので素直に行かないことは想定していましたが、
調べても??でした。
char型なのは、数字だけでなく文字も入力するためです。
知恵をお貸しください。m(_ _)m
PICは16F1938です。
ターミナルコンソールは、Tera Termです。
hhの変数はchar型です。
RXBUFF_3[]の型はchar型です。
out_put_tx();関数はRS-232Cポートからデータを出力する関数です。
*下記、ソース抜粋
*****************************************************************************
// 入力された時間(文字)を2次元配列から取り出して10の位にして変数hhに代入
hh = RXBUFF_3[0] * 10;
// 入力された時間(文字)を2次元配列から取り出して10の位と足す
hh += RXBUFF_3[1];
// 下記、1バイトづつ送信
out_put_tx('h);
out_put_tx('o');
out_put_tx('u');
out_put_tx('r');
out_put_tx(':');
// 1バイトづつしか送信できないので、10の位と1の位に分けて送信
out_put_tx(hh / 10);
out_put_tx(hh % 10);
out_put_tx('\n'); // 改行
out_put_tx('\r'); // 復帰
No.5ベストアンサー
- 回答日時:
RXBUFF_3[] に数値ではなく、数字が入っているのでしょうね。
hh= (RXBUFF_3[0] - 0x30)*10;
hh+= RXBUFF_3[1] - 0x30;
としたらどうですか。
ありがとうございます。!!
この様に変更したところ、無事に出力が正常に出来ました。
hh= (RXBUFF_3[0]-0x30)*10;
hh+= RXBUFF_3[1]-0x30;
out_put_tx(0x30+(hh/10));
out_put_tx(0x30+(hh%10));
No.4
- 回答日時:
hh= RXBUFF_3[0]*10;
hh+= RXBUFF_3[1];
の計算のあと、hh には 10 または 11 が入っていますか。
rs_out_tx(0x30 + (1));
rs_out_tx(0x30 +(2));
を実行したらどうなりますか。
No.1
- 回答日時:
>// 入力された時間(文字)を2次元配列から取り出して10の位にして変数hhに代入
>hh = RXBUFF_3[0] * 10;
>// 入力された時間(文字)を2次元配列から取り出して10の位と足す
>hh += RXBUFF_3[1];
例えば…18時と入力した場合、上記のRXBUFF_3[0]とRXBUFF_3[1]にはどういう値が入りますか?
その上で……
>// 1バイトづつしか送信できないので、10の位と1の位に分けて送信
>out_put_tx(hh / 10);
>out_put_tx(hh % 10);
「数値」と「数字」の違いは認識していますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# [至急]Project Euler:#17Number letter countsコード入力出力解説 2 2022/09/24 02:46
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- 数学 単位法ベクトルの問題を教えて下さい。 3 2023/05/30 19:22
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- F1・モータースポーツ 【F1】2026年に日本のホンダが2年半ぶりにマクラーレンにPUを提供してタッグを組ん 1 2023/06/05 21:23
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
行列の表示
-
1~100までの数字を表示し、か...
-
System.err. printlnとSystem.o...
-
Javascript で、0000 から 9999...
-
ダブルクォーテーション(””)...
-
Javaで改行などが出来ないのです。
-
ジャバスクリプトについて。
-
パソコンキーボードで時分秒を...
-
javaのプログラミングで作るRPG...
-
複数のテキストボックスに同じ...
-
C言語のポインターに関する警告
-
*で正三角形を出力
-
プログラミングの問題です。大...
-
JSPやサーブレットでSystem.out...
-
IF関数でEmpty値を設定する方法。
-
C言語の変数(LSB)の合わせ込...
-
論理演算子”||”またはの入力方法
-
privateなフィールドは継承され...
-
戻り値を使用する呼出
-
n番目に大きな値を探索する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
Javaで改行などが出来ないのです。
-
flush()とclose()について
-
Log4jで機能毎に別ファイルへ出...
-
System.out.printlnの出力先
-
1~100までの数字を表示し、か...
-
Eclipseのコンソールを常に表示...
-
system.out.printが出力されない
-
JAVAのServletで、画像表示につ...
-
1~100までの数字を表示したい
-
テキストエリアで改行する
-
switch分が機能しません。
-
Tomcatが無応答となる現象が起...
-
一定のスペースを空けて端を揃...
-
数字文字列をパック10進数に変...
-
JavaScriptの変数をjavaのメソ...
-
バイトスワップ
-
tomcatのstdout.logを停止したい。
-
Java 九九の表について
-
ダブルクォーテーション(””)...
おすすめ情報
回答有り難うございます。
補足です。
>例えば…18時と入力した場合、
RXBUFF_3[0]には「1」、RXBUFF_3[1]には「8」と入ります。
>「数値」と「数字」の違い
数値は「数そのもの」数字は「文字列」と認識していますが、合っていますでしょうか?
0は、0x00(NULL文字)
'0'は、0x30
で合っていると思います。
下記のようにしましたが、
RXBUFF_3[0]に1
RXBUFF_3[1]に0
と入力すると出力が26
同11と入力すると出力が27と出力されてしまいました。
hh= RXBUFF_3[0]*10;
hh+= RXBUFF_3[1];
rs_out_tx(0x30 + (hh/10));
rs_out_tx(0x30 +(hh%10));
hh= RXBUFF_3[0]*10;
hh+= RXBUFF_3[1];
>の計算のあと、hh には 10 または 11 が入っていますか。
12と入力しましたが、直接数値を見れないため、内蔵EEPROMに書き込んだ場合は
出力は、10進で26となっていました。
コレはおかしいです。
また??状態です。
rs_out_tx(0x30 + (1));
rs_out_tx(0x30 +(2));
とした場合は、出力は12です。