0

我在使用 pyserial 使 Python 与硬件显示器对话时遇到了一些问题。某些显示器功能需要在命令后发送一个带符号的字作为参数(即显示屏幕上的 X 或 Y)。

我以前一直使用 chr() ,但这仅适用于 < 255 的数字。

我已经尝试了以下转换,但它给出了一些奇怪的结果,使事情远离设定位置:

def ByteIt(self,data):
    datastring = str()
    for each in tuple(str(data)):
        datastring = datastring + chr(int(each))
    return datastring

我可能在这里离自己很远:)

我将如何使用它的示例:

x = 100
y = 350
serial.Write('\x01' + ByteIt(x) + ByteIt(y)) # command , xpos , ypos

问题是,当我这样做时,这些东西没有放在 x100,y350,大多数时候显示器会崩溃:(

有关如何正确完成此操作的任何提示?

4

2 回答 2

2

阅读有关该struct模块的信息。

http://docs.python.org/library/struct.html

struct.pack()用正确的调用替换所有的“chr”和东西。

具体来说

bytes = struct.pack( 'h', some_data )

应该给你一个“签名词”。

于 2010-07-22T18:45:21.457 回答
0

您可能需要再次修改有关“pack”和“unpack”的文档。选择适当的大写或小写允许您指定字节顺序。因此,根据上面在您的设备上无法完美运行的示例,我认为您需要:

x = 100
y = 350
serial.Write('\x01' + 
             struct.pack('>hh', x) + 
             struct.pack('>hh', y)) # command , xpos , ypos
于 2013-02-02T10:08:36.943 回答