
やりたいことは、
電話がかかってきた際にアロハPC1(ナンバーディスプレイ)から
着信番号を受信して、
番号に該当する会員情報(DBから)をWEB画面に表示したいのです。
SerialDebugというソフトを使って、情報は取得できていると思います。
下記のような感じでいろいろ出てきます。
[TEXT] こ0ア3アイアイク090ア6ア5クキ00
[CHAR] _sp _sp 0 _sp 3 _sp _sp 0 _sp _sp 0 9 0 _sp 5 _sp 9 _sp _sp 5 5 _sp _sp _sp _sp _sp _sp _sp _sp _sp _sp
[DEC] 130 177 48 177 51 177 178 48 178 184 48 57 48 177 53 57 57 184 183 53 53 160 160 160 160 160 160 160 160 160 3
[HEX] 82 B1 30 B1 33 B1 B2 30 B2 B8 30 39 30 B1 35 B1 39 B8 B7 35 35 A0 A0 A0 A0 A0 A0 A0 A0 A0 03
この時点で、このわけの分からないデータ(信号?)をどうすれば着信番号になるのかさっぱりです。
[HEX]の " 30 39 30 B1 35 B1 39 B8 B7 35 35 "
から 09015198755
というテストに使っている携帯番号が取れるのが分かります。
(ここに書いてある番号は適当です。)
とりあえず、このデータはどういう風に解析して正確な着信番号にすればいいのでしょうか?
また、これをJavaのRXTXライブラリを使用して取得したいと考えていて、
下記、サンプルソースを真似して実行してみました。
http://www.javainthebox.net/JavaForFA/08-09CommA …
の中の./src/DumbTerminal.java
すると、イベント処理ルーチンのデータの読み込みのときにエラーが発生してしまいます。
java.io.IOException: Underlying input stream returned zero bytes
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at SerialTest.serialEvent(SerialTest.java:67)
at gnu.io.RXTXPort.sendEvent(RXTXPort.java:732)
at gnu.io.RXTXPort.eventLoop(Native Method)
at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
こんな感じです。
これは何が原因なのでしょうか?
少ない情報で申し訳ありませんが、
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
" 30 39 30 B1 35 B1 39 B8 B7 35 35 " のうち、
30 31 32 … 39 は、そのままで0~9を表す文字コードですね。
でも B1 や B8 B7 を、31、38、37に変換しないといけないので、
マスクという小技を使います。
Javaの基本的なことは分かっているとして、上記の
16進のデータから電話番号を取り出す部分はこうなります。
public static void main(String[] args) {
// 16進で" 30 39 30 B1 35 B1 39 B8 B7 35 35 " のデータ
int[] data = {0x30, 0x39, 0x30, 0xB1, 0x35, 0xB1, 0x39, 0xB8, 0xB7, 0x35, 0x35};
StringBuilder sb = new StringBuilder();
for (int x : data) {
char c = (char) (x & 0x3F); // 3Fでマスクする
sb.append(c);
}
String phoneNumber = sb.toString(); // "09015998755" になる
System.out.println(phoneNumber);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 新卒・第二新卒 就活 新卒 自己PR 強み 添削お願いします。 以下の文章で自己PRを書いてみたのですが、どこが競争 3 2023/02/25 21:27
- 演歌・歌謡曲 シングルレコードの事でお聞きしたい。 4 2022/10/01 14:27
- スピーカー・コンポ・ステレオ スピーカーの高音再生限界チェックで7KHzが限界 10 2023/04/20 13:38
- フィルムカメラ・インスタントカメラ アサヒペンタックスSPについて 2 2022/11/14 12:24
- Amazon Amazonの返品 2 2022/08/23 00:15
- 警察官・消防士 今日福島の夜の森に岸田総理が来ててすごい数のSPだったんですが総理って普段何人のSPがついてるんです 3 2023/04/01 19:22
- その他(悩み相談・人生相談) 安倍さん銃撃事件 spが叩かれていますが spが犯人と安倍さんの 間に入らなかったのは spに死ぬ勇 9 2022/07/10 19:17
- 化学 参考書に、CO2の混成軌道についての説明が写真のようになっていました。 Cがsp混成軌道をとるのは理 4 2023/03/19 20:59
- 仕事術・業務効率化 ワイ25歳ニート。 日本のSPって役立たずなの?守るのが仕事じゃないの? 俺がSPになってやる 2 2022/07/08 20:32
- 事件・事故 岸田総理のSP 4 2023/05/14 12:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラスパスがとおりません。
-
動くプログラムと動かないプロ...
-
CPUの個数
-
FirefoxでJava Appletが表示で...
-
Javaにてシリアル通信を行って...
-
Lunux で Java をするには?
-
[JAVA]ProcessBuilderで「java ...
-
execでdirコマンドを実行すると...
-
javaアプレットでゲームを作り...
-
一斉コンパイルのバッチファイ...
-
アプレットとテキストファイル
-
エラーなのですが…
-
アッパチとJBOSSの連携方法?
-
shellの呼び出し
-
javaについて知っていますか?
-
WebAPIをJavaScriptで利用できる?
-
eclipseからDBへの接続
-
Fileクラス
-
xoeshift
-
DB呼び出すページのはずなので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
struts2環境構築で不具合が出て...
-
javaからデータベースに接続 エ...
-
propertiesが読み込めなくてnul...
-
java と javax の違いは?
-
JAVA実行時エラーについて教え...
-
JNIでロードするライブラリが見...
-
AntでのJunitの試験
-
log4jを使用し、JAVAのバッチプ...
-
エラーを全て見たい
-
Eclipseにdllがうまく読み込めない
-
System.inをClose()すると例外...
-
applet windowのだしかた
-
java用語集
-
リクエストパラメータを暗号化...
-
-Applet表示でのjava.lang.Clas...
-
[RMI]UnicastRemoteObject.expo...
-
相対パスを絶対パスに。
-
JSFで、マネージビーンに画面の...
-
Tomcatでエラー
おすすめ情報