diff --git a/boards/default_src/micropython/blocks/network.js b/boards/default_src/micropython/blocks/network.js
index 55c55d21..1695ce42 100644
--- a/boards/default_src/micropython/blocks/network.js
+++ b/boards/default_src/micropython/blocks/network.js
@@ -311,6 +311,19 @@ export const network_socket_accept = {
}
};
+export const network_socket_readline = {
+ init: function () {
+ this.setColour(NETWORK_HUE);
+ this.appendValueInput('VAR')
+ .setCheck('var');
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_READLINE);
+ this.setOutput(true);
+ this.setInputsInline(true);
+ this.setTooltip(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_READLINE_TOOLTIP);
+ }
+};
+
export const network_socket_receive = {
init: function () {
this.setColour(NETWORK_HUE);
diff --git a/boards/default_src/micropython/generators/network.js b/boards/default_src/micropython/generators/network.js
index 217b095b..370ae31f 100644
--- a/boards/default_src/micropython/generators/network.js
+++ b/boards/default_src/micropython/generators/network.js
@@ -145,7 +145,15 @@ export const network_socket_accept = function (_, generator) {
generator.definitions_['import_socket'] = "import socket";
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = "" + varName + ".accept()";
- return [code, generator.ORDER_ASSIGNMENT];
+ return [code, generator.ORDER_ATOMIC];
+}
+
+export const network_socket_readline = function (_, generator) {
+ generator.definitions_['import_network'] = 'import network';
+ generator.definitions_['import_socket'] = 'import socket';
+ var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
+ var code = varName + '.readline()';
+ return [code, generator.ORDER_ATOMIC];
}
export const network_socket_receive = function (_, generator) {
@@ -154,7 +162,7 @@ export const network_socket_receive = function (_, generator) {
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var size = generator.valueToCode(this, 'size', generator.ORDER_ATOMIC);
var code = "" + varName + ".recv(" + size + ")";
- return [code, generator.ORDER_ASSIGNMENT];
+ return [code, generator.ORDER_ATOMIC];
}
export const network_socket_send = function (_, generator) {
@@ -172,7 +180,7 @@ export const network_socket_receive_from = function (_, generator) {
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var size = generator.valueToCode(this, 'size', generator.ORDER_ATOMIC);
var code = "" + varName + ".recvfrom(" + size + ")";
- return [code, generator.ORDER_ASSIGNMENT];
+ return [code, generator.ORDER_ATOMIC];
}
export const network_socket_send_to = function (_, generator) {
diff --git a/boards/default_src/micropython_educore/template.xml b/boards/default_src/micropython_educore/template.xml
index 2ff4b4aa..0221032e 100644
--- a/boards/default_src/micropython_educore/template.xml
+++ b/boards/default_src/micropython_educore/template.xml
@@ -7079,6 +7079,13 @@
+
+
+
+ s
+
+
+
diff --git a/boards/default_src/micropython_esp32/template.xml b/boards/default_src/micropython_esp32/template.xml
index 11770862..fb1a65cc 100644
--- a/boards/default_src/micropython_esp32/template.xml
+++ b/boards/default_src/micropython_esp32/template.xml
@@ -6974,6 +6974,13 @@
+
+
+
+ s
+
+
+
diff --git a/boards/default_src/micropython_esp32c2/template.xml b/boards/default_src/micropython_esp32c2/template.xml
index 7cc0aa16..c7223af8 100644
--- a/boards/default_src/micropython_esp32c2/template.xml
+++ b/boards/default_src/micropython_esp32c2/template.xml
@@ -6905,6 +6905,13 @@
+
+
+
+ s
+
+
+
diff --git a/boards/default_src/micropython_esp32c3/template.xml b/boards/default_src/micropython_esp32c3/template.xml
index 425631e4..2f793ddd 100644
--- a/boards/default_src/micropython_esp32c3/template.xml
+++ b/boards/default_src/micropython_esp32c3/template.xml
@@ -6791,6 +6791,13 @@
+
+
+
+ s
+
+
+
diff --git a/boards/default_src/micropython_esp32s2/template.xml b/boards/default_src/micropython_esp32s2/template.xml
index 3dda5e3a..fbecb5c3 100644
--- a/boards/default_src/micropython_esp32s2/template.xml
+++ b/boards/default_src/micropython_esp32s2/template.xml
@@ -6522,6 +6522,13 @@
+
+
+
+ s
+
+
+
diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml
index 1bfcef95..860a1648 100644
--- a/boards/default_src/micropython_esp32s3/template.xml
+++ b/boards/default_src/micropython_esp32s3/template.xml
@@ -7269,6 +7269,13 @@
+
+
+
+ s
+
+
+
diff --git a/boards/default_src/micropython_robot/template.xml b/boards/default_src/micropython_robot/template.xml
index e6878c45..6fda6653 100644
--- a/boards/default_src/micropython_robot/template.xml
+++ b/boards/default_src/micropython_robot/template.xml
@@ -5549,6 +5549,13 @@
+
+
+
+ s
+
+
+
diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js
index f066337b..881c2493 100644
--- a/common/msg/blockly/en.js
+++ b/common/msg/blockly/en.js
@@ -3988,5 +3988,7 @@ En.MIXLY_W_R = "Readable and Writable, Create if File Does Not Exist";
En.MIXLY_A_R = "Appendable and Writable, Create if File Does Not Exist";
En.MIXLY_TEXT_BYTES = 'bytes';
En.MIXLY_TEXT_BYTE_ARRAY = 'bytearray';
+En.MIXLY_MICROPYTHON_SOCKET_READLINE = 'Readline';
+En.MIXLY_MICROPYTHON_SOCKET_READLINE_TOOLTIP = 'Read a line of data, ending with a newline character.';
})();
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index e70246cf..b033dc8e 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -4147,5 +4147,7 @@ ZhHans.MIXLY_W_R = '可读可写,文件若不存在就创建';
ZhHans.MIXLY_A_R = '可追加可写,文件若不存在就创建';
ZhHans.MIXLY_TEXT_BYTES = '字节串';
ZhHans.MIXLY_TEXT_BYTE_ARRAY = '字节数组';
+ZhHans.MIXLY_MICROPYTHON_SOCKET_READLINE = '接收套接字的一行数据';
+ZhHans.MIXLY_MICROPYTHON_SOCKET_READLINE_TOOLTIP = '读取一行数据,以换行符结尾。';
})();
\ No newline at end of file
diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js
index db2715ec..4d46ad15 100644
--- a/common/msg/blockly/zh-hant.js
+++ b/common/msg/blockly/zh-hant.js
@@ -4142,5 +4142,7 @@ ZhHant.MIXLY_W_R = "可讀可寫,文件若不存在就創建";
ZhHant.MIXLY_A_R = "可追加可寫,文件若不存在就創建";
ZhHant.MIXLY_TEXT_BYTES = '位元組字串';
ZhHant.MIXLY_TEXT_BYTE_ARRAY = '位元組數組';
+ZhHant.MIXLY_MICROPYTHON_SOCKET_READLINE = '接收套接字的一行資料';
+ZhHant.MIXLY_MICROPYTHON_SOCKET_READLINE_TOOLTIP = '讀取一行數據,以換行符號結尾。 ';
})();