}
//@Override
public String toCode() throws SocketNullException, SubroutineNotDeclaredException
{
TranslatorBlock tb = this.getRequiredTranslatorBlockAtSocket(1);
String lineNo = tb.toCode();
tb = this.getRequiredTranslatorBlockAtSocket(2);
String charNo = tb.toCode();
tb = this.getRequiredTranslatorBlockAtSocket(3);
String parallel_addr = tb.toCode(); //Usually resolves to "Parallel" but could be something else.
String ret = "";
if ( !(charNo.equals("0") && lineNo.equals("0")) ){
// Retain the apparently daft 'lcd_I2C' part of the name so LCD_COMMAND block will work on this display too.
ret = "lcd_I2C_" + parallel_addr + ".setCursor( (" + charNo + ") - 1, (" + lineNo + ") - 1 );";
}
tb = this.getRequiredTranslatorBlockAtSocket(0, "lcd_I2C_"+ parallel_addr + ".print( ", " );\n");
ret += tb.toCode();
//Deal with line and character positioning
translator.addHeaderFile("Wire.h");
translator.addHeaderFile("LCD.h");
translator.addHeaderFile("LiquidCrystal.h");
translator.addDefinitionCommand( "// For these LCD controls to work you MUST replace the standard LCD library with 'New LCD' from...");