質問編集履歴

3

受信と送信のタイミングを比べてみましたがだめです

2017/05/31 03:00

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -91,3 +91,71 @@
91
91
 
92
92
 
93
93
  ```
94
+
95
+
96
+
97
+ 受信を外に出してみましたが
98
+
99
+ うまくできないです
100
+
101
+ ```javascript
102
+
103
+ var currentSendTime = Date.now();
104
+
105
+ var currentRecieveTime = currentSendTime;
106
+
107
+
108
+
109
+ sp.write( 'something', function(err, bytesWritten) {
110
+
111
+ currentSendTime = Date.now();
112
+
113
+ currentRecieveTime = currentSendTime;
114
+
115
+ fs.writeFileSync( '/time.txt' , currentRecieveTime );//現在の時間をファイルに書き出し
116
+
117
+
118
+
119
+ var intervalTime = setInterval( function () {//インターバルタイマーをセット
120
+
121
+ currentRecieveTime = parseInt(fs.readFileSync('/time.txt' , 'utf8'));//受信した時間を取得
122
+
123
+
124
+
125
+ if(currentRecieveTime > currentSendTime){ //送った時間より受信した時間があとタイマーストップ
126
+
127
+ clearInterval(intervalTime);
128
+
129
+ console.log('recieved data');
130
+
131
+ }
132
+
133
+
134
+
135
+ var nowTime = Date.now()
136
+
137
+ if (nowTime > (currentSendTime + 500)){//500msを越えればタイマーストップ
138
+
139
+ clearInterval(intervalTime);
140
+
141
+ console.log('timeout');
142
+
143
+ }
144
+
145
+ },10);//10msおきにチェック
146
+
147
+ });
148
+
149
+
150
+
151
+ sp.on('data', function(input) {
152
+
153
+ currentRecieveTime = Date.now();
154
+
155
+ fs.writeFileSync( '/time.txt' , currentRecieveTime );
156
+
157
+ }
158
+
159
+
160
+
161
+ ```

2

call backの中に入れてみましたが

2017/05/31 03:00

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,51 @@
43
43
 
44
44
 
45
45
  こんな感じでnodeを使ってシリアル通信を行なっているのですが、通信が成功したかどうか確かめたいので同期的にsp.writeを行い帰ってきたデータと比較したいのですが、同期的に行うにはどうすればいいでしょう?
46
+
47
+
48
+
49
+ こんな風にコールバックの中に受信を入れてみましたが、同じことでした
50
+
51
+ ```javascript
52
+
53
+ var serialport = require('serialport');
54
+
55
+ var portName = '/dev/ttyAMA0';
56
+
57
+ var sp = new serialport.SerialPort(portName, {
58
+
59
+ baudRate: 9600,
60
+
61
+ dataBits: 8,
62
+
63
+ parity: 'none',
64
+
65
+ stopBits: 1,
66
+
67
+ flowControl: false,
68
+
69
+ parser: serialport.parsers.readline('\r')
70
+
71
+ });
72
+
73
+
74
+
75
+ sp.write( 'mydata\r', function(err, bytesWritten) {
76
+
77
+ sp.on('data', function(input) {
78
+
79
+ var buffer = new Buffer(input, 'utf8');
80
+
81
+ var sig = buffer.toString();
82
+
83
+ console.log(sig);
84
+
85
+ }
86
+
87
+ console.log('send serial written: ', bytesWritten);
88
+
89
+ });
90
+
91
+
92
+
93
+ ```

1

受信を書くのを忘れました

2017/05/29 05:45

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,16 @@
28
28
 
29
29
  });
30
30
 
31
+ sp.on('data', function(input) {
32
+
33
+ var buffer = new Buffer(input, 'utf8');
34
+
35
+ var sig = buffer.toString();
36
+
37
+ console.log(sig);
38
+
39
+ }
40
+
31
41
  ```
32
42
 
33
43