编写ASCOM平台的驱动

 

近来在玩天文,自己DIY了一个电动的调焦。ASCOM平台是一个天文的驱动和软件的开发标准,它是一个开源的开放平台。主要是使用了.net的技术。按这个协议写好了,你写的驱动就可以给非常多的遵守这个标准的应用使用了。

https://ascom-standards.org

 

开发工具:

1. Visual studion 2012/2013,太高的版本好像开发包不支持。

2.Inno setup, 用来制作驱动的安装包,ascom的开发包,有自动生成这个安装脚本的工具,很方便

3.开发文档:https://ascom-standards.org/Developer/Index.htm

4.安装ASCOM6.5平台之后,和上面的工具之后,下载开发工具包https://ascom-standards.org/Downloads/PlatDevComponents.htm

5.安装工具之后,在vs中新建工具就有了ascom相关的工程模板了。

6.我是使用串口来编程,需要向卖家获得串口的命令,返回,设置等协议文档。

7.驱动调用是可以Thread.sleep来同步操作的

8. 写好之后,Target选AnyCpu,  然后使用ASCOM工具包里的Driver Install Script Generator就可以生成Inno setup的安装脚本,然后打包发布。

9.源代码在https://github.com/aerror2/LsAutoFocuser ,可以参考一下。

以下是驱动的架构图。

 

 

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
为了实现ASCOM平台远程操控开关,你需要先了解ASCOM平台以及所使用的硬件设备。ASCOM平台是一个标准化的接口,用于天文学望远镜、摄像机、焦平面阵列等设备之间的通信和控制。在ASCOM平台中,通过安装驱动程序,可以将设备与计算机连接起来,并通过ASCOM平台提供的API进行控制。 对于控制开关,你需要使用一个硬件设备,如继电器模块,来实现开关的控制。在使用C语言编写程序时,你可以通过串口、网络等方式与硬件设备进行通信,并通过ASCOM平台提供的API来实现远程控制。 以下是一个简单的示例程序,用于通过ASCOM平台远程控制继电器模块开关: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include "ASCOM.DriverAccess.h" int main(int argc, char* argv[]) { // 初始化ASCOM平台 if (!ASCOMInit()) { printf("ASCOM platform initialization failed!\n"); return -1; } // 枚举可用设备 ASCOMDeviceList* deviceList = ASCOMFindDevices("ASCOM.Switch", ""); if (deviceList == NULL || deviceList->Count == 0) { printf("No available devices found!\n"); ASCOMShutdown(); return -1; } // 选择设备 ASCOMDevice* device = ASCOMChooseDevice(deviceList); if (device == NULL) { printf("Device selection failed!\n"); ASCOMShutdown(); return -1; } // 打开设备 if (!ASCOMOpenDevice(device)) { printf("Failed to open device!\n"); ASCOMShutdown(); return -1; } // 控制开关 if (argc == 2 && strcmp(argv[1], "on") == 0) { ASCOMSetSwitch(device, "Switch", 1); printf("Switch turned on.\n"); } else if (argc == 2 && strcmp(argv[1], "off") == 0) { ASCOMSetSwitch(device, "Switch", 0); printf("Switch turned off.\n"); } else { printf("Invalid command!\n"); } // 关闭设备 ASCOMCloseDevice(device); // 释放资源 ASCOMFreeDeviceList(deviceList); ASCOMShutdown(); return 0; } ``` 在这个程序中,我们使用了ASCOM平台提供的函数来枚举可用设备、选择设备、打开设备、控制开关等操作。具体来说,ASCOMFindDevices函数用于枚举可用设备,ASCOMChooseDevice函数用于选择设备,ASCOMOpenDevice函数用于打开设备,ASCOMSetSwitch函数用于控制开关。在控制开关时,我们通过命令行参数来指定开关状态。 需要注意的是,这个示例程序只是一个简单的演示,实际应用中可能需要更多的错误处理和异常情况的处理。此外,硬件设备的具体使用方法也需要根据实际情况进行调整。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值