URBot.java 1.4 KB

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