static int scpi_connect(struct scpi_instrument *scpi) { int ret; if(scpi->network) { ret = network_connect(scpi); if (ret != 0) return ret; if (scpi->control_socket != scpi->main_socket) { scpi_fprintf(scpi, "DCL\n"); if (strlen(scpi->response)) { if (!strcmp(scpi->response, "DCL\n")) printf("Warning : %s DCL response: %s\n", __func__, scpi->response); } } } else if (scpi->serial) { tty_connect(scpi); } else { printf("misconfigured SCPI data structure\n"); return -1; } scpi_fprintf(scpi, "*CLS\n"); scpi_fprintf(scpi, "*RST\n"); scpi_fprintf(scpi, "*IDN?\n"); if (!strstr(scpi->response, scpi->id_regex)) { printf("instrument doesn't match regex\n"); printf("\twanted : '%s'\n", scpi->id_regex); printf("\trecieved : '%s'\n", scpi->response); return -1; } printf("Instrument ID: %s\n", scpi->response); return 0; }
bool NFocus::Connect() { int connectrc=0; char errorMsg[MAXRBUF]; if (isDebug()) IDLog("connecting to %s\n",PortT[0].text); if ( (connectrc = tty_connect(PortT[0].text, 9600, 8, 0, 1, &PortFD)) != TTY_OK) { tty_error_msg(connectrc, errorMsg, MAXRBUF); if (isDebug()) IDLog("Failed to connect o port %s. Error: %s", PortT[0].text, errorMsg); IDMessage(getDeviceName(), "Failed to connect to port %s. Error: %s", PortT[0].text, errorMsg); return false; } IDMessage(getDeviceName(), "Nfocus is online. Getting focus parameters..."); return true; }
/* Opens serial port with proper configuration @param device String to device (/dev/ttyS0) @return -1 if can't connect. File descriptor, otherwise. */ int Connect_MaxDomeII(const char *device) { int fd; if(tty_connect(device, 19200, 8, 0, 1, &fd) != TTY_OK) { return -1; } //fd = OpenSerialPort(device); return fd; }
bool ShelyakEshel::Connect() { int rc; char errMsg[MAXRBUF]; if ((rc = tty_connect(PortT[0].text, 2400, 8, 0, 1, &PortFD)) != TTY_OK) { tty_error_msg(rc, errMsg, MAXRBUF); LOGF_ERROR("Failed to connect to port %s. Error: %s", PortT[0].text, errMsg); return false; } LOGF_INFO("%s is online.", getDeviceName()); return true; }
bool XAGYLWheel::Connect() { int connectrc=0; char errorMsg[MAXRBUF]; sim = isSimulation(); if (!sim && (connectrc = tty_connect(PortT[0].text, 9600, 8, 0, 1, &PortFD)) != TTY_OK) { tty_error_msg(connectrc, errorMsg, MAXRBUF); DEBUGF(INDI::Logger::DBG_SESSION, "Failed to connect to port %s. Error: %s", PortT[0].text, errorMsg); return false; } char resp[XAGYL_MAXBUF]; bool rc = getCommand(INFO_FIRMWARE_VERSION, resp); if (rc) { int fwver=0; int fw_rc = sscanf(resp, "%d", &fwver); if (fw_rc > 0) { firmwareVersion = fwver; // We don't have pulse width for version < 3 if (firmwareVersion < 3) SettingsNP.nnp--; if (getMaxFilterSlots()) { initOffset(); DEBUG(INDI::Logger::DBG_SESSION, "XAGYL is online. Getting filter parameters..."); return true; } } else DEBUGF(INDI::Logger::DBG_ERROR, "Unable to parse (%s)", resp); } DEBUG(INDI::Logger::DBG_SESSION, "Error retreiving data from XAGYL Filter Wheel, please ensure filter wheel is powered and the port is correct."); return false; }
bool Vantage::Connect() { int connectrc=0; char errorMsg[MAXRBUF]; DEBUGF(INDI::Logger::DBG_DEBUG, "Vantage connecting to %s", PortT[0].text); if ( (connectrc = tty_connect(PortT[0].text, atoi(IUFindOnSwitch(&BaudRateSP)->name), 8, 0, 1, &PortFD)) != TTY_OK) { tty_error_msg(connectrc, errorMsg, MAXRBUF); DEBUGF(INDI::Logger::DBG_ERROR,"Failed to connect to port %s @ baud %d. Error: %s", PortT[0].text,atoi(IUFindOnSwitch(&BaudRateSP)->name), errorMsg); return false; } DEBUGF(INDI::Logger::DBG_DEBUG, "Port FD %d",PortFD); return ack(); }
bool FlipFlat::Connect() { int connectrc=0; char errorMsg[MAXRBUF]; if (connectrc = tty_connect(PortT[0].text, 9600, 8, 0, 1, &PortFD) != TTY_OK) { tty_error_msg(connectrc, errorMsg, MAXRBUF); DEBUGF(INDI::Logger::DBG_SESSION, "Failed to connect to port %s. Error: %s", PortT[0].text, errorMsg); return false; } /* Drop RTS */ int i = 0; i |= TIOCM_RTS; if (ioctl(PortFD, TIOCMBIC, &i) != 0) { DEBUG(INDI::Logger::DBG_ERROR, "IOCTL error."); return false; } i |= TIOCM_RTS; int rts=0; rts = ioctl(PortFD, TIOCMGET, &i); if (ping() == false) { DEBUG(INDI::Logger::DBG_ERROR, "Device ping failed."); return false; } DEBUGF(INDI::Logger::DBG_SESSION, "Connected successfuly to %s. Retrieving startup data...", getDeviceName()); SetTimer(POLLMS); return true; }