URBot.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package at.acdp.urweb;
  2. import at.acdp.urweb.sclient.data.MasterBoardData;
  3. import at.acdp.urweb.sclient.data.ScReadThread;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. public class URBot {
  7. private ScReadThread sc;
  8. private static final Logger log = LoggerFactory.getLogger(URBot.class);
  9. public URBot(String ip) {
  10. sc=new ScReadThread(ip);
  11. Thread t=new Thread(sc);
  12. t.start();
  13. }
  14. public void sendProgram(String program) {
  15. String[] lines=program.split("[\\r\\n]+");
  16. String res="";
  17. for(String line:lines) {
  18. line=line.trim();
  19. if(line.startsWith("//"))
  20. continue;
  21. if(line.startsWith("#"))
  22. continue;
  23. if(!line.endsWith("\n"))
  24. line+="\n";
  25. res+=line;
  26. }
  27. if(!program.endsWith("\n"))
  28. program+="\n";
  29. sc.writeCmd(program);
  30. }
  31. public void sendFreedrive(int timeout) {
  32. sc.writeCmd(String.format("def myProg():\n\tfreedrive_mode()\n\tsleep(%d)\nend", timeout));
  33. }
  34. public void sendMessage(String message) {
  35. sc.writeCmd(String.format("textmsg(%s)", message));
  36. }
  37. public void setDigital(int which, boolean val) {
  38. String c=String.format("digital_out[%d]=%s", which, val?"True":"False");
  39. sc.writeCmd(c);
  40. }
  41. public boolean getDigital(int which) {
  42. MasterBoardData mb = sc.getRde().getLastMB();
  43. return ((mb.digitalOutputBits&(1<<which)) >0) ;
  44. }
  45. }