public void onStart() throws Exception
{
// start up code here
}enter code here
public void onExecute() throws Exception
{
// execute code (set executeOnChange flag on inputs)
String tmp = getInASCIIString().getValue();
setOutCSVString(new BStatusString(AsciiToBinary(tmp)));
}
public void onStop() throws Exception
{
// shutdown code here
}
public static String AsciiToBinary(String asciiString) throws Exception
{
String padding = "00000000";
StringBuffer dataString = new StringBuffer();
StringBuffer outCSV = new StringBuffer();
StringTokenizer Values = new StringTokenizer(asciiString,",");
while (Values.hasMoreTokens())
{
String bin = padding + Integer.toBinaryString(Integer.parseInt(Values.nextToken()));
String reversedString = new StringBuffer(bin.substring(bin.length() - 8, bin.length())).reverse().toString();
dataString.append(reversedString);
}
try
{
char[] charArray = dataString.toString().toCharArray();
for (int i = 1; i < charArray.length; i++)
{
if (charArray[i] == '1')
{
outCSV.append(i+"");
outCSV.append(',');
}
}
if (outCSV.toString().length() > 1)
{
return outCSV.toString().substring(0, outCSV.toString().length()-1);
}
else
{
return outCSV.toString();
}
}
catch(StringIndexOutOfBoundsException e)
{
return "";
}
}
我们使用 Tridium——它使用 Java 作为后端。这个程序似乎是随机的,偶尔会抛出错误。我只限于预装的包,包括:java.util、java.baja.sys、javax.baja.status、javax.baja.util、com.tridium.program
这就是为什么一些代码是使用它所做的逻辑/功能编写的。无论如何-我无法弄清楚为什么这会引发错误。有什么想法吗?
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:java.lang.String.charAt(String.java:658)处的 15
完整的堆栈跟踪:
java.lang.StringIndexOutOfBoundsException: String index out of range: 15 at java.lang.String.charAt(String.java:658) at com.korsengineering.niagara.conversion.BStatusNumericToStatusBoolean.changed(BStatusNumericToStatusBoolean.java:38) at com.tridium.sys.schema.ComponentSlotMap.fireComponentEvent(ComponentSlotMap.java:1000) at com.tridium.sys.schema.ComponentSlotMap.modified(ComponentSlotMap.java:902) at com.tridium.sys.schema.ComplexSlotMap.modified(ComplexSlotMap.java:1538) at com.tridium.sys.schema.ComplexSlotMap.setDouble(ComplexSlotMap.java:1254) at javax.baja.sys.BComplex.setDouble(BComplex.java:666) at com.tridium.sys.schema.ComplexSlotMap.copyFrom(ComplexSlotMap.java:294) at javax.baja.sys.BComplex.copyFrom(BComplex.java:246) at javax.baja.sys.BLink.propagatePropertyToProperty(BLink.java:593) at javax.baja.sys.BLink.propagate(BLink.java:523) at com.tridium.sys.engine.SlotKnobs.propagate(SlotKnobs.java:56) at com.tridium.sys.schema.ComponentSlotMap.modified(ComponentSlotMap.java:899) at com.tridium.sys.schema.ComplexSlotMap.modified(ComplexSlotMap.java:1538) at com.tridium.sys.schema.ComplexSlotMap.setDouble(ComplexSlotMap.java:1254) at javax.baja.sys.BComplex.setDouble(BComplex.java:666) at javax.baja.status.BStatusNumeric.setValue(BStatusNumeric.java:66) at com.tridium.kitControl.conversion.BStatusStringToStatusNumeric.calculate(BStatusStringToStatusNumeric.java:161) at com.tridium.kitControl.conversion.BStatusStringToStatusNumeric.changed(BStatusStringToStatusNumeric.java:155) at com.tridium.sys.schema.ComponentSlotMap.fireComponentEvent(ComponentSlotMap.java:1000) at com.tridium.sys.schema.ComponentSlotMap.modified(ComponentSlotMap.java:902) at com.tridium.sys.schema.ComplexSlotMap.modified(ComplexSlotMap.java:1538) at com.tridium.sys.schema.ComplexSlotMap.setString(ComplexSlotMap.java:1335) at javax.baja.sys.BComplex.setString(BComplex.java:668) at com.tridium.sys.schema.ComplexSlotMap.copyFrom(ComplexSlotMap.java:295) at javax.baja.sys.BComplex.copyFrom(BComplex.java:246) at javax.baja.sys.BLink.propagatePropertyToProperty(BLink.java:593) at javax.baja.sys.BLink.propagate(BLink.java:523) at com.tridium.sys.engine.SlotKnobs.propagate(SlotKnobs.java:56) at com.tridium.sys.schema.ComponentSlotMap.modified(ComponentSlotMap.java:899) at com.tridium.sys.schema.ComplexSlotMap.modified(ComplexSlotMap.java:1538) at com.tridium.sys.schema.ComplexSlotMap.setString(ComplexSlotMap.java:1335) at javax.baja.sys.BComplex.setString(BComplex.java:668) at com.tridium.sys.schema.ComplexSlotMap.copyFrom(ComplexSlotMap.java:295) at javax.baja.sys.BComplex.copyFrom(BComplex.java:238) at javax.baja.control.BControlPoint.doExecute(BControlPoint.java:271) at auto.javax_baja_control_BStringWritable.invoke(AutoGenerated) at com.tridium.sys.schema.ComponentSlotMap.invoke(ComponentSlotMap.java:1599) at com.tridium.sys.engine.EngineUtil.doInvoke(EngineUtil.java:49) at com.tridium.sys.engine.EngineManager.checkAsyncActions(EngineManager.java:364) at com.tridium.sys.engine.EngineManager.execute(EngineManager.java:209) at com.tridium.sys.engine.EngineManager$EngineThread.run(EngineManager.java:691)