//-------------------------------------------------------------- void testApp::update() { if (currentMode == MODE_CONTROLLED_BY_ARDUINO) { processSerial(); rotationalSpeed = ofMap(potValue, 0, 1023, -maxSpeed, maxSpeed); float elapsedTime = ofGetLastFrameTime(); imageSectionHeading += rotationalSpeed * elapsedTime; generateVBOs(); } }
//pocess serial and I2C interface void Interface::process(void) { processSerial(); processI2C(); }
int main(int argc, char **argv) { in_port_t port = DEFAULT_PORT; long baud = DEFAULT_BAUD; char dv3000tty[MAXPATHLEN] = DEFAULT_TTY; fd_set fds; int serialFd; int sockFd; int topFd; int c; #ifdef __CYGWIN__ int commnum; #endif char reset = 0; char daemon = 0; setvbuf(stdout, NULL, _IOLBF, 0); setvbuf(stderr, NULL, _IOLBF, 0); #ifdef __CYGWIN__ while ((c = getopt(argc, argv, "dp:s:c:vxrh")) != -1) { #else while ((c = getopt(argc, argv, "dp:s:i:vxrh")) != -1) { #endif switch (c) { case 'd': daemon = 1; break; case 'p': errno = 0; port = strtol(optarg, NULL, 10); if(errno != 0 || port == 0) { fprintf(stderr, "Invalid port number: %s\n", optarg); usage(); } break; case 's': errno = 0; baud = strtol(optarg, NULL, 10); if(errno != 0 || baud == 0) { fprintf(stderr, "Invalid baud rate: %s\n", optarg); usage(); } break; #ifdef __CYGWIN__ case 'c': commnum = strtol(optarg, NULL, 10); sprintf(dv3000tty,"/dev/ttyS%d",commnum - 1); break; #else case 'i': strncpy(dv3000tty, optarg, sizeof(dv3000tty)); break; #endif case 'v': fprintf(stdout, "AMBEserver: version " DV3000_VERSION "\n"); return 0; case 'x': debug = 1; break; case 'r': reset = 1; break; case 'h': default: usage(); break; } } if (strlen(dv3000tty) < 1) { fprintf(stderr, "An input tty filename (-i /dev/ttyXXX) must be set.\n"); return 1; } if (daemon) { pid_t pid = fork(); if (pid < 0) { fprintf(stderr, "AMBEserver: error in fork(), exiting\n"); exit(1); } // If this is the parent, exit if (pid > 0) exit(0); // We are the child from here onwards setsid(); umask(0); } fprintf(stdout, "AMBEserver: Starting...\n"); serialFd = openSerial(dv3000tty, baud); if (serialFd < 0) exit(1); fprintf(stdout, "AMBEserver: Opened serial port %s at %ld bps.\n", dv3000tty, baud); if(initDV3K(serialFd, reset) == 0) { fprintf(stderr, "AMBEserver: Could not initialize the DV3K!\n"); exit(1); } sockFd = openSocket(port); if (sockFd < 0) exit(1); fprintf(stdout, "AMBEserver: Listening for connections on UDP port %d.\n", port); topFd = (sockFd > serialFd ? sockFd : serialFd ) + 1; for (;;) { FD_ZERO(&fds); FD_SET(sockFd, &fds); FD_SET(serialFd, &fds); if (select(topFd, &fds, NULL, NULL, NULL) < 0) { fprintf(stderr, "AMBEserver: error from select: %s\n", strerror(errno)); exit(1); } if(FD_ISSET(sockFd, &fds)) if (!processSocket(sockFd, serialFd)) exit(1); if(FD_ISSET(serialFd, &fds)) if (!processSerial(sockFd, serialFd)) exit(1); } exit(0); }