سلام
من از دستور serial.print استفاده می کنم ولی وقتی میخوام محتویات یک متغییر مثل byte f=0x0f; رو با دستور serial.print(f,Hex) ارسال کنم تو پورت فقط f ظاهر می شه و صفرش حذف میشه
کسی میتونه کمک کنه
نمایش نسخه قابل چاپ
سلام
من از دستور serial.print استفاده می کنم ولی وقتی میخوام محتویات یک متغییر مثل byte f=0x0f; رو با دستور serial.print(f,Hex) ارسال کنم تو پورت فقط f ظاهر می شه و صفرش حذف میشه
کسی میتونه کمک کنه
از این کد استفاده کن :
کد:void setup()
{
Serial.begin(9600);
Serial.print("Setup: Examples of PrintHex usage\n\n");
}
void loop()
{
uint8_t ByteData[5]={0x01, 0x0F, 0x10, 0x11, 0xFF};
Serial.print("With uint8_t array: "); PrintHex8(ByteData,5); Serial.print("\n");
uint8_t ByteDatum=0x01;
Serial.print("With uint8_t scalar: "); PrintHex8(&ByteDatum,1); Serial.print("\n");
uint16_t Shorts[5]={0x0001, 0x00FF, 0x0100, 0xAAAA, 0xFFFF};
Serial.print("With uint16_t array: "); PrintHex16(Shorts,5); Serial.print("\n");
Serial.print("==========================================\n");
delay(10000);
}
void PrintHex8(uint8_t *data, uint8_t length) // prints 8-bit data in hex with leading zeroes
{
char tmp[16];
for (int i=0; i<length; i++) {
sprintf(tmp, "0x%.2X",data[i]);
Serial.print(tmp); Serial.print(" ");
}
}
void PrintHex16(uint16_t *data, uint8_t length) // prints 16-bit data in hex with leading zeroes
{
char tmp[16];
for (int i=0; i<length; i++)
{
sprintf(tmp, "0x%.4X",data[i]);
Serial.print(tmp); Serial.print(" ");
}
}
سلام
هنوز کدتون رو تستش نکردم ولی مشکل کد من چیه که اون قسمتش حذف میشه؟
از جوابتون ممنونم
سلام
ممنون این قسمت حل شد ولی یه مشکل دیگه پیدا شده
بعد از اینکه دیتا به پورت سریال ارسال میشه این دیتا رو با یک سخت افزار RS232 می خونم و وقتی دیتا ارسالی توسط اردوینو به طور مثال(0Xff) تو ی کامپیوتر 46 دریافت میشه ولی توی Port monitor خود اردوینو همون 0Xff) نشون میده؟