質問編集履歴

1

現状できたところまでと課題点を記載しました。

2018/12/23 07:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,3 @@
1
- シリアル通信で受信したデータから欲しい情報だけ抜き出して送信したい(別PCにUSB接続で)
2
-
3
-
4
-
5
1
  シリアル通信で受信したデータから欲しい情報だけ抜き出して別PCにUSB接続で送信したいです。
6
2
 
7
3
  シリアル通信に関して全くの初心者であるため、詳細な手順を教えて頂けますと幸いです。
@@ -12,29 +8,7 @@
12
8
 
13
9
  //現状
14
10
 
15
- processingで、import processing.serial.*;を使って試みているのですが、以下のエラになりました。
11
+ processingで、import processing.serial.*;を使って試みているのですが、以下のエラ画面表示まではできるようになりました。
16
-
17
- processingではできない場合、他の方法を教えてください。
18
-
19
- //コンソール
20
-
21
- COM3
22
-
23
- java.lang.RuntimeException: Error opening serial port COM3: Port busy
24
-
25
- at processing.serial.Serial.<init>(Unknown Source)
26
-
27
- at processing.serial.Serial.<init>(Unknown Source)
28
-
29
- at temperature.setup(temperature.java:31)
30
-
31
- at processing.core.PApplet.handleDraw(PApplet.java:2404)
32
-
33
- at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1557)
34
-
35
- at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)
36
-
37
-
38
12
 
39
13
  //ソース
40
14
 
@@ -44,78 +18,72 @@
44
18
 
45
19
  String datastr;
46
20
 
47
- PrintWriter output;
48
-
49
- int count = 1;
50
-
51
-
52
-
53
- void setup()
54
-
55
- {
56
-
57
- size(200,200);
58
-
59
- frameRate(60);
60
21
 
61
22
 
23
+ void setup() {
62
24
 
63
- println(Serial.list());
25
+ size(1000, 500);
64
26
 
65
- myPort = new Serial(this, Serial.list()[0], 9600); //COM1
27
+ background(0,0,0);
66
28
 
67
- myPort.bufferUntil('\n');
29
+ myPort = new Serial(this, Serial.list()[0], 115200);
68
30
 
69
- }
31
+ myPort.clear();
70
32
 
71
-
72
-
73
- void draw() {
74
-
75
-
76
-
77
- if ( myPort.available() > 0) {
78
-
79
- delay(100);
80
-
81
- datastr = myPort.readString();
82
-
83
- int[] tempdata = int(split(datastr, ','));
33
+ myPort.bufferUntil('\n');
84
-
85
- String datetimestr = nf(year(),2)+"/"+nf(month(),2)+"/"+nf(day(),2)+" "+nf(hour(),2) + ":" + nf(minute(),2) + ":" + nf(second(),2);
86
-
87
- String tempstr = String.format("% 4.1f,% 4.1f",tempdata[0],tempdata[1]) ;
88
-
89
- output.println(datetimestr + "," + tempstr );
90
-
91
- }
92
34
 
93
35
  }
94
36
 
95
37
 
96
38
 
97
- void serialEvent(Serial myport){
39
+ void draw() {
98
40
 
99
- String mystr = myport.readStringUntil('\n');
41
+ if ( myPort.available() > 0) {
100
42
 
101
- mystr = trim(mystr);
43
+ delay(100);
102
44
 
45
+ datastr = myPort.readStringUntil('\n');
46
+
47
+ datastr = trim(datastr);
48
+
49
+ String datetimestr = nf(year(),2)+"/"+nf(month(),2)+"/"+nf(day(),2)+" "+nf(hour(),2) + ":" + nf(minute(),2) + ":" + nf(second(),2);
50
+
51
+ text(datetimestr + "," + datastr,10,200);
52
+
103
- println(mystr);
53
+ println(datastr);
54
+
55
+ }
104
56
 
105
57
  }
106
58
 
107
59
 
108
60
 
61
+ //画面上
109
62
 
110
-
111
- //欲しいデータ
112
-
113
-
114
-
115
- (変換前)::tp=2115:hm=4968 ※←Tera Termで確認
63
+ 2018/12/23 16:23,::lq=168:ct=01CC:ed=810EBFF2:id=33:ba=3310:a1=0400:a2=0453:te=2213:hu=6275
116
-
117
- (変換後)2115,4968
118
64
 
119
65
 
120
66
 
67
+ ここから、
68
+
69
+ (変換前)::lq=168:ct=01CC:ed=810EBFF2:id=33:ba=3310:a1=0400:a2=0453:te=2213:hu=6275
70
+
71
+ (変換後)(timestamp) 2213,6275
72
+
73
+ のように書き換えて、別COMポートに送信したいです。
74
+
75
+
76
+
77
+ //課題
78
+
121
- た時間経過が分かるようにに受信しデータか確認できるように先頭にtimestampを付けです
79
+ 受信ではどうにか助言をいだき、できるようになっですが、
80
+
81
+ 下記2点がまだ解決しておりません。
82
+
83
+ ・文字列からteとhuのみを抜き出す
84
+
85
+ ・データ整理後、別COMポートへ送信する
86
+
87
+
88
+
89
+ 助言のほど、お願いいたします。