2017-01-21 4 views
-1

im STM32上で新しいものがあり、問題が発生しました。STM32 USBバッファが正しく検索されない

私は次のコードを使用してUSB経由のものを送ってるのQtアプリで

:m_valueはサイズ4を持っており、それはuint16_tです

switch (buffer[1]) 
    { 
     case 18:     
      x = ((uint16_t)buffer[2] << 8) + buffer[3]; 
      y = ((uint16_t)buffer[4] << 8) + buffer[5]; 

      sr.m_value1[0] = x; 
      sr.m_value1[1] = y; 

      do(M); 

を使用して

if (m_hidDevice->isOpen()) 
{ 
    QByteArray buffer(m_hidDevice->readOutputBufferSize(), 0); 

    buffer[0] = 16; 
    buffer[1] = 18; 

    uint16_t number = 4096; 
    uint16_t randomValue = qrand() % number; 

    buffer[2] = (char)((randomValue >> 8) & 0x00ff); 
    buffer[3] = (char)(randomValue & 0x00ff); 

    buffer[4] = (char)((2556 >> 8) & 0x00ff); 
    buffer[5] = (char)(2556 & 0x00ff); 

    qDebug() << "------------" << randomValue; 
    qDebug() << "//" << (uint8_t)buffer[2] << "//" << (uint8_t)buffer[3]; 
    qDebug() << "//" << (uint8_t)buffer[4] << "//" << (uint8_t)buffer[5]; 

    m_hidDevice->write(buffer); 

とSTM32F4イムに。

私のデータは* 8であるSTM32F4のxとy上の値が

x = 2083 (as expected) 
y = 0 

次にバッファのサイズは64バイトであるべきたがQtのアプリケーションに出力

​​

あります5 = 40バイト。 なぜ私はバッファ内の値を正しく取得できないのですか?

よろしく、

+0

エラーコード示されていないです。 –

+0

エラーはありません.STM32のバッファに正しい値が含まれていません。 yは9 * 256(左シフト8)+ 252 = 2556でなければなりません。代わりに0 – user217354

+0

と表示されているコードが原因ではありません。レポート記述子を確認してください。おそらくレポートを小さすぎると宣言しました。 –

答えて

0
0x09, 0x01,  // USAGE (Vendor Usage x) --> x = 1,2,3 
0x75, 0x08,  // REPORT_SIZE (8) --> 2^8 = 255 
0x15, 0x00,  // LOGICAL_MINIMUM (0) 
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) 
0x85, 0x02,  // REPORT_ID (n)   --> n must be the report id 
0x95, 0x3f,  // REPORT_COUNT (63)  --> size 
0x91, 0x02  // OUTPUT (Data,Var,Abs) 
関連する問題