0
故事是:我正在使用一个可以由objc框架自动控制的硬件,它已经被许多同事使用,所以我可以将其视为一个"固定"库。但是我想通过 Python 使用它,所以使用 pyobjc,我已经可以连接到这个设备,但无法将数据发送到其中。 标头中的 objc 命令是这样的
(BOOL) executeabcCommand:(NSString*)commandabc
withArgs:(uint32_t)args
withData:(uint8_t*)data
writeLength:(NSUInteger)writeLength
readLength:(NSUInteger)readLength
timeoutMilliseconds:(NSUInteger)timeoutMilliseconds
error:(NSError **) error;
从我的 Python 代码来看,数据是一个参数,可以包含 256 字节的数据,例如 正如0x00、0x01 0xFF。我的 python 代码如下所示:
senddata=Device.alloc().initWithCommunicationInterface_(tcpInterface)
command = 'ABCw'
args= 0x00
writelength = 0x100
readlength = 0x100
data = 'x50x40'
timeout = 500
success, error = senddata.executeabcCommand_withArgs_withData_writeLength_readLength_timeoutMilliseconds_error_(command, args, data, writelength, readlength, timeout, None)
无论我发送什么,它总是显示这一点。
ValueError:解蟒化"char",得到"str">
我厌倦了一点挖掘,但找不到任何关于使用 pyobjc 将字符串或列表转换为字符的信息
Objective-C 遵循适用于 C 的规则。
所以在objc和C中,当我们查看uint8_t*
时,它实际上与内存中的char*
完全相同。string
与此不同的只是从这个意义上说,人们同意最后一个字符以