有CH341的库吗,可以给我发一份吗

?

?


您好,若您这边操作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);


十分感谢,这是我呆过的最好的社区


您好,您的邮件还没有收到,麻烦确认下是否发送成功。


image.png已发送


将您发送的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器件,排除硬件是否有问题。链接地址:/downloads/CH341EVT_ZIP.html 


只有登录才能回复,可以选择微信账号登录