0

mbed LPC1768 の AnalogIn 入力を CAN コントローラーで使用できるようにデジタルに変換するコードについて助けが必要です。私が使用している構文例は次のとおりです。

if(can1.write(CANMessage(1337, &counter, 2))) {
..........
}

ここで、 " counter" は送信されるデータであり、signed int として定義されています (ただし、この例では char として定義されています)。しかし、エラーメッセージが表示され続けます

Error: No instance of constructor "mbed::CANMessage::CANMessage" matches the argument list in "project_test.cpp"

コントローラの CANMessage 構文は次のとおりです。

CANMessage(int _id, const char *_data, char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard) {

  len    = _len & 0xF;
  type   = _type;
  format = _format;
  id     = _id;
  memcpy(data, _data, _len);
}

コントローラーの構文とその適用方法が本当にわかりません。説明の助けをいただければ幸いです。ありがとう

4

1 に答える 1

0

CANMessage はデータ パラメータとして char* のみを受け入れるため、次のように、signed int 値 (4 バイト) を unsigned char に変換できます。

unsigned char buf[0x8];
buf[0]=value & 0x000000ff;
buf[1]=(value >> 8)  & 0x000000ff;
buf[2]=(value >> 16) & 0x000000ff;
buf[3]=(value >> 24) & 0x000000ff;

その後

if (can1.write(CANMessage(1337, &buf, 8))) {
..........
}
于 2014-07-05T02:00:29.697 に答える