Serial port 通过三个不同的应用程序访问COMPORT 1

Serial port 通过三个不同的应用程序访问COMPORT 1,serial-port,gps,communication,modem,Serial Port,Gps,Communication,Modem,我有一个SMS应用程序,它通过GPS调制解调器接收信息,并通过GPS调制解调器返回。调制解调器正在使用COM1 现在,我需要另外两个应用程序,它们可以通过同一个GPS调制解调器发送消息。我尝试创建一个可以访问COM1以发送数据的Web服务,但当我尝试通过Web服务连接时,它会抛出一个错误:“COM1已被占用,访问被拒绝。” 在上述情况下,有人能帮我通过调制解调器连接吗 Khushi您必须确保只建立了一个连接 最简单的(也是技术含量最低,但可能最灵活的)是让脚本定期检查目录中的文件,并将文件中的消

我有一个SMS应用程序,它通过GPS调制解调器接收信息,并通过GPS调制解调器返回。调制解调器正在使用COM1

现在,我需要另外两个应用程序,它们可以通过同一个GPS调制解调器发送消息。我尝试创建一个可以访问COM1以发送数据的Web服务,但当我尝试通过Web服务连接时,它会抛出一个错误:“COM1已被占用,访问被拒绝。”

在上述情况下,有人能帮我通过调制解调器连接吗


Khushi

您必须确保只建立了一个连接

最简单的(也是技术含量最低,但可能最灵活的)是让脚本定期检查目录中的文件,并将文件中的消息发送到调制解调器。然后,Web服务只为收到的每条短信编写一个文件。(这可以简单地扩展到接受电子邮件、web请求等)

更复杂的是启动一个线程来进行通信,并将消息推送到您喜爱的编程平台提供的类似FIFO的数据结构上。阻塞队列将是完美的。线程从队列中读取消息并将其发送到GSM调制解调器


如果你想确认短信是否已发送(根据我的经验,这并不意味着什么,当然也不意味着收件人确实收到了短信),你需要找到一种方法将反馈返回给来电者。这可以是在消息中设置布尔标志以发送另一条消息或执行回调。但我不想麻烦。我遇到过这样的情况,即使我们确认了消息中心,也有30%的消息消失。

有没有其他方法可以做到这一点,比如创建COM组件或某个集中式dll?是的,当然。但是,共享DLL或COM对象都不能解决将请求序列化到GSM调制解调器的基本问题。要做到这一点,您需要执行锁定(坏主意,不要执行锁定,这条路会导致死锁、性能问题和不可重复的问题)或使用1个线程/进程与gps/gsm调制解调器通信并逐个处理请求。您可以通过文件、命名管道、RPC、com调用、共享内存、任何最适合您需要的方式或任何组合与它进行通信。