?
?
您好,若您这边操作DLL仍有问题,可以发邮件到我司技术邮箱。我们整理一个完整的QT工程,以供参考。
已发送邮件,
再询问一下,这个函数
BOOLWINAPICH341ReadEEPROM( // 从EEPROM中读取数据块,速度约56K字节
ULONGiIndex, // 指定CH341设备序号
EEPROM_TYPEiEepromID, // 指定EEPROM型号
ULONGiAddr, // 指定数据单元的地址
ULONGiLength, // 准备读取的数据字节数
PUCHARoBuffer ); // 指向一个缓冲区,返回后是读入的数据
iAddr, iLength, oBuffer各自应该具体填什么参数
iAddr在windows下给EEPROM写入时,是否需要考虑大端小端问题,如果考虑windows为小端的话,首地址应该如何填;
iLength,如果写EEPROM数据为35位的字符串,iLength应该如何填;
oBuffer,如果写EEPROM数据为35位字符串,oBuffer如何填,如何转换数据类型
您好,关于CH341ReadEEPRM的使用:
1、iAddr填写你需要操作的目标地址即可,参数为主机序,不用考虑大小端;
2、iLength填写目标长度,如35个字节,直接填写35即可;
3、oBuffer是指针类型,直接传UCHAR类型数组地址即可;
举例:
目标:往EEPROM的单元地址2,写入35个字节。
UCHAR buffer[100];
CH341ReadEEPROM(handle, 24C02, 2, 35, buffer);
十分感谢,这是我呆过的最好的社区
您好,您的邮件还没有收到,麻烦确认下是否发送成功。
已发送
将您发送的Qt工程的按键事件作替换:
void?MainWindow::on_pushButton_clicked()
{
????uint8_t?buf[20]?=?"test";
????CH341OpenDevice(0);
????CH341WriteEEPROM(0,ID_24C08,?0,?20,?buf);
????uint8_t?cBuff[20]?=?"";
????CH341ReadEEPROM(0,?ID_24C08,?0,?20,?cBuff);
????CHAR?buffer[mMAX_BUFFER_LENGTH?*?3];
????ULONG?i,?j?=?0;
????for(i?=?0;?i?<?10;?i++)
????{
????????sprintf(&buffer[j],?"%2x?",cBuff[i]);????//两位十六进制数加一个空格
????????if?(cBuff[i]?<?16?)?????????????????????//一位十六进制字符前面加0
????????????buffer[j]?=?48;
????????if?(buffer[j]?>=?97?&&?buffer[j]?<=?122)?//小写字母转为大写字母
????????????buffer[j]?=?buffer[j]?-?32;
????????if?(buffer[j+1]?>=?97?&&?buffer[j?+?1]?<=?122)?//小写字母转为大写字母
????????????buffer[j+1]?=?buffer[j?+?1]-32;
????????j?+=?3;
????}
????buffer[j]?=?'\0';
????qDebug()?<<?buffer;
????CH341CloseDevice(0);
}
编译没有报错,但运行后读取EEPROM,全为十六进制的FF,可能是什么原因
建议先使用我们的CH341EVT的上位机工具,先操作下EEPROM器件,排除硬件是否有问题。链接地址:https://www.wch.cn/downloads/CH341EVT_ZIP.html