2 * @fileOverview AnalogInクラスを定義します。
\r
10 * <a href="https://mbed.org/handbook/Serial">mbed::Serial</a>と同等の機能を持ちます。
\r
12 * @name mbedJS.Serial
\r
13 * @param {mbedJS.Mcu} i_mcu
\r
14 * インスタンスをバインドするMCUオブジェクトです。
\r
15 * @param {[PinName,PinName]} i_params
\r
16 * UARTを構成する2本のピンを指定します。tx,rxの順で設定します。
\r
17 * @param {HashMap|Generator} i_event
\r
18 * 非同期イベントハンドラの連想配列、又はGeneratorです。
\r
20 * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。
\r
22 * <li>{function()} onNew -
\r
23 * インスタンスが使用可能になった時に呼び出されます。
\r
25 * <li>{function()} onFormat -
\r
26 * format関数が完了したときに呼び出されます。
\r
28 * <li>{function(v)} onReadable -
\r
29 * read関数が完了したときに呼び出されます。
\r
31 * <li>{boolean} v - 読出しが可能化の真偽値です。</li>
\r
34 * <li>{function(v)} onWriteable -
\r
35 * write関数が完了したときに呼び出されます。
\r
37 * <li>{boolean} v - 書き込みが可能化の真偽値です。</li>
\r
40 * <li>{function()} onSend_break -
\r
41 * send_break関数が完了したときに呼び出されます。
\r
43 * <li>{function(v)} onPutc -
\r
44 * putc関数が完了したときに呼び出されます。
\r
46 * <li>{int} v - 謎の戻り値です。</li>
\r
49 * <li>{function(v)} onPuts -
\r
50 * puts関数が完了したときに呼び出されます。
\r
52 * <li>{int} v - 謎の戻り値です。</li>
\r
55 * <li>{function(v)} onGetc -
\r
56 * getc関数が完了したときに呼び出されます。
\r
58 * <li>{int} v - 読みだした1バイトの値です。</li>
\r
61 * <li>{function(v)} onGets -
\r
62 * gets関数が完了したときに呼び出されます。
\r
64 * <li>{int} v - 読みだした文字列です。</li>
\r
67 * <li>{function()} onBaud -
\r
68 * baud関数が完了したときに呼び出されます。
\r
72 * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。
\r
74 * @return {mbedJS.Serial}
\r
75 * @example //Callback
\r
76 * var mcu=new mbedJS.Mcu("192.168.128.39",
\r
79 * var uart=new mbedJS.Serial(mcu,[mbedJS.PinName.p9,mbedJS.PinName.p10],{
\r
81 * uart.baud(115200);
\r
85 * uart.send_break();
\r
87 * onSend_break:function(){
\r
88 * uart.format(8,uart.Parity.None,1);
\r
90 * onFormat:function(){
\r
93 * onReadable:function(v){
\r
96 * onWriteable:function(v){
\r
99 * onPutc:function(v){
\r
102 * onGetc:function(v){
\r
103 * uart.puts("1234");
\r
105 * onPuts:function(v){
\r
108 * onGets:function(v){
\r
113 * onClose:function(){
\r
115 * onError:function(){
\r
119 * @example //Generator
\r
120 * var g=function*(){
\r
123 * var mcu=new mbedJS.Mcu("192.168.128.39",g);
\r
124 * yield mcu.waitForNew();
\r
125 * var uart=new mbedJS.Serial(mcu,[mbedJS.PinName.p9,mbedJS.PinName.p10],g);
\r
126 * yield uart.waitForNew();
\r
127 * yield uart.baud(115200);
\r
128 * yield uart.send_break();
\r
129 * yield uart.format(8,uart.Parity.None,1);
\r
130 * v=yield uart.readable();
\r
131 * v=yield uart.writeable();
\r
132 * v=yield uart.putc(32);
\r
133 * v=yield uart.getc();
\r
134 * v=yield uart.puts("1234");
\r
135 * v=yield uart.gets(5);
\r
136 * yield mcu.close();
\r
145 var CLASS=function Serial(i_mcu,i_params,i_handler)
\r
151 if(MI.isGenerator(i_handler)){_t._gen=i_handler;}
\r
152 else if(i_handler){_t._event=i_handler}
\r
155 _t._oid=j.result[0];
\r
156 if(_t._event.onNew){_t._event.onNew();}
\r
157 if(_t._gen){_t._gen.next(_t);}
\r
160 MI.assertInt(i_params);
\r
161 _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1],cb);
\r
163 throw new MI.MiMicException(e);
\r
169 RPC_NS:"mbedJS:Serial",
\r
171 * mbedJS.Serial#format関数に指定する値の種類です。
\r
172 * None,Odd,Even,Forced1,Forced0があります。
\r
173 * @name mbedJS.Serial#Parity
\r
177 None:0,Odd:1,Even:2,Forced1:3,Forced0:4
\r
179 /** @private 最後にコールしたAPIです。*/
\r
181 /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/
\r
183 /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/
\r
185 /** @private リモートインスタンスのオブジェクトIDです。*/
\r
188 * Generatorモードのときに使用する関数です。
\r
189 * Generatorモードの時は、yieldと併用してnew AnalogIn()の完了を待ちます。
\r
190 * @name mbedJS.Serial#waitForNew
\r
193 waitForNew:function Serial_waitForNew()
\r
196 if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}
\r
197 this._lc=CLASS.waitForNew;
\r
199 throw new MI.MiMicException(e);
\r
204 * 関数の完了時にonFormatイベントが発生します。
\r
205 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
206 * @name mbedJS.Serial#format
\r
208 * @param {int} i_bits
\r
210 * @param {int} i_parity
\r
211 * パリティの値です。省略時はmbedJS.Serial#Parity.Noneです。
\r
212 * @param {int} i_stop_bits
\r
213 * ストップビットの値です。省略時は1です。
\r
215 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
217 format:function SerialIn_format(i_bits,i_parity,i_stop_bits)
\r
221 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
222 _t._lc=CLASS.format;
\r
223 var p=[MI.isUndefined(i_bits,8),MI.isUndefined(i_parity,_t.Parity.None),MI.isUndefined(i_stop_bits,1)];
\r
225 return _t._mcu.rpc(_t.RPC_NS+":format",_t._oid+","+p[0]+","+p[1]+","+p[2],
\r
228 if(_t._event.onFormat){_t._event.onFormat();}
\r
229 if(_t._gen){_t._gen.next();}
\r
234 throw new MI.MiMicException(e);
\r
239 * 関数の完了時にonReadableイベントが発生します。
\r
240 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
241 * @name mbedJS.Serial#readable
\r
244 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
245 * @return {boolean}
\r
246 * Generatorモードの時は状態値の真偽値を返します。
\r
248 readable:function Serial_readable()
\r
252 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
253 _t._lc=CLASS.readable;
\r
254 return _t._mcu.rpc(_t.RPC_NS+":readable",_t._oid,
\r
258 if(_t._event.onReadable){_t._event.onReadable(v);}
\r
259 if(_t._gen){_t._gen.next(v);}
\r
264 throw new MI.MiMicException(e);
\r
269 * 関数の完了時にonWriteableイベントが発生します。
\r
270 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
271 * @name mbedJS.Serial#writeable
\r
274 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
275 * @return {boolean}
\r
276 * Generatorモードの時は状態値の真偽値を返します。
\r
278 writeable:function Serial_writeable()
\r
282 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
283 _t._lc=CLASS.writeable;
\r
284 return _t._mcu.rpc(_t.RPC_NS+":writeable",_t._oid,
\r
287 var v=j.result[0]?true:false;
\r
288 if(_t._event.onWriteable){_t._event.onWriteable(v);}
\r
289 if(_t._gen){_t._gen.next(v);}
\r
294 throw new MI.MiMicException(e);
\r
299 * 関数の完了時にonSend_breakイベントが発生します。
\r
300 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
301 * @name mbedJS.Serial#send_break
\r
304 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
306 send_break:function Serial_send_break()
\r
310 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
311 _t._lc=CLASS.send_break;
\r
312 return _t._mcu.rpc(_t.RPC_NS+":send_break",_t._oid,
\r
315 if(_t._event.onSend_break){_t._event.onSend_break();}
\r
316 if(_t._gen){_t._gen.next();}
\r
321 throw new MI.MiMicException(e);
\r
326 * 関数の完了時にonPutcイベントが発生します。
\r
327 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
328 * @name mbedJS.Serial#putc
\r
331 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
333 * Generatorモードの時は謎の値を返します。
\r
335 putc:function Serial_putc(i_c)
\r
339 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
342 return _t._mcu.rpc(_t.RPC_NS+":putc",_t._oid+","+i_c,
\r
346 if(_t._event.onPutc){_t._event.onPutc(v);}
\r
347 if(_t._gen){_t._gen.next(v);}
\r
352 throw new MI.MiMicException(e);
\r
357 * 関数の完了時にonPutsイベントが発生します。
\r
358 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
359 * @name mbedJS.Serial#puts
\r
362 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
364 * Generatorモードの時は謎の値を返します。
\r
366 puts:function Serial_puts(i_s)
\r
370 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
372 return _t._mcu.rpc(_t.RPC_NS+":puts",_t._oid+",\""+i_s+"\"",
\r
376 if(_t._event.onPuts){_t._event.onPuts(v);}
\r
377 if(_t._gen){_t._gen.next(v);}
\r
382 throw new MI.MiMicException(e);
\r
387 * 関数の完了時にonGetcイベントが発生します。
\r
388 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
389 * @name mbedJS.Serial#getc
\r
392 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
394 * Generatorモードの時は受信した数値を返します。
\r
396 getc:function Serial_getc()
\r
400 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
402 return _t._mcu.rpc(_t.RPC_NS+":getc",_t._oid,
\r
406 if(_t._event.onGetc){_t._event.onGetc(v);}
\r
407 if(_t._gen){_t._gen.next(v);}
\r
412 throw new MI.MiMicException(e);
\r
417 * 関数の完了時にonGetsイベントが発生します。
\r
418 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
419 * @name mbedJS.Serial#gets
\r
421 * @param {int} i_len
\r
422 * 受信メモリのサイズを指定します。256未満を指定してください。
\r
424 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
426 * Generatorモードの時は受信した文字列を返します。
\r
428 gets:function Serial_gets(i_len)
\r
432 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
434 MI.assertInt(i_len);
\r
435 return _t._mcu.rpc(_t.RPC_NS+":gets",_t._oid+","+i_len,
\r
439 if(_t._event.onGets){_t._event.onGets(v);}
\r
440 if(_t._gen){_t._gen.next(v);}
\r
445 throw new MI.MiMicException(e);
\r
450 * 関数の完了時にonBaudイベントが発生します。
\r
451 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
452 * @name mbedJS.Serial#baud
\r
454 * @param {int} i_baudrate
\r
457 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
459 baud:function Serial_baud(i_baudrate)
\r
463 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
465 MI.assertInt(i_baudrate);
\r
466 return _t._mcu.rpc(_t.RPC_NS+":baud",_t._oid+","+i_baudrate,
\r
469 if(_t._event.onBaud){_t._event.onBaud();}
\r
470 if(_t._gen){_t._gen.next();}
\r
475 throw new MI.MiMicException(e);
\r