本帖最后由 风的孩子 于 2018-9-17 16:09 编辑
我也在倒腾。下位机使用Arduino,靠谱好用。
上位机程序使用Stellarium。
通过串口直接连接,使用LX200协议。
目前已经能够虚拟一台望远镜了。
目前的问题是赤道坐标系和地平坐标系的转换问题让人有些烦。
代码如下:
/************/
String comdata="";
String GR="02:31:50";
String GD="+89:20:35";
String RH;
long int RHM;
String RM;
long int RMM;
String RS;
long int RSM;
long int HMD;
String DH;
long int DHM;
String DM;
long int DMM;
String DS;
long int DSM;
String fuhao;
long int SMD;
char mark='&';
void setup() {Serial.begin(9600);}
void loop() {
if(Serial.available()>0)
{delay(100);
mark=Serial.read();
if(mark==':'){
comdata=Serial.readStringUntil('#');
mark='&';
if(comdata=="GD"){Serial.print(GD+"#");comdata="";}
if(comdata=="GR"){Serial.print(GR+"#");comdata="";}
if(comdata=="MS"){Serial.print("0");comdata="";}
if(comdata.startsWith("Sr")==1){
Serial.print("1");
comdata.remove(0,3);
GR=comdata;
RH=GR.substring(0,2);RHM=3600*RH.toInt();
fuhao=GR.substring(2);
RM=GR.substring(3,5);RMM=60*RM.toInt();
RS=GR.substring(6,8);RSM=RS.toInt();
HMD=RHM+RMM+RSM;
comdata="";}
if(comdata.startsWith("Sd")==1){
Serial.print("1");
comdata.remove(0,3);
GD=comdata;
DH=GD.substring(1,3);DHM=3600*DH.toInt();
DM=GD.substring(4,6);DMM=60*DM.toInt();
DS=GD.substring(7,9);DSM=DS.toInt();
SMD=DHM+DMM+DSM;
comdata="";}
}
}
}
|