DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
1123
Tıklama
0
Öne Çıkarma
Can Bus a veri gönderme (String to byte)
K
6 yıl (116 mesaj)
Çavuş
Konu Sahibi

Merhaba

Can Bus shield ile vei göndermeye çalışıyorum. Şöyle bir örnek kod var:

quote:

byte data[8] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};

void loop()
{
// send data: ID = 0x100, Standard CAN Frame, Data length = 8 bytes, 'data' = array of data bytes to send
byte sndStat = CAN0.sendMsgBuf(0x100, 0, 8, data);
if(sndStat == CAN_OK){
Serial.println("Message Sent Successfully!");
} else {
Serial.println("Error Sending Message...");
}
delay(100); // send data per 100ms
}


bu koddaki byte data değişkenini Run time da tanımlamak istiyorum. Fakat gidecek datanın boyutu her zaman farklı olabiliyor.
Bazen 3 byte bazen 8 byte oluyor.

Elimdeki data şu şekilde :

quote:


0x548 3 0x01 0x00 0x00

Buradaki 0x548 değeri id ,
3 rakamı byte uzunluğu
0x01 0x00 0x00 değeri gidecek olan byte bilgisi

bu koddaki 0x01 0x00 0x00 string değerini nasıl byte a çevirip gönderebilirim.

Arduino da 0x01 0x00 0x00 string değerini nasıl şu şekilde convert edebilirim:
byte data[3] = {0x01, 0x00, 0x00};
Burada 3 olan byte uzunluğunu da run time da ayarlamam geekiyor.

Ben elimdeki string veriyi strtok ile parse ediyorum.
ilk veri olan 0x548 string değerini de unsigned long a çevirmem gerekiyor.
Bu işlem için atol komutu yeterlimidir?

Yardım ve tavsiyeleriniz için şimdiden teşekkürler.