首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python、ctypes、DLL和PCOMM仿真。如何预分配变量?

Python、ctypes、DLL和PCOMM仿真。如何预分配变量?
EN

Stack Overflow用户
提问于 2012-08-02 00:15:36
回答 1查看 1.9K关注 0票数 2

在花了很长时间学习python之后,我终于取得了一些突破:

我正在使用以下代码连接到个人通信终端:

代码语言:javascript
复制
from ctypes import *
import sys
PCSHLL32 = windll.PCSHLL32
hllapi = PCSHLL32.hllapi

def connect_pcomm(presentation_space):
    function_number = c_int(1)
    data_string = c_char_p(presentation_space)
    lenght = c_int(4)
    ps_position = c_int(0)
    hllapi(byref(function_number), data_string, byref(lenght), byref(ps_position))

到目前为止一切都很好。它确实可以连接到终端,我可以使用其他功能向屏幕发送按键、断开连接等。

我的问题是函数5,正如IBM文档所定义的那样:

http://publib.boulder.ibm.com/infocenter/pcomhelp/v5r9/index.jsp?topic=/com.ibm.pcomm.doc/books/html/emulator_programming08.htm

‘’复制表示空间功能将主机连接的表示空间的内容复制到您在EHLLAPI应用程序中定义的数据字符串中。‘’

我为此编写的代码(这并不是很特殊):

代码语言:javascript
复制
def copy_presentation_space():
    function_number = c_int(5)
    data_string = c_char_p("")
    lenght = c_int(0)
    ps_position = c_int(0)
    hllapi(byref(function_number), data_string, byref(lenght), byref(ps_position))

主要的问题是data_string变量应该是:“预先分配的目标字符串,主机表示空间的大小。”

因为我不太清楚这意味着什么,所以我只是试着运行代码。然后pythonw.exe崩溃了。史诗般的。终端窗口也崩溃了。它没有给出任何类型的错误,它只是说它停止工作。

现在,我的主要问题是,如何像IBM ref中提到的那样预分配字符串。材料?

我可以简单地在复制屏幕后添加'print data_string‘来查看信息吗?或者我需要使用一些ctype才能查看复制的信息吗?

编辑:我忘了说我不需要使用这个函数,我可以使用这个函数:

将演示空间复制到字符串(8)

我尝试使用它,但data_string变量从不更改值。

EDIT2:根据kwatford的建议,我更改了这行

代码语言:javascript
复制
data_string = c_char_p("")

代码语言:javascript
复制
data_string = create_string_buffer(8000)

现在函数不会崩溃并返回值0,这意味着:‘主机表示空间的内容被复制到应用程序。目标表示空间是活动的,键盘是解锁的。’但是当我尝试打印变量data_string时,我仍然得到一个空的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-02 00:48:27

您可以使用ctypes.create_string_buffer创建预分配的字符串缓冲区。

但是,您仍然需要知道缓冲区将有多大。我不熟悉您正在尝试运行的软件,但听起来您需要:

用于这些字符的扩展属性的Unicode characters

  • Possibly空间至少为25x80

因此,粗略估计,字符串应该至少有25*80*2*2 = 8000个字节。

我建议更深入地阅读文档,以便在不起作用时确定正确的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11763405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档