Changeset 321 for EcnlProtoTool/trunk/mrbgems/mruby-arduino/src/sSerial.c
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mrbgems/mruby-arduino/src/sSerial.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 1 1 /* 2 * ã·ãªã¢ã«éä¿¡é¢é£2 * シリアル通信関連 3 3 * 4 4 * Copyright (c) 2016 Wakayama.rb Ruby Board developers … … 24 24 25 25 /******************************************************/ 26 /* ã¡ã¢ãªã®éæ¾æã«èµ°ã*/26 /* メモリの開放時に走る*/ 27 27 /******************************************************/ 28 28 static void mrb_serial_free(mrb_state *mrb, void *ptr) … … 33 33 34 34 /******************************************************/ 35 /* ãã®æ§é ä½ã®æå³ã¯ããããã£ã¦ããªã*/35 /* この構造体の意味はよくわかっていない*/ 36 36 /******************************************************/ 37 37 static struct mrb_data_type serial_type = {"Serial", mrb_serial_free}; … … 39 39 40 40 /******************************************************/ 41 /* ã·ãªã¢ã«éä¿¡ãåæåãã¾ã: Serial.new*/42 /* Serial.new(num[, bps]) ã*/43 /* num: éä¿¡çªå·(0:USB, 1:TX-0/RX-1, 2:TX-5/RX-6, 3:TX-7/RX-8, 4:TX-12/RX-11, 5:TX-9(26)/RX-3)*/44 /* bps: ãã¼ã¬ã¼ã*/41 /* シリアル通信を初期化します: Serial.new*/ 42 /* Serial.new(num[, bps]) */ 43 /* num: 通信番号(0:USB, 1:TX-0/RX-1, 2:TX-5/RX-6, 3:TX-7/RX-8, 4:TX-12/RX-11, 5:TX-9(26)/RX-3)*/ 44 /* bps: ボーレート*/ 45 45 /**/ 46 /* æ»ãå¤*/47 /* Serial ã®ã¤ã³ã¹ã¿ã³ã¹*/46 /* 戻り値*/ 47 /* Serialのインスタンス*/ 48 48 /******************************************************/ 49 49 static mrb_value mrb_serial_initialize(mrb_state *mrb, mrb_value self) … … 60 60 61 61 if (num < 0 && num >= SERIAL_MAX) { 62 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/62 return mrb_nil_value(); /*戻り値は無しですよ。*/ 63 63 } 64 64 65 65 if(!portToPins(num, &txpin, &rxpin)) 66 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/66 return mrb_nil_value(); /*戻り値は無しですよ。*/ 67 67 68 68 serial_t* serialc = mrb_malloc(mrb, sizeof(serial_t)); … … 78 78 79 79 /******************************************************/ 80 /* ãã¼ã¬ã¼ããè¨å®ãã¾ã: Serial.bps*/80 /* ボーレートを設定します: Serial.bps*/ 81 81 /* Serial.bps(bps)*/ 82 /* bps: ãã¼ã¬ã¼ã*/82 /* bps: ボーレート */ 83 83 /******************************************************/ 84 84 mrb_value mrb_serial_bps(mrb_state *mrb, mrb_value self) … … 92 92 serial_baud(serialc, bps); 93 93 94 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/95 } 96 97 /******************************************************/ 98 /* ã·ãªã¢ã«ã«åºåãã¾ã: Serial.print*/94 return mrb_nil_value(); /*戻り値は無しですよ。*/ 95 } 96 97 /******************************************************/ 98 /* シリアルに出力します: Serial.print*/ 99 99 /* Serial.print([str])*/ 100 /* str: æåå*/101 /* çç¥æã¯ä½ãåºåãã¾ãã*/100 /* str: 文字列*/ 101 /* 省略時は何も出力しません*/ 102 102 /******************************************************/ 103 103 mrb_value mrb_serial_print(mrb_state *mrb, mrb_value self) … … 112 112 serial_print(serialc, RSTRING_PTR(text)); 113 113 } 114 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/115 } 116 117 /******************************************************/ 118 /* ã·ãªã¢ã«ã«\r\nä»ãã§åºåãã¾ã: Serial.println*/114 return mrb_nil_value(); /*戻り値は無しですよ。*/ 115 } 116 117 /******************************************************/ 118 /* シリアルに\r\n付きで出力します: Serial.println*/ 119 119 /* Serial.println([str])*/ 120 /* str: æåå*/121 /* çç¥æã¯æ¹è¡ã®ã¿*/120 /* str: 文字列*/ 121 /* 省略時は改行のみ*/ 122 122 /******************************************************/ 123 123 mrb_value mrb_serial_println(mrb_state *mrb, mrb_value self) … … 135 135 serial_println(serialc, ""); 136 136 } 137 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/138 } 139 140 /******************************************************/ 141 /* ã·ãªã¢ã«ãã¼ã¿ããããã©ãã調ã¹ã¾ã: Serial.available*/137 return mrb_nil_value(); /*戻り値は無しですよ。*/ 138 } 139 140 /******************************************************/ 141 /* シリアルデータがあるかどうか調べます: Serial.available*/ 142 142 /* Serial.available()*/ 143 /* æ»ãå¤ ã·ãªã¢ã«ãããã¡ã«ãããã¼ã¿ã®ãã¤ãæ°ã0ã®å ´åã¯ãã¼ã¿ãªã*/143 /* 戻り値 シリアルバッファにあるデータのバイト数。0の場合はデータなし*/ 144 144 /******************************************************/ 145 145 mrb_value mrb_serial_available(mrb_state *mrb, mrb_value self) … … 151 151 152 152 /******************************************************/ 153 /* ã·ãªã¢ã«ãããã¼ã¿ãåå¾ãã¾ã: Serial.read*/153 /* シリアルからデータを取得します: Serial.read*/ 154 154 /* Serial.read()*/ 155 /* æ»ãå¤*/ 156 /* ãã¼ã¿é 157 å*/ 155 /* 戻り値*/ 156 /* データ配列*/ 158 157 /******************************************************/ 159 158 mrb_value mrb_serial_read(mrb_state *mrb, mrb_value self) … … 176 175 177 176 /******************************************************/ 178 /* ã·ãªã¢ã«ã«ãã¼ã¿ãåºåãã¾ã: Serial.write*/177 /* シリアルにデータを出力します: Serial.write*/ 179 178 /* Serial.write(buf,len)*/ 180 /* buf: åºåãã¼ã¿*/181 /* len: åºåãã¼ã¿ãµã¤ãº*/182 /* æ»ãå¤*/183 /* åºåãããã¤ãæ°*/179 /* buf: 出力データ*/ 180 /* len: 出力データサイズ*/ 181 /* 戻り値*/ 182 /* 出力したバイト数*/ 184 183 /******************************************************/ 185 184 mrb_value mrb_serial_write(mrb_state *mrb, mrb_value self) … … 202 201 203 202 /******************************************************/ 204 /* ã·ãªã¢ã«ãã¼ã¿ããã©ãã·ã¥ãã¾ã: Serial.flash*/203 /* シリアルデータをフラッシュします: Serial.flash*/ 205 204 /* Serial.flash()*/ 206 205 /******************************************************/ … … 211 210 //serial_flush(serialc); 212 211 213 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/212 return mrb_nil_value(); /*戻り値は無しですよ。*/ 214 213 } 215 214 #if 0 216 215 unsigned char WiFiData[256]; 217 216 /***************************************************/ 218 /* USB ãã¼ãã¨ESP8266ãã·ãªã¢ã«ã§ç´çµãã¾ã: WiFi.bypass*/217 /* USBポートとESP8266をシリアルで直結します: WiFi.bypass*/ 219 218 /* WiFi.bypass()*/ 220 /* ãªã»ããããã¾ã§ãå¦çã¯æ»ãã¾ããã*/219 /* リセットするまで、処理は戻りません。*/ 221 220 //**************************************************/ 222 221 mrb_value mrb_wifi_bypass(mrb_state *mrb, mrb_value self) … … 238 237 WiFiData[i] = (unsigned char)serial_read(RbSerial[0]); 239 238 240 if(WiFiData[i] == 0x0d){ /*0x0D ã®ã¿ã®æ¹è¡ãé£æãããbypassã¢ã¼ããæãã*/239 if(WiFiData[i] == 0x0d){ /*0x0Dのみの改行を連打したらbypassモードを抜ける*/ 241 240 retCnt++; 242 241 if(retCnt > 20){ 243 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/242 return mrb_nil_value(); /*戻り値は無しですよ。*/ 244 243 } 245 244 } … … 260 259 } 261 260 } 262 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/261 return mrb_nil_value(); /*戻り値は無しですよ。*/ 263 262 } 264 263 #endif 265 264 266 265 /******************************************************/ 267 /* ã©ã¤ãã©ãªãå®ç¾©ãã¾ã*/266 /* ライブラリを定義します*/ 268 267 /******************************************************/ 269 268 void serial_Init(mrb_state* mrb)
Note:
See TracChangeset
for help on using the changeset viewer.