【发布时间】:2021-10-31 12:48:12
【问题描述】:
0
故事是:我正在使用可以由 objc 框架自动控制的硬件,它已被许多同事使用,因此我可以将其视为“固定”库。但我想通过 Python 使用它,所以使用 pyobjc 我已经可以连接到这个设备,但无法向它发送数据。 header里面的objc命令是这样的
(BOOL) 执行abcCommand:(NSString*)commandabc
withArgs:(uint32_t)args
withData:(uint8_t*)data
writeLength:(NSUInteger)writeLength
readLength:(NSUInteger)readLength
timeoutMilliseconds:(NSUInteger)timeoutMilliseconds
error:(NSError **) error;
从我的 python 代码中,data 是一个参数,可以包含 256 字节的数据,例如 作为 0x00、0x01、0xFF。我的 python 代码如下所示:
senddata=Device.alloc().initWithCommunicationInterface_(tcpInterface)
command = 'ABCw'
args= 0x00
writelength = 0x100
readlength = 0x100
data = '\x50\x40'
timeout = 500
success, error = senddata.executeabcCommand_withArgs_withData_writeLength_readLength_timeoutMilliseconds_error_(command, args, data, writelength, readlength, timeout, None)
无论我发送什么,它总是显示。
ValueError: depythonifying 'char', got 'str'
我有点厌倦了挖掘,但找不到任何关于使用 pyobjc 将字符串或列表转换为 char 的信息
【问题讨论】:
-
欢迎来到 Stack Overflow。我们只能告诉您您实际向我们展示的代码有什么问题。
-
您需要展示更多 API 才能提供帮助。特别是,你必须告诉网桥这个指针是一个指向缓冲区的指针,如果没有看到更多,我无能为力。之后,“data”参数将是一个字节对象,而不是字符串。
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python objective-c pyobjc