Part Number:DLP4710EVM-LC
TI工程师您好,
我目前用QT(开发环境:Qt 5.12 + MSVC2017 64bit Release)对光机GUI的一些功能进行移植开发,在官网上获取了cyusbserial.dll 的64位库,但调用读命令CYPRESS_I2C_ReadI2C一直失败。
1—-我将samples的.c代码添加到Qt中的cpp调用。 如图1

图1
2—-调用写命令CYPRESS_I2C_WriteI2C 会成功,但调用读命令CYPRESS_I2C_ReadI2C 都失败了。如图2

图2
3—-为了方便查看,我已在代码中加上打印查看返回值。QT环境中调用 Write 命令都是成功说明调用库成功了,但 Read 命令却一直返回失败。如图3


4—-我另外在VS2017环境下运行samples项目(纯C)做了测试,使用该64位的库是没问题的。如图4 图5

图4 图5
因此,请问我需要在Qt环境下使用该接口,需要如何处理?
Jeremy_Wu:
这是QT兼容性的问题,使用32位测试是否有问题?
Cypress 32位是TI用VS2017测试过的,QT也先用32位测试。
请提供QT代码我们对比测试。
你这里是QT读有问题ReadI2C(先写后读,里面的写返回对,表示写出去了,但是s_Handle是64位),因此WriteI2C也没有测试一定可以。
看看下面到哪一步有问题?(测试32位s_Handle是否一样?)
bool CYPRESS_I2C_ReadI2C(uint32_t ReadDataLength, uint8_t* ReadData){ CY_DATA_BUFFER ReadBuffer; CY_RETURN_STATUS Status;
ReadBuffer.buffer = ReadData; ReadBuffer.length = ReadDataLength; ReadBuffer.transferCount = 0;
Status = CyI2cRead(s_Handle, &s_DataConfig, &ReadBuffer, I2C_TIMEOUT_MILLISECONDS); if ((Status != CY_SUCCESS) && (Status != CY_ERROR_IO_TIMEOUT)) { //printf("Read I2C Error %d!!! \n", Status); CyI2cReset(s_Handle, false); CyI2cReset(s_Handle, true); return false; }
return true;}
,
zr z:
你好,
1、我用32位测试了也不行(无论Debug或Release),CYPRESS_I2C_WriteI2C和CYPRESS_I2C_ReadI2C读写命令都会失败,反而64位CYPRESS_I2C_WriteI2C会成功。
2、另外,我有试过用vs编译你们提供的dlpc347x_samples项目 release版本如果C/C++ 全程序优化选择是也会出现问题。
所以我猜测是否跟qmake的默认优化机制有关,你们提供的库是否不支持qmake优化。
目前仍无法解决这个调用问题
附QT代码:
链接:pan.baidu.com/…/1act1yj5DuVTAqMwCrYGb8g
提取码:bz7s
,
DLP_Tech:
你好,或许可以交流一下,方便的话可以私聊
18501375210
,
meng shuai:
此问题一般为I2C接口问题,可以排查编译器的设置等
,
meng shuai:
此问题之前处理过,可以在线帮你们看看
,
Jeremy_Wu:
有几位第三方设计工作者协助。
使用VS版本的Debug 64位是否可以YPRESS_I2C_WriteI2C和CYPRESS_I2C_ReadI2C读写命令都可以?
这是第一步。
再移植到QT.
VS 32位是肯定没有问题的。
TI中文支持网






