如何让DDE服务器在Python3中工作?

2024-09-30 06:13:00 发布

您现在位置:Python中文网/ 问答频道 /正文

2015年,我发布了一个关于如何Create DDE server in python and send data continously的问题。JayleoPlayGround发布的关于这个问题的答案和代码在Python2.7中运行得非常完美,我一直使用到最近

由于Python 2从2020年1月起不再受到积极支持,我想将代码转移到Python 3。我已经在python 3.7.6上使用pip安装了pywin32(版本227),并尝试使用与以前相同的代码:

# coded by JayleoPlayGround
# use Portable Python 2.7.5.1 + pywin32-214

import time
import win32ui, dde
from pywin.mfc import object


class DDETopic(object.Object):
    def __init__(self, topicName):
        self.topic = dde.CreateTopic(topicName)
        object.Object.__init__(self, self.topic)
        self.items = {}

    def setData(self, itemName, value):
        try:
            self.items[itemName].SetData( str(value) )
        except KeyError:
            if itemName not in self.items:
                self.items[itemName] = dde.CreateStringItem(itemName)
                self.topic.AddItem( self.items[itemName] )
                self.items[itemName].SetData( str(value) )


ddeServer = dde.CreateServer()
ddeServer.Create('Orbitron')
ddeTopic = DDETopic('Tracking')
ddeServer.AddTopic(ddeTopic)

while True:
    yourData = time.ctime() + ' UP0 DN145000001 UMusb DMfm AZ040 EL005 SNNO SATELLITE'
    ddeTopic.setData('Tracking', yourData)
    win32ui.PumpWaitingMessages(0, -1)
    time.sleep(0.1)

在Python3.7.6中运行上述代码并使用pywin32(版本227)时,我与之接口的外部DDE客户端应用程序能够连接到DDE服务器,但未正确接收数据字符串。如前所述,如果我将Python2.7与pywin32(版本214)一起使用,那么这很好

由于没有显示错误消息,我不知道python 3下的问题是什么。我为这个python版本(222到227)尝试了所有可用的pywin32版本,但没有成功。任何关于如何使这项工作的想法都将不胜感激


Tags: 代码importself版本topicobjecttimevalue

热门问题