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 = '讀取一行數據,以換行符號結尾。 '; })();