我看到了一个类似的问题,但一直未能得到想要的结果。我需要调用一个C++函数并让该函数将一个数组传递给tcl。我现在的结构是:从C++函数返回一个char数组到tcl
Tcl_Obj * result = Tcl_NewObj();
unsigned char *buffer = Tcl_SetByteArrayLength(result, 16);
//some other code
//I2C function that fills the buffer
sub_i2c_read(handles[handle], theI2cAddr, 0, 0, (char*)buffer, theNumToRead
//more code
//try to place data in tcl
Tcl_SetObjResult(theInterp, result);
我已经能够看到,缓冲区有C++中所需的内容,但我想它在TCL设置变量为空。
我想这样称呼它:
set result [sub20 read $hand "70" 3]
我现在的思维过程是,这使得TCL对象,使用“缓冲”为指针字节数组把它变成一个字节数组,然后将数据设置为tcl,但这显然是有缺陷的。
任何进一步的澄清,将不胜感激。
一个字节数组在Tcl中没有隐含的含义。这不是一个字符串,你不应该查看它。 – 2015-02-24 16:25:16
@ n.m。所以我应该寻找一种方法将其转换为Tcl中的字符串? – 2015-02-24 16:30:19
你怎么确定结果是空的?使用二进制扫描? – 2015-02-24 16:44:26