Exemple #1
0
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;
}
Exemple #2
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;
}
Exemple #3
0
/*
	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;
}
Exemple #5
0
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;
}
Exemple #6
0
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();
}
Exemple #7
0
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;
}