Advertisement
Guest User

my adaptation

a guest
Jun 16th, 2013
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. double j1=joints[0];
  2. double j2=joints[1];
  3. double j3=joints[2];
  4. double j4=joints[3];
  5. double j5=joints[4];
  6. double j6=joints[5];
  7. double w=joints[6];
  8. double gripper = joints[7];
  9.  
  10. //char joint[20];
  11. char *joint= new char[40];
  12. char *jdenso;
  13. char *input3="q\r";
  14. //char inp3[]="q\r";
  15. //input3=inp3;
  16.  
  17. sprintf(joint, "%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f \r",j1,j2,j3,j4,j5,j6,w,gripper);
  18. serialPort.Write(joint);
  19.  
  20. //serialPort.Read(); // MATTER HERE!!!!
  21. // *** START RS232 reading
  22. LONG lLastError = ERROR_SUCCESS;
  23. enum { EOF_Char = 115 };
  24. // Keep reading data, until an "s" or "S" has been received // EOF (CTRL-Z)
  25. bool fContinue = true;
  26. do
  27. {
  28. // Wait for an event
  29. lLastError = serialPort.WaitEvent(); // it waits here forever!!!!
  30. if (lLastError != ERROR_SUCCESS)
  31. ShowError(serialPort.GetLastError(), _T("Unable to wait for a COM-port event."));
  32.  
  33. // Save event
  34. const CSerial::EEvent eEvent = serialPort.GetEventType();
  35.  
  36. // Handle break event
  37. if (eEvent & CSerial::EEventBreak)
  38. {
  39. printf("\n### BREAK received ###\n");
  40. }
  41.  
  42. // Handle CTS event
  43. if (eEvent & CSerial::EEventCTS)
  44. {
  45. printf("\n### Clear to send %s ###\n", serialPort.GetCTS()?"on":"off");
  46. }
  47.  
  48. // Handle DSR event
  49. if (eEvent & CSerial::EEventDSR)
  50. {
  51. printf("\n### Data set ready %s ###\n", serialPort.GetDSR()?"on":"off");
  52. }
  53.  
  54. // Handle error event
  55. if (eEvent & CSerial::EEventError)
  56. {
  57. printf("\n### ERROR: ");
  58. switch (serialPort.GetError())
  59. {
  60. case CSerial::EErrorBreak: printf("Break condition"); break;
  61. case CSerial::EErrorFrame: printf("Framing error"); break;
  62. case CSerial::EErrorIOE: printf("IO device error"); break;
  63. case CSerial::EErrorMode: printf("Unsupported mode"); break;
  64. case CSerial::EErrorOverrun: printf("Buffer overrun"); break;
  65. case CSerial::EErrorRxOver: printf("Input buffer overflow"); break;
  66. case CSerial::EErrorParity: printf("Input parity error"); break;
  67. case CSerial::EErrorTxFull: printf("Output buffer full"); break;
  68. default: printf("Unknown"); break;
  69. }
  70. printf(" ###\n");
  71. }
  72.  
  73. // Handle ring event
  74. if (eEvent & CSerial::EEventRing)
  75. {
  76. printf("\n### RING ###\n");
  77. }
  78.  
  79. // Handle RLSD/CD event
  80. if (eEvent & CSerial::EEventRLSD)
  81. {
  82. printf("\n### RLSD/CD %s ###\n", serialPort.GetRLSD()?"on":"off");
  83. }
  84.  
  85. // Handle data receive event
  86. if (eEvent & CSerial::EEventRecv)
  87. {
  88. // Read data, until there is nothing left
  89. DWORD dwBytesRead = 0;
  90. char szBuffer[101];
  91. do
  92. {
  93. // Read data from the COM-port
  94. lLastError = serialPort.Read(szBuffer,sizeof(szBuffer)-1,&dwBytesRead);
  95. if (lLastError != ERROR_SUCCESS)
  96. ShowError(serialPort.GetLastError(), _T("Unable to read from COM-port."));
  97.  
  98. if (dwBytesRead > 0)
  99. {
  100. // Finalize the data, so it is a valid string
  101. szBuffer[dwBytesRead] = '\0';
  102.  
  103. // Display the data
  104. printf("%s", szBuffer);
  105.  
  106. // Check if EOF (CTRL+'[') has been specified
  107. if (strchr(szBuffer,EOF_Char))
  108. fContinue = false;
  109. }
  110. }
  111. while (dwBytesRead == sizeof(szBuffer)-1);
  112. }
  113. }
  114. while (fContinue);
  115. // *** END RS232 reading
  116.  
  117. serialPort.Write(input3);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement