diff --git a/src/main/java/com/ardublock/translator/block/communication/ReadSerialMonitorBlock.java b/src/main/java/com/ardublock/translator/block/communication/ReadSerialMonitorBlock.java new file mode 100644 index 0000000000000000000000000000000000000000..bd1428d9faebbea02b3b321f79f2719a94b71e61 --- /dev/null +++ b/src/main/java/com/ardublock/translator/block/communication/ReadSerialMonitorBlock.java @@ -0,0 +1,56 @@ +package com.ardublock.translator.block.communication; + +import java.util.ResourceBundle; + +import com.ardublock.translator.Translator; +import com.ardublock.translator.block.TranslatorBlock; +import com.ardublock.translator.block.exception.BlockException; +import com.ardublock.translator.block.exception.SocketNullException; +import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; +import com.ardublock.translator.block.numbers.ConstantStringBlock; +import com.ardublock.translator.block.numbers.LocalVariableStringBlock; +import com.ardublock.translator.block.numbers.StringBlock; +import com.ardublock.translator.block.numbers.VariableStringBlock; + +import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.comm.CodeSerialPrint; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString; + +public class ReadSerialMonitorBlock extends TranslatorBlock +{ + private static ResourceBundle uiMessageBundle = ResourceBundle.getBundle("com/ardublock/block/ardublock"); + + public ReadSerialMonitorBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) + { + super(blockId, translator, codePrefix, codeSuffix, label); + } + + @Override + public String toCode() throws SocketNullException, SubroutineNotDeclaredException + { + String readArray = null; + + translator.addHeaderFile("didacticNet.h"); + translator.addDefinitionCommand("SerialReader sReader;"); + + + if(!translator.containsSetupCommand("Serial.begin")){ + translator.addSetupCommand("Serial.begin(2400);"); + } + + if(!translator.containsSetupCommand("sReader.begin")){ + translator.addSetupCommand("sReader.begin(Serial);"); + } + + TranslatorBlock tB0 = this.getRequiredTranslatorBlockAtSocket(0); + + if((tB0 instanceof VariableStringBlock) || (tB0 instanceof LocalVariableStringBlock)){ + readArray = tB0.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + } else { + throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.number_var_slot")); + } + + return "sReader.readSerialData("+readArray+", DN_ASCII_CR)"; + } +} diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties index 1e631fec1e0058d6d8671ca977cd1ce17a775a2a..bf904e942deaac7f13aab8b99774109c29ab6058 100644 --- a/src/main/resources/com/ardublock/block/ardublock.properties +++ b/src/main/resources/com/ardublock/block/ardublock.properties @@ -696,6 +696,7 @@ bd.communication=Communication bg.communicationDivider1=| serial | bg.communicationDivider2=| software serial | bg.communicationDivider3=| serial connectors | +bg.communicationDivider4=| helper | bg.glue_poly=connect bg.glue_msg=connect @@ -717,6 +718,8 @@ bg.glue_digital=glue bg.glue_number=glue bg.glue_char=glue bg.glue_string=glue +bg.read_serial_monitor=readSerialData + bg.tele_set_frame=set Frame bg.tele_read_frame=read serial data Frame bg.tele_read_data_frame=read from Frame @@ -743,6 +746,7 @@ bg.glue_digital.description=Glue boolean to string bg.glue_number.description=Glue number to string bg.glue_char.description=Glue char to string bg.glue_string.description=Glue string to string +bg.read_serial_monitor.description=read data from SerialMonitor till "CR" bg.tele_set_frame.description=write data to telegram-frame bg.tele_read_frame.description=read serial data in telegram-frame-format @@ -757,6 +761,7 @@ bc.ln=new line bc.rx_pin_number=Rx Pin bc.tx_pin_number=Tx Pin bc.baudrate=baud +bc.read_array=array bc.sendAddress=sender address bc.recAddress=receiver address @@ -777,7 +782,6 @@ bg.didacticnetworkDivider1=| PubSub Network | bg.didacticnetworkDivider2=| PubSub publish | bg.didacticnetworkDivider3=| PubSub subscribe | bg.didacticnetworkDivider4=| PubSub callback | -bg.didacticnetworkDivider5=| helper | bg.psn_broker=psnName Broker bg.psn_client=psnName Client diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml index 990b17437b8f9757e9e92109ca484686394f87c4..655c86f9d2f201a87854b80385e708ce422303c0 100644 --- a/src/main/resources/com/ardublock/block/ardublock.xml +++ b/src/main/resources/com/ardublock/block/ardublock.xml @@ -2110,7 +2110,7 @@ <BlockGenus name="communicationDivider1" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.communicationDivider1" color="150 150 150" /> <BlockGenus name="communicationDivider2" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.communicationDivider2" color="150 150 150" /> <BlockGenus name="communicationDivider3" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.communicationDivider3" color="150 150 150" /> - + <BlockGenus name="communicationDivider4" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.communicationDivider4" color="150 150 150" /> <BlockGenus name="serial_read" kind="data" color="165 42 42" initlabel="bg.serial_read"> <BlockConnectors> <BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" /> @@ -2265,6 +2265,19 @@ <BlockConnector label="" connector-kind="socket" connector-type="string" position-type="bottom" /> </BlockConnectors> </BlockGenus> + <BlockGenus name="read_serial_monitor" kind="data" color="165 42 42" initlabel="bg.read_serial_monitor"> + <description> + <text>read_serial_monitor</text> + </description> + <BlockConnectors> + <BlockConnector connector-type="number" connector-kind="plug" /> + <BlockConnector connector-type="string" connector-kind="socket" label="bc.read_array"> + <DefaultArg genus-name="variable_string" label="geleseneDaten" /> + </BlockConnector> + </BlockConnectors> + </BlockGenus> + + <BlockGenus name="tele_set_frame" kind="command" color="165 42 42" initlabel="bg.tele_set_frame"> <description> <text>write Data to telegram frame</text> @@ -2380,7 +2393,6 @@ <BlockGenus name="didacticnetworkDivider2" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider2" color="150 150 150" /> <BlockGenus name="didacticnetworkDivider3" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider3" color="150 150 150" /> <BlockGenus name="didacticnetworkDivider4" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider4" color="150 150 150" /> - <BlockGenus name="didacticnetworkDivider5" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider4" color="150 150 150" /> <BlockGenus name="psn_broker" kind="command" color="130 27 27" initlabel="bg.psn_broker" editable-label="yes"> <description> @@ -3302,6 +3314,8 @@ <BlockGenusMember>glue_char</BlockGenusMember> <BlockGenusMember>glue_string</BlockGenusMember> + <BlockGenusMember>communicationDivider4</BlockGenusMember> + <BlockGenusMember>read_serial_monitor</BlockGenusMember> <!-- <BlockGenusMember>communicationDivider4</BlockGenusMember> <BlockGenusMember>psn_broker</BlockGenusMember> diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties index ccabe380ba75a58980d621b0e865bec1ebce1340..c0ad9c1181ad1cf17b9b33ccd9bbbeaf91708576 100644 --- a/src/main/resources/com/ardublock/block/ardublock_de.properties +++ b/src/main/resources/com/ardublock/block/ardublock_de.properties @@ -693,6 +693,7 @@ bd.communication=Kommunikation bg.communicationDivider1=| Seriell | bg.communicationDivider2=| Software Seriell | bg.communicationDivider3=| Verbinder | +bg.communicationDivider4=| Hilfsfunktionen | bg.glue_poly=verbinde bg.glue_msg=verbinde @@ -714,6 +715,8 @@ bg.glue_digital=verbinde bg.glue_number=verbinde bg.glue_char=verbinde bg.glue_string=verbinde +bg.read_serial_monitor=lese von SerialMonitor + bg.tele_set_frame=schreibe Daten in Frame bg.tele_read_frame=lese Frame seriell ein bg.tele_read_data_frame=lese Daten aus Frame @@ -740,6 +743,8 @@ bg.glue_digital.description=Verbinde digitalen Wert mit Zeichenkette bg.glue_number.description=Verbinde analogen Wert mit Zeichenkette bg.glue_char.description=Verbinde Zeichen mit Zeichenkette bg.glue_string.description=Verbinde Zeichenkette mit Zeichenkette +bg.read_serial_monitor.description=Lese Zeichen vom SerialMonitor bis Zeilenende "CR" und schreibe diese in Zeichenkette. + bg.tele_set_frame.description=schreibe Daten in den Telegramm-Rahmen bg.tele_read_frame.description=lese Daten von der seriellen Schnittstelle im letsgoING-Telegramm-Format bg.tele_read_data_frame.description=lese Daten aus dem Telegramm-Rahmen\n HINWEIS: Senderadresse 0 erhält Daten von allen Sendern @@ -752,6 +757,8 @@ bc.ln=neue Zeile bc.rx_pin_number=Rx Pin bc.tx_pin_number=Tx Pin bc.baudrate=Baud +bc.read_array=lese-Zeichenkette + bc.sendAddress= Adr. Sender bc.recAddress=Adr. Empfänger bc.dataLength=Länge Daten [0-9] @@ -771,7 +778,6 @@ bg.didacticnetworkDivider1=| PubSub Netzwerk | bg.didacticnetworkDivider2=| PubSub publish | bg.didacticnetworkDivider3=| PubSub subscribe | bg.didacticnetworkDivider4=| PubSub callback | -bg.didacticnetworkDivider5=| Hilfsfunktionen | bg.psn_broker=Broker psnName bg.psn_client=Client psnName diff --git a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties index 047a3f0fb484e1d11a817dc44ef49ce0072872dc..9be1bd1915c962a35b111ec9f20c5b93a7123528 100644 --- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties +++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties @@ -694,6 +694,7 @@ bd.communication=Kommunikation bg.communicationDivider1=| Seriell | bg.communicationDivider2=| Software Seriell | bg.communicationDivider3=| Verbinder | +bg.communicationDivider4=| Hilfsfunktionen | bg.glue_poly=verbinde bg.glue_msg=verbinde @@ -715,6 +716,8 @@ bg.glue_digital=verbinde bg.glue_number=verbinde bg.glue_char=verbinde bg.glue_string=verbinde +bg.read_serial_monitor=readSerialData + bg.tele_set_frame=schreibe Daten in Frame bg.tele_read_frame=lese Frame seriell ein bg.tele_read_data_frame=lese Daten aus Frame @@ -741,6 +744,8 @@ bg.glue_digital.description=Verbinde digitalen Wert mit Zeichenkette bg.glue_number.description=Verbinde analogen Wert mit Zeichenkette bg.glue_char.description=Verbinde Zeichen mit Zeichenkette bg.glue_string.description=Verbinde Zeichenkette mit Zeichenkette +bg.read_serial_monitor.description=Lese Zeichen vom SerialMonitor bis Zeilenende "CR" und schreibe diese in char-Array + bg.tele_set_frame.description=schreibe Daten in den Telegramm-Rahmen bg.tele_read_frame.description=lese Daten von der seriellen Schnittstelle im letsgoING-Telegramm-Format bg.tele_read_data_frame.description=lese Daten aus dem Telegramm-Rahmen\n HINWEIS: Senderadresse 0 erhält Daten von allen Sendern @@ -752,6 +757,7 @@ bc.ln=neue Zeile bc.rx_pin_number=Rx Pin bc.tx_pin_number=Tx Pin bc.baudrate=Baud +bc.read_array=lese-Array bc.sendAddress= Adr. Sender bc.recAddress=Adr. Empfänger @@ -772,7 +778,6 @@ bg.didacticnetworkDivider1=| PubSub Netzwerk | bg.didacticnetworkDivider2=| PubSub publish | bg.didacticnetworkDivider3=| PubSub subscribe | bg.didacticnetworkDivider4=| PubSub callback | -bg.didacticnetworkDivider5=| Hilfsfunktionen | bg.psn_broker=Broker psnName bg.psn_client=Client psnName diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties index 320108d044da92aefd6e0d0ef7095c1073774ba7..700f60fed05b2ed6669cfdfb27defdc963402d47 100644 --- a/src/main/resources/com/ardublock/block/block-mapping.properties +++ b/src/main/resources/com/ardublock/block/block-mapping.properties @@ -246,12 +246,17 @@ glue_digital=com.ardublock.translator.block.communication.GlueBlock glue_number=com.ardublock.translator.block.communication.GlueBlock glue_char=com.ardublock.translator.block.communication.GlueBlock glue_string=com.ardublock.translator.block.communication.GlueBlock +read_serial_monitor=com.ardublock.translator.block.communication.ReadSerialMonitorBlock + tele_set_frame=com.ardublock.translator.block.communication.TelegramSetFrameBlock tele_read_frame=com.ardublock.translator.block.communication.TelegramReadFrameBlock tele_read_data_frame=com.ardublock.translator.block.communication.TelegramReadDataFrameBlock mqtt_set_frame=com.ardublock.translator.block.communication.MQTTSetFrameBlock mqtt_read_frame=com.ardublock.translator.block.communication.MQTTReadFrameBlock + +#DIDACTIC NETWORK +#**************************** psn_broker=com.ardublock.translator.block.didacticnetwork.PsnBrokerBlock psn_client=com.ardublock.translator.block.didacticnetwork.PsnClientBlock psn_callback=com.ardublock.translator.block.didacticnetwork.PsnCallbackBlock