Advertisement
Guest User

cdctest.cpp

a guest
Nov 30th, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <errno.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <fcntl.h>
  6. #include <stdexcept>
  7. #include <string.h>
  8. #include <unistd.h>
  9. #include <sys/time.h>
  10. #include <sys/types.h>
  11. #include <unistd.h>
  12.  
  13. using namespace std;
  14.  
  15. int main(int argc, char *argv[]) {
  16. if (argc != 2) {
  17. std::cout << "not enough parameters" << std::endl;
  18. }
  19.  
  20. const std::string iface = argv[1];
  21.  
  22. int fd = open(iface.c_str(), O_RDWR);
  23. if (fd < 0)
  24. throw std::runtime_error(
  25. std::string("Could not open device: ") + iface);
  26.  
  27. // close(fd);
  28. // return 0;
  29. unsigned long writeCount = 0;
  30.  
  31. char buffer[256];
  32. while (true) {
  33.  
  34. struct timeval tv;
  35. tv.tv_sec = 0;
  36. tv.tv_usec = 20000;
  37.  
  38. fd_set rfds;
  39. FD_ZERO(&rfds);
  40. FD_SET(fd, &rfds);
  41.  
  42. fd_set wfds;
  43. FD_ZERO(&wfds);
  44. FD_SET(fd, &wfds);
  45.  
  46.  
  47. int retval = select(fd + 1, &rfds, &wfds, NULL, &tv);
  48.  
  49. if (retval == -1)
  50. std::cout << "select error" << std::endl;
  51. else if (retval) {
  52. if( FD_ISSET(fd, &rfds)) {
  53. int readCount = read(fd, buffer, 256);
  54. if (readCount == -1) {
  55. std::cout << "Read Error: " << errno << " - " << strerror(errno)
  56. << std::endl;
  57. }
  58. else {
  59. std::cout << "Read " << readCount << std::endl;
  60. }
  61. }
  62. } else {
  63. std::cout << "Timeout" << std::endl;
  64. }
  65.  
  66. std::string writeData = "abcdefg";
  67. int writeRc = write(fd, writeData.c_str(), writeData.size());
  68. if (writeRc == -1) {
  69. std::cout << "Write Error: " << errno << " - " << strerror(errno)
  70. << std::endl;
  71. } else
  72. {
  73. std::cout << "Write OK #" << writeCount++ << std::endl;
  74. }
  75. }
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement