C++ 将int转换为字符数组以将其发送给另一个Arduino
所以我的项目是为学校做的,我们基本上在尝试用无线电发射器和接收器将一个整数值从电位计/操纵杆发送到另一个Arduino。使用字符(比如发送我们的名字)一切都很好,但使用整数时一切都会变得一团糟 以下是发送代码:C++ 将int转换为字符数组以将其发送给另一个Arduino,c++,arduino,radio,C++,Arduino,Radio,所以我的项目是为学校做的,我们基本上在尝试用无线电发射器和接收器将一个整数值从电位计/操纵杆发送到另一个Arduino。使用字符(比如发送我们的名字)一切都很好,但使用整数时一切都会变得一团糟 以下是发送代码: #include <RH_ASK.h> #include <SPI.h> #define JOYY A0 #define JOYX A1 RH_ASK rf_driver; int pos_x; int pos_y; void setup() { Se
#include <RH_ASK.h>
#include <SPI.h>
#define JOYY A0
#define JOYX A1
RH_ASK rf_driver;
int pos_x;
int pos_y;
void setup() {
Serial.begin(9600);
rf_driver.init();
pinMode(13, OUTPUT);
pinMode(JOYY, INPUT);
pinMode(JOYX, INPUT);
}
void loop() {
readJoy();
//Serial.println(pos_y);
char *msg = (char*)pos_y;
Serial.println(*msg);
rf_driver.send(msg, strlen(msg));
rf_driver.waitPacketSent();
}
void readJoy() {
pos_x = analogRead(JOYX);
pos_y = analogRead(JOYY);
pos_x = map(pos_x, 497, 1023, 1, 173);
pos_y = map(pos_y, 497, 1023, 1, 173);
//Serial.println(pos_y);
//Serial.println(pos_x);
}
我想把整数转换成字符,然后打印出来。没有错误,但查看串行监视器,预期值0实际上是零,向上或向下推动操纵杆只会写入一系列错误⸮, 向后的问号。我试过很多不同的方法,大多数都是一样的
有人能帮我吗?谢谢。您似乎正在尝试打印一个值为
0x00
的字符。这不是ascii字符“0”的值。尝试char*msg=itoa(位置y)代码>“我正在尝试将整数转换为字符”-但您的代码将其转换为指向char
(并且无法获得可用值)的指针。你想要哪一种转换,哪一种是打字错误?即使是真实的短信,如果你在长短信之后再发送短短信,你也会遇到问题。您的角色转换(char*)
不同于将其转换为文本。
#include <RH_ASK.h>
#include <SPI.h>
#include <Servo.h>
int val = 0;
int x = 0;
RH_ASK rf_driver;
Servo myservo;
void setup() {
rf_driver.init();
Serial.begin(9600);
myservo.attach(6);
}
void loop() {
uint8_t buf[10];
uint8_t buflen = sizeof(buf);
if (rf_driver.recv(buf, &buflen))
{
Serial.print("Message: ");
Serial.println((char*)buf);
//myservo.write(buf);
}
}
char *msg = (char*)pos_y;
Serial.println(*msg);