×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

Driver for Ioptron Ieq45 with 8406 Hand Controler

  • Posts: 27
  • Thank you received: 2
No success. It will be easier to add a pulse guide to the GotoNova driver, which works better. 8406 hand controller command sets is almost the same as 8401.
6 years 6 months ago #19434

Please Log in or Create an account to join the conversation.

  • Posts: 27
  • Thank you received: 2
GotoNova driver: isSlewComplete give timeout error.

Command ":SE?#'" length is 6 not 16, strlen(cmd) is not equal to &nbytes_written.

bool LX200GotoNova::isSlewComplete()
{
char cmd[16];
int errcode = 0;
char errmsg[MAXRBUF];
char response[8];
int nbytes_read = 0;
int nbytes_written = 0;

strncpy(cmd, ":SE?#", 16);

DEBUGF(INDI::Logger::DBG_DEBUG, "CMD (%s)", cmd);

if ((errcode = tty_write(PortFD, cmd, strlen(cmd), &nbytes_written)) != TTY_OK)
6 years 6 months ago #19437

Please Log in or Create an account to join the conversation.

  • Posts: 27
  • Thank you received: 2
To add pulse guide I made the following changes. Is it sufficient ? Don't have hardware now. I have to check the correct command for pulseguide ":Mn%04d#" or ":Mgn%04d#". There is no info in command reference from Ioptron. I will check this letter. In obsolete ieq45driver8406.c is ":Mgn%04d#". Pulse guide from Ascom driver 2.11 works. I will try to spy in windows on com port.

lx200gotonova.h
...
virtual bool Park() override;
virtual bool UnPark() override;
virtual int SendPulseCmd(int direction, int duration_msec) override;

lx200gotonova.cpp
setLX200Capability(LX200_HAS_FOCUS | LX200_HAS_PULSE_GUIDING); instead setLX200Capability(LX200_HAS_FOCUS);

int LX200GotoNova::SendPulseCmd(int direction, int duration_msec)
{
int nbytes_write = 0;
char cmd[10];
switch (direction)
{
case LX200_NORTH:
sprintf(cmd, ":Mn%04d#", duration_msec);
break;
case LX200_SOUTH:
sprintf(cmd, ":Ms%04d#", duration_msec);
break;
case LX200_EAST:
sprintf(cmd, ":Me%04d#", duration_msec);
break;
case LX200_WEST:
sprintf(cmd, ":Mw%04d#", duration_msec);
break;
default:
return 1;
}

DEBUGF(INDI::Logger::DBG_DEBUG, "CMD (%s)", cmd);

tty_write_string(PortFD, cmd, &nbytes_write);

tcflush(PortFD, TCIFLUSH);
return 0;
Last edit: 6 years 6 months ago by Long Jon.
6 years 6 months ago #19443

Please Log in or Create an account to join the conversation.

that looks fine, submit it on Github as Pull-Request.
6 years 6 months ago #19448

Please Log in or Create an account to join the conversation.


Yes, it should just be const char *cmd = "SE?#"
6 years 6 months ago #19449

Please Log in or Create an account to join the conversation.

  • Posts: 27
  • Thank you received: 2

I don't know how to do this (Pull-request), but I will learn.

I need more testing. I have sniffed Ascom Driver 2.11 (phd - manual guide and other windows program).
If pulse length is less than 999 Ascom driver write (for example 750ms):
:Me750#:
If pulse guide is 1000ms or more Windows Ascom driver give multiple commands, (for example 2200ms):
:Me999# :Me999# :Me202#
(999+999+202=2200)

I think correct format is :Me%3d#. I will test this code:
int LX200GotoNova::SendPulseCmd(int direction, int duration_msec)
{
    int nbytes_write = 0;
    char cmd[10];
	int duration_time_msec=duration_msec;
	while (duration_time_msec>0)
	{
	if (duration_time_msec>999) duration_msec=999;
	else duration_msec=duration_time_msec;	
	switch (direction)
		{
			case LX200_NORTH:
				sprintf(cmd, ":Mn%03d#", duration_msec); 
				break;
			case LX200_SOUTH:
				sprintf(cmd, ":Ms%03d#", duration_msec);
				break;
			case LX200_EAST:
				sprintf(cmd, ":Me%03d#", duration_msec);
				break;
			case LX200_WEST:
				sprintf(cmd, ":Mw%03d#", duration_msec);
				break;
			default:
				return 1;
		}
	duration_time_msec = duration_time_msec - duration_msec;
	DEBUGF(INDI::Logger::DBG_DEBUG, "CMD (%s)", cmd);
    tty_write_string(PortFD, cmd, &nbytes_write);
	}
    tcflush(PortFD, TCIFLUSH);
    return 0;
}
Last edit: 6 years 6 months ago by Long Jon.
6 years 6 months ago #19624

Please Log in or Create an account to join the conversation.

  • Posts: 27
  • Thank you received: 2
6 years 6 months ago #19625

Please Log in or Create an account to join the conversation.

  • Posts: 5
  • Thank you received: 3
Hi Silver,

I am Nacho Mas, the developer of the old ieq45 8406 and 8407 INDI drivers (in obsolete dir). I have been disconnected of the INDI proyect last years but I own a ieq45 (HC8406) and I need to command it again using INDI.

I think indibase changed so much this years that is easier to create a new driver as you are trying than compile de old one.. May we can work together ... I have not much time but at lease I can help you testing and fixing base on my previous experience...

I paste here some relevant documents and information that I rescued from my mailing with ioptron people. This information is dated on 2013..

1. Very first version: GOTONOVA/GOTOSTAR command (GOTONOVA RS-232 COMMAND LANGUAGE)

This one works for all current iOptron SmartStar mount that uses 8402 or 8401 hand controller. The command is sent via USB port on a hand controller. The products include Cube, MiniTower and SmartStar PR EQ mount and GOTONOVA upgrade kit. No more bug fixing or upgrading.

2. RS232 for iEQ45 w/8406 HC only (iOptron iEQ45-8406 RS-232 COMMAND LANGUAGE)

This one only works for iEQ45 w/8406 hand controller. The control is via RS-232 port on a mount.

3. Current one for mount with 8407/8408 hand controller (iOptron Telescope RS-232 Command Language)

Most recent one. It has been used in iEQ45 w/8407HC, iEQ30, SmartEQ/SmartEQ Pro. The command is sent via serial port either on the mount (iEQ30/iEQ45) or hand controller (SmartEQ 8408 HC). This command set will be our current and future standard.
Attached the diferents command sets

Nacho
The following user(s) said Thank You: Jasem Mutlaq
Last edit: 6 years 6 months ago by Nacho Mas.
6 years 6 months ago #19729
Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 5
  • Thank you received: 3
As starting point I forked indi repository and made the changes needed to compile the old indi_ieq45_8406 driver again. It works. No guiding commands at this moment and more testing is needed but at least I can connect, change track speed, read RA/DEC and slew ...

github.com/nachoplus/indi

Something is wrong when using with PHD2 as auxiliary mount. May be phd2 miss some properties .. I'll do futher investigations...

Nacho
Last edit: 6 years 6 months ago by Nacho Mas.
6 years 6 months ago #19750

Please Log in or Create an account to join the conversation.

  • Posts: 27
  • Thank you received: 2
Thank you for the attached documents. Document "iOptron iEQ45 RS-232 COMMAND LANGUAGE November 22, 2010" is correct for Ieq45 with 8406HC.
It confirms that the appropriate commands for the pulse guide are like "Me999#" .

I do not have much programming skills but I will try to improve the driver.

Comands Me# and Mw# dosen't works corect. There is bug in the firmware. Ioptron will never fix it. I think about workaround. Maxim Dl uses small goto for move by arrows.

Could You check commands :SE?# and :SE# ?. My mount does not respond to them.
6 years 6 months ago #19839

Please Log in or Create an account to join the conversation.

  • Posts: 5
  • Thank you received: 3
Hi Silver

>>> Comands Me# and Mw# dosen't works corect. There is bug in the firmware. Ioptron will never fix it. I think about workaround. Maxim Dl uses small goto for move by arrows.

I ma not aware of that. I did not implement. I'll try this weekend when I'll have time to mount my ieq45.. Are you ask ioptron people for that?

>>>Could You check commands :SE?# and :SE# ?. My mount does not respond to them.

Same that above but is not in the HC8406 command set, so I'll expect to not work. In the old driver I checked the end of slew comparing actual RA/DEC with target RA/DEC.

Now I am studying the code to figure out what is the best way:

a) recover the old driver (the easy one for me)
b) do a new one base on lx200zeq45 (mostly works for HC8604...)
c) do a new one base on ieqpro driver. (?)

May be @krno could help us to decide...

Nacho
Last edit: 6 years 6 months ago by Nacho Mas.
6 years 6 months ago #19852

Please Log in or Create an account to join the conversation.

  • Posts: 27
  • Thank you received: 2
I did not talk about it with Ioptron. I know this from deleted Yahoo group "Ioptron telescope etc.." and yahoo group about Skysafari.

I have succesfuly calibrated mount. I have made first guided exposeure with Ekos. Code from previous post works.

Problem is with isSlewComplete method. I can't make exposures after goto. Have to disconnect, make calibration again (internal guider don't save calibration), make photo.
First I will try this code if (currentRA==targetRA and currentDEC==targetDEC) return true;

Commnad :CM# is ignored if telescope is slewing and return "Cordinates matched ... etc" if telescope is not slewing. Command reference say about do :CM# after goto and :CMR# in other Sync case etc. If simple solution with compare current and target RA/DEC fail, I will try merge it with Sync command :CM#.

Obsolte driver has many functions. I vote on 4. new driver on base on LX200GotoNova and implement functionality from Your driver.

Thank you

Robert
Last edit: 6 years 6 months ago by Long Jon.
6 years 6 months ago #19874

Please Log in or Create an account to join the conversation.

Time to create page: 1.463 seconds