I2C Buffer Leseproblem

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
supertronic
Posts: 2
Joined: Fri Mar 02, 2018 12:39 am

I2C Buffer Leseproblem

Post by supertronic »

Hallo,
ich habe Probleme unter QT ein I2C Block Lesekommando zu erstellen.

Damit ich den Buffer erhalte muss ich 2x das IowKitRead Kommado aufrufen um die empfangenen Daten im Buffer zu erhalten.
Was ist an meinem Code falsch?

IO-WARRIOR56, QTCREATOR, Windows 10 pro

Funktionsaufruf: I2C_readblock(IOWarrior, 0xEE, 0, 16, bI2C_Readbuffer);

short I2C_readblock(IOWKIT_HANDLE handle, BYTE ucI2CAddress, BYTE ucAddress, BYTE ucCount, BYTE *bBuffer)
{
BYTE ucPtr;
IOWKIT56_SPECIAL_REPORT report;
QByteArray qbCmd;
ULONG ulRet;
memset(&report, 0, IOWKIT56_SPECIAL_REPORT_SIZE);
report.ReportID = 0x02; // Enable Write-Mode
report.Bytes[0] = 0xC2; // Start & Stopbit = 1, 3Bytes will be send
report.Bytes[1] = ucI2CAddress; // Device address
report.Bytes[2] = ucAddress; // set sub address
IowKitWrite(handle,IOW_PIPE_SPECIAL_MODE, (char *) &report, IOWKIT56_SPECIAL_REPORT_SIZE);


memset(&report, 0, IOWKIT56_SPECIAL_REPORT_SIZE);
report.ReportID = 0x03; // Enable Read-Mode
report.Bytes[0] = ucCount; // telegram length
report.Bytes[1] = ucI2CAddress+1; // Device address
IowKitWrite(handle,IOW_PIPE_SPECIAL_MODE, (char *) &report, sizeof(report));

ulRet = IowKitRead(handle,IOW_PIPE_SPECIAL_MODE, (char *) &report, sizeof(report)); // 1. Lesen
ulRet = IowKitRead(handle,IOW_PIPE_SPECIAL_MODE, (char *) &report, sizeof(report)); // 2. Lesen

qbCmd.clear();
qbCmd.append(ulRet);
for(ucPtr = 0;ucPtr < ucCount; ucPtr++)
{
*bBuffer = report.Bytes[2+ucPtr];

qbCmd.append(report.Bytes[2+ucPtr]);
bBuffer++;
}
qDebug() <<"[iowarrior] I2C readblock " << qbCmd.toHex();
return(1);
}

Guido Körber
Site Admin
Posts: 2740
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: I2C Buffer Leseproblem

Post by Guido Körber »

Wenn man den Status-Report vom I2C-Write nicht gleich liest, dann liegt der halt noch im Buffer…

supertronic
Posts: 2
Joined: Fri Mar 02, 2018 12:39 am

Re: I2C Buffer Leseproblem

Post by supertronic »

Wenn man den Status-Report vom I2C-Write nicht gleich liest, dann liegt der halt noch im Buffer…
Ist natürlich logisch!
Wie währe es wenn Ihr mal die Dokumentation auf einen verständlichen Stand bringt und den Ablauf in eienm Flussdiagramm beschreiben würdet?

Danke für die Antwort.

Post Reply