Hallo Magic,
welche Pipe verwendet dein IowWrite()
(0) Setzen der Ports
(1) Ansprechen der Functionen
Code: Select all
IowBytes[0] = 2;
IowWrite(IowHandle, IowBytes);
Du setzt IowBytes[0] auf 2 ... bei Pipe_0 muss das aber 0 sein
und bei Pipe_1 würdest Du die I2C-Function(Senden) ansprechen ohne definierte Werte (Flag/Data)
Code: Select all
BEISPIELE: Werte an den PORTS ändern über PIPE_0
--------------------------------------------------------------------------------------------
Buffer mit Werte füllen um die Ports am IOW(24) zu ändern
DAT(0) = 0 muss Null sein
DAT(1) = 0-255 port 0
DAT(2) = 0-255 port 1
n = IowKitWrite( IODH , 0, dat(0) , 3 ) ... wenn OK dann N=3
Danach erzeugst Du einen Takt / Ausloser an Port_0.1 :
Code: Select all
IowBytes[1] = 2;
IowWrite(IowHandle, IowBytes);
IowBytes[1] = 0;
IowWrite(IowHandle, IowBytes);
... denn unter I2c würde das kein sinn machen ...
aber warum versuchst Du den Buffer ersmal 8 mal zu lesen , woher weist Du denn wieviel Reports vorhanden sind ?
Code: Select all
for(int c=0; c<=8; c++)
{
IowKitRead(IowHandle, IOW_PIPE_IO_PINS, (PCHAR) &IowReport, IOWKIT24_IO_REPORT_SIZE);
}
um Ihn dann ein neuntes mal zu lesen um dann den eigelesenen Wert auszuwerten, ob dieser von der I2C-Funktion kommt:
Code: Select all
IowKitRead(IowHandle, IOW_PIPE_IO_PINS, (PCHAR) &IowReport, IOWKIT24_IO_REPORT_SIZE);
if (IowReport.Bytes[0] == 2)
{
CheckBox16->Checked = true;
eingang[0] = 1;
}
else
{
CheckBox16->Checked = false;
eingang[0] = 0;
}
denn beim einlesen gibt data(0) an von welcher Quelle die Daten stammen:
Code: Select all
0 = ( z.B. nach TimeOut bei IowKitRead )
2 = I2C
3 = I2C
6 = LCD
9 = SPI
12 = RC5
25 = switch Matrix
26 = switch Matrix
255 = Ports
oder liege ich total daneben , beim lesen deines Codes ?!
was willst Du denn überhaupt machen ?